The information in this table is available(and up-to-date) at https://fonts.serenityos.net/.
Family | Default for | Size | Format | Serif | Monospace | Regular | Italic | Bold Italic | Bold | Black | Author |
---|---|---|---|---|---|---|---|---|---|---|---|
Ataraxia | 10 | .font | ✔️ | ✔️ | ✔️ | @djwisdom | |||||
Cathode | 10 | .font | ✔️ | ✔️ | @electrikmilk | ||||||
CJK Biáng | 36 | .font | ? | ✔️ | ✔️ | @Xexxa | |||||
Csilla | text editor, .txt | 10/12 | .font | ✔️ | ✔️ | ✔️ | |||||
Katica | system, .html | 10/12 | .font | ✔️ | ✔️ | ||||||
Liberation Serif | 8-36 | .ttf | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | @mattco98 | |||
Liza | 10/24/36 | .font | ✔️ | ✔️ | ✔️ | ✔️ | |||||
Lucidity | 12 | .font | ✔️ | ✔️ | @djwisdom | ||||||
Marieta | 24/36 | .font | ✔️ | ✔️ | @thankyouverycool | ||||||
Pabbleton | 14 | .font | ✔️ | ✔️ | |||||||
Roman | 10 | .font | ✔️ | ✔️ | @electrikmilk | ||||||
Satori | 10 | .font | ✔️ | ✔️ | @djwisdom | ||||||
Satori Mono | 10 | .font | ✔️ | ✔️ | ✔️ | @djwisdom | |||||
SerenitySans | 8-36 | .ttf | ✔️ | @sunverwerth | |||||||
Serifina | 10 | .font | ✔️ | ✔️ | @thankyouverycool | ||||||
Source | 10 | .font | ✔️ | ✔️ | @electrikmilk | ||||||
Tiny | 6 | .font | ✔️ | @Xexxa |
Mandatory glyphs Always include character FFFD � (https://www.unicode.org/charts/PDF/UFFF0.pdf), it’s the fallback character if a glyph is missing.
Filename: Give the font a filename in the following format NameStylePresentationSize.ext (examples: KaticaRegular10.font)
Metadata: metadata.family contains the fonts “name”, for example “Katica”. metadata.name contains the font “name” and style, for example “Katica Regular”.
CJK: If the font is primarly or exclusively for CJK characters then prefix metadata.family and metadata.name with CJK and space. “CJK Name” & “CJK Name Style”
Constructed/artificial scripts: If you want to encode for example Klingon or Tengwar, then follow the assignments of UCSUR1
If you want to add glyphs to Unicodes PUA(private use area) for use in SerenityOS, pick codepoints within the range 10CA00-10CFFF.
Currently reserved ranges:
System fonts are located in Base/res/fonts/
(repo) and /res/fonts
(running SerenityOS)
Before making a PR / Merge conflicts: You can copy multiple glyphs in font editor(shift click to select a range), it is recommended that you have the habit of copying the glyphs you added/modified to a fresh pull of the font-file and look for conflicting pull request before creating a PR. There has been a few cases of merge conflicts and outdated font-files removing glyphs.
Commit: Always include the codepoints for the glyphs you added or modified. Modified glyphs should also include how/why they were modified.
PR: A screenshot of what you added/edited makes it easier for maintainers to review your fantastic work.
Katica: currently glyphs with multiple variants in Katica uses simplefied Chinese, if that is not available it uses suitable Chinese with a G*
-code2.
CJK Biáng: currently glyphs with multiple variants in CJK Biáng uses traditional Chinese.
A good sample text for testing (especially rarer) scripts is the Universal Declaration of Human Rights (UDHR), there are 487 translations at https://unicode.org/udhr/ (unicode), the sample could then if needed be compared to one of the 530 translations available at https://www.ohchr.org/EN/UDHR/Pages/SearchByLang.aspx (pdf, html, sound).
Emojis are located in Base/res/emoji/
(repo) and /res/emoji
(running SerenityOS)
New emoji should be added to emoji.txt. New emojis are no longer required to be added to emoji.txt. This is automatically handled by a script during CI run.
Emoji has the filename U+{hex code}.png
, eg. U+1F332.png
, emoji with multiple codepoints is separated with underscore, eg. U+1F1EE_U+1F1F8.png
Emoji presentation selectors(U+FE0F) has to be excluded from the filename of emoji with multiple codepoints #14917 Polar Bear 🐻❄️ with the codepoints U+1F43B U+200D U+2744 U+FE0F
gets the filename U+1F43B_U+200D_U+2744.png
The size of emoji is 7 px width and always 10 px height. Some kind of agreement was reached in #fonts to allow the width to be 7px, 8px, 9px, 10px when needed for complex emoji but the goal is to keep it 7x10 if possible.
Emoji shall be optimized to remove unneccesarry meta-data, optipng -strip all
is recommended. (This does on occation render the emoji unvieweble in SerenityOS so it might be a good idea to check before making a PR!) (Fixed in https://github.com/SerenityOS/serenity/pull/14910)
Emojis are system-wide, no matter what font is used.
There are currently issues with glyphs in the .font taking precedent over emojis and with Emoji picker(not all emojis showing).
The commit message when adding emoji should contain the glyph, name and codepoint. You can automatically generate these with Meta/generate-emoji-txt.sh Build/i686/UCD/emoji-test.txt /folder/to/the/emoji/you/have/made /the/file/you/want/the/list/of/emoji/in/the/right/format/commit.txt
Flag emoji: The visible part should, unlike the other emoji, be 10x7 if possible with transparant padding on the y-axis. Some flags is more suitable as 9x7, 10x6, etc. Some flexability is allowed.
A 10x7 flag in a 10x10 canvas
Katicabogárfélék is Hungarian for ladybug.