|
HikoGUI
A low latency retained GUI
|
When the application is started a global FontBook is instanced. During the FontBook's instantiation it will fast-parse each TrueType font in the operating system's font folder.
During the fast-parse the 'name', 'OS/2' and optionally other tables are read and then the font files are closed and memory is freed. This fast-parse is designed to be very fast to reduce impact on application startup time.
The following information gleamed during the fast-parse:
Each font family is assigned a FamilyID. Each font is assigned a FontID.
There is a list of fallback font families for well known fonts, in case certain font families are not available on the system.
Each font will be assigned a list of fallback fonts for missing glyph lookup. Priority is given for fonts that start with the same font family name. For example "Arial Arabic" will be prioritized when the current font is "Arial"
A FontVariant consists of a FontWeight+serif-flag. This allows a user to select a font family to draw a text with and emphesize fragments of the text using italic and bold.
There are a total of maximum 20 FontVariants for each FontFamilyID.
Selecting a font to render a text is done in several steps:
Sub-styles can be selected inline in the text using the following Unicode code-points:
| Code | Name | Common Style | Description |
|---|---|---|---|
| U+FDD0 | Regular | Regular | This is the default regular text |
| U+FDD1 | Emphasis | Italic | For different but not more or less imporant than regular text. |
| U+FDD2 | Strong | Bold or red | For important text like warnings. |
| U+FDD3 | Light | Light or gray | For less important text, like long explanations. |
| U+FDD4 | Code | Monospaced | For data, or examples of data. |
| U+FDD5 | Link | Underlined and blue | For clickable links. |
These code-points are noncharacter code-point and are used internally of the TTauri library.