| <!-- |
| |============================================================================== |
| | OVERVIEW |
| | The font configuration files specify the local fonts available to Cobalt. |
| | They come in two flavors: |
| | 1. A required configuration file that Cobalt provides; it is loaded first |
| | and specifies the superset of all fonts that can be included within the |
| | Cobalt font package. |
| | 2. An optional configuration file that porters provide; it is loaded second |
| | and specifies the system fonts available for use. |
| | |
| | There are two types of font families that the configurations can define: |
| | named families and fallback families. |
| |============================================================================== |
| | NAMED FAMILIES |
| | Named families are families that can be retrieved by name during font |
| | matching. Providing a family with the optional "name" attribute makes it a |
| | named family. |
| | |
| | Additionally, the alias tag can be used when more than one name needs to be |
| | mapped to the same same family. The alias's "name" attribute specifies an |
| | alternate name for the family and its "to" attribute specifies the specific |
| | family that it maps to. There is no limit to the number of aliases that can |
| | map to the same family. However, it is important to note that duplicate names |
| | are not allowed between aliases and families; they must all be unique. |
| | |
| | As an example, see the alias mapping "fantasy" to "serif" below. Because of |
| | the alias, whenever the font-family "fantasy" is encountered, the "serif" |
| | family is returned. |
| | |
| | System fonts shouldn't duplicate any family, alias, or font names contained |
| | within Cobalt's font configuration, unless the corresponding font files are |
| | stripped from Cobalt's font package. |
| | |
| | For example: if any of Cobalt's "sans-serif" font files are included in the |
| | selected Cobalt font package, then the system font configuration cannot |
| | contain a family named "sans-serif"; however, if Cobalt's "sans-serif" font |
| | files are entirely stripped from the package, then the system may provide its |
| | own "sans-serif" family without issues. |
| |============================================================================== |
| | FALLBACK FAMILIES |
| | Fallback families are used when none of the named families within a |
| | "font-family" property are found to support a character. When this occurs, |
| | Cobalt searches the fallback families for a font that supports the character. |
| | |
| | Families are included as fallback families if one of two conditions are met: |
| | 1. They do not have a "name" attribute. |
| | 2. They have a "fallback_priority" attribute. |
| | This allows named families to also be fallback families when they are |
| | explicitly given a fallback priority. |
| | |
| | When the optional family attribute "fallback_priority" is included, then its |
| | value, which is an integer, dictates the fallback priority of the family. |
| | When it is not present, then the family is given the default priority of 0. |
| | |
| | Fallback families are chosen based on a match: full BCP-47 language tag |
| | including script, then just language with no script, and then all fonts are |
| | considered regardless of language. Within each of these, the highest priority |
| | family that satisfies the constraints and supports the character is chosen. |
| | If more than one family has the same fallback priority, then order of |
| | appearance within the xml document is the final tiebreaker. |
| | |
| | Cobalt families are loaded before system families and, as a result, always |
| | win the order of appearance fallback tiebreaker with system families. |
| | However, Cobalt fallback families all have the default fallback priority of |
| | 0; if it is desired that a system family be chosen before a Cobalt family |
| | during fallback, then this can be accomplished by giving it a priority |
| | greater than 0. |
| | |
| | The optional family attribute "pages" indicates which character pages are |
| | contained within the family. It is used with character fallback to allow the |
| | system to quickly determine that a character cannot appear in a font without |
| | requiring the full character map to be loaded into memory. Character pages |
| | are zero-indexed, and each page contains 256 characters, so character 1000 |
| | would be contained within page 3. |
| | |
| | For system families, it is safer not including "pages". When "pages" is |
| | included, the correct family may potentially be skipped if there is an error |
| | in the "pages" value. When "pages" is not included the correct fallback |
| | family is always selected. The cost of not including "pages" is that more |
| | full character maps will likely be loaded, which is a one-time performance |
| | hit per family, and results in a small increase in total memory usage. |
| |============================================================================== |
| | FONT ATTRIBUTES |
| | The optional font attributes "weight" and "style" are used to specify the |
| | weight and style that will be used during font matching within a family. |
| | "weight" must be a multiple of 100, between 100 and 900 inclusive; it |
| | defaults to 400 when not defined. |
| | "style" must have a value of either "normal" or "italic"; it defaults to |
| | "normal" when not defined. |
| | |
| | The optional font attributes "font_name" and "postscript_name" are used to |
| | allow the font to be matched during local src lookup with @font-face rules. |
| | https://www.w3.org/TR/css-fonts-3/#descdef-src |
| | |
| | The optional font attribute "disable_synthetic_bolding" prevents the font |
| | from being synthetically bolded. By default synthetic bolding is done when |
| | there is no bold font available and a bold weight (>500) is specified. |
| |============================================================================== |
| --> |
| <familyset version="1"> |
| <!-- first family is default --> |
| <family name="sans-serif"> |
| <font weight="100" style="normal" font_name="Roboto Thin" postscript_name="Roboto-Thin">Roboto-Thin.ttf</font> |
| <font weight="100" style="italic" font_name="Roboto Thin Italic" postscript_name="Roboto-Thin-Italic">Roboto-ThinItalic.ttf</font> |
| <font weight="300" style="normal" font_name="Roboto Light" postscript_name="Roboto-Light">Roboto-Light.ttf</font> |
| <font weight="300" style="italic" font_name="Roboto Light Italic" postscript_name="Roboto-Light-Italic">Roboto-LightItalic.ttf</font> |
| <font weight="400" style="normal" font_name="Roboto Regular" postscript_name="Roboto-Regular">Roboto-Regular.ttf</font> |
| <font weight="400" style="italic" font_name="Roboto Regular Italic" postscript_name="Roboto-Italic">Roboto-Italic.ttf</font> |
| <font weight="500" style="normal" font_name="Roboto Medium" postscript_name="Roboto-Medium">Roboto-Medium.ttf</font> |
| <font weight="500" style="italic" font_name="Roboto Medium Italic" postscript_name="Roboto-Medium-Italic">Roboto-MediumItalic.ttf</font> |
| <font weight="700" style="normal" font_name="Roboto Bold" postscript_name="Roboto-Bold">Roboto-Bold.ttf</font> |
| <font weight="700" style="italic" font_name="Roboto Bold Italic" postscript_name="Roboto-BoldItalic">Roboto-BoldItalic.ttf</font> |
| <font weight="900" style="normal" font_name="Roboto Black" postscript_name="Roboto-Black">Roboto-Black.ttf</font> |
| <font weight="900" style="italic" font_name="Roboto Black Italic" postscript_name="Roboto-Black-Italic">Roboto-BlackItalic.ttf</font> |
| </family> |
| <!-- Note that aliases must come after the fonts they reference. --> |
| <alias name="roboto" to="sans-serif" /> |
| <!-- This is the default font when Roboto is unavailable. --> |
| <family pages="0"> |
| <font weight="400" style="normal">Roboto-Regular-Subsetted.ttf</font> |
| </family> |
| <family name="serif"> |
| <font weight="400" style="normal" font_name="Noto Serif" postscript_name="NotoSerif">NotoSerif-Regular.ttf</font> |
| <font weight="400" style="italic" font_name="Noto Serif Italic" postscript_name="NotoSerif-Italic">NotoSerif-Italic.ttf</font> |
| <font weight="700" style="normal" font_name="Noto Serif Bold" postscript_name="NotoSerif-Bold">NotoSerif-Bold.ttf</font> |
| <font weight="700" style="italic" font_name="Noto Serif Bold Italic" postscript_name="NotoSerif-BoldItalic">NotoSerif-BoldItalic.ttf</font> |
| </family> |
| <alias name="fantasy" to="serif" /> |
| <family name="monospace"> |
| <font weight="400" style="normal" font_name="Droid Sans Mono" postscript_name="DroidSansMono">DroidSansMono.ttf</font> |
| </family> |
| <alias name="sans-serif-monospace" to="monospace" /> |
| <family name="serif-monospace"> |
| <font weight="400" style="normal" font_name="Cutive Mono" postscript_name="CutiveMono-Regular">CutiveMono.ttf</font> |
| </family> |
| <family name="casual"> |
| <font weight="400" style="normal" font_name="Coming Soon" postscript_name="ComingSoon">ComingSoon.ttf</font> |
| </family> |
| <family name="cursive"> |
| <font weight="400" style="normal" font_name="Dancing Script" postscript_name="DancingScript">DancingScript-Regular.ttf</font> |
| <font weight="700" style="normal" font_name="Dancing Script Bold" postscript_name="DancingScript-Bold">DancingScript-Bold.ttf</font> |
| </family> |
| <family name="sans-serif-smallcaps"> |
| <font weight="400" style="normal" font_name="Carrois Gothic SC" postscript_name="CarroisGothicSC-Regular">CarroisGothicSC-Regular.ttf</font> |
| </family> |
| <!-- fallback fonts --> |
| <!-- "Noto Naskh Arabic UI" is given a fallback priority so that, in spite |
| of having a name, it will still be included as a fallback font. |
| --> |
| <family fallback_priority="0" name="Noto Naskh Arabic UI" pages="0,6-8,32,37,46,251-254"> |
| <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font> |
| </family> |
| <family pages="0,18-19,45,171,254"> |
| <font weight="400" style="normal">NotoSansEthiopic-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansEthiopic-Bold.ttf</font> |
| </family> |
| <family pages="0,5,32,37,251,254"> |
| <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font> |
| </family> |
| <family pages="0,2-3,14,32,37,254"> |
| <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font> |
| </family> |
| <family pages="0,5,251,254"> |
| <font weight="400" style="normal">NotoSansArmenian-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansArmenian-Bold.ttf</font> |
| </family> |
| <family pages="0,5,16,45,254"> |
| <font weight="400" style="normal">NotoSansGeorgian-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansGeorgian-Bold.ttf</font> |
| </family> |
| <family pages="0,2,9,28,32,34,37,168,254"> |
| <font weight="400" style="normal">NotoSansDevanagariUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansDevanagariUI-Bold.ttf</font> |
| </family> |
| <!-- Gujarati should come after Devanagari --> |
| <family pages="0,9-10,32,34,37,168,254"> |
| <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font> |
| </family> |
| <!-- Gurmukhi should come after Devanagari --> |
| <family pages="0,9-10,32,34,37-38,168,254"> |
| <font weight="400" style="normal">NotoSansGurmukhiUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansGurmukhiUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,11,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansTamilUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansTamilUI-Bold.ttf</font> |
| </family> |
| <family pages="0,3,9,13,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansMalayalamUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansMalayalamUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansBengaliUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansBengaliUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,12,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansTeluguUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansTeluguUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,12,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansKannadaUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansKannadaUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,11,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font> |
| </family> |
| <family pages="0,9,13,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansSinhala-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansSinhala-Bold.ttf</font> |
| </family> |
| <family pages="0,23,25,32,37"> |
| <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font> |
| </family> |
| <family pages="0,3,14,32,37"> |
| <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font> |
| </family> |
| <family pages="0,16,32,37,169-170,254"> |
| <font weight="400" style="normal">NotoSansMyanmarUI-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansMyanmarUI-Bold.ttf</font> |
| </family> |
| <family pages="0,6-7,32,37,253-254"> |
| <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansThaana-Bold.ttf</font> |
| </family> |
| <family pages="0,3,170"> |
| <font weight="400" style="normal">NotoSansCham-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansCham-Bold.ttf</font> |
| </family> |
| <family pages="0,27,32,37,254"> |
| <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font> |
| </family> |
| <family pages="0,166,254,360-362"> |
| <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font> |
| </family> |
| <family pages="0,27,254"> |
| <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font> |
| </family> |
| <family pages="0,26,32,37,169,254"> |
| <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font> |
| </family> |
| <family pages="0,23,254"> |
| <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font> |
| </family> |
| <family pages="0-3,20-22,24,254"> |
| <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font> |
| </family> |
| <family pages="0,19,254"> |
| <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font> |
| </family> |
| <family pages="0,3,29,37,44,254"> |
| <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font> |
| </family> |
| <family pages="0,44,254"> |
| <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font> |
| </family> |
| <family pages="0,23,254"> |
| <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font> |
| </family> |
| <family pages="0,32,37,169,254"> |
| <font weight="400" style="normal">NotoSansJavanese-Regular.ttf</font> |
| </family> |
| <family pages="0,169,254"> |
| <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font> |
| </family> |
| <family pages="0,28,37,254"> |
| <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font> |
| </family> |
| <family pages="0,9,25,254"> |
| <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font> |
| </family> |
| <family pages="0,2,164,254"> |
| <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font> |
| </family> |
| <family pages="0,6,8,254"> |
| <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font> |
| </family> |
| <family pages="0,170-171,254"> |
| <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font> |
| </family> |
| <family pages="0,25,254"> |
| <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font> |
| </family> |
| <family pages="0,6-7,32,46,253-254"> |
| <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font> |
| </family> |
| <family pages="0,28,254"> |
| <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font> |
| </family> |
| <family pages="0,169,254"> |
| <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font> |
| </family> |
| <family pages="0,32,37,168,254"> |
| <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font> |
| </family> |
| <family pages="0,27-28,254"> |
| <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font> |
| </family> |
| <family pages="0,9,32,37,168,254"> |
| <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font> |
| </family> |
| <family pages="0,3,6-7,32,34,37-38,254"> |
| <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font> |
| </family> |
| <family pages="0,23,254"> |
| <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font> |
| </family> |
| <family pages="0,26,32,34,37,254"> |
| <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font> |
| </family> |
| <family pages="0,32,37,167,170,254"> |
| <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font> |
| </family> |
| <family pages="0,15,32,37,254"> |
| <font weight="400" style="normal">NotoSansTibetan-Regular.ttf</font> |
| <font weight="700" style="normal">NotoSansTibetan-Bold.ttf</font> |
| </family> |
| <family pages="0,3,32,45,254"> |
| <font weight="400" style="normal">NotoSansTifinagh-Regular.ttf</font> |
| </family> |
| <family pages="0,165-166,254"> |
| <font weight="400" style="normal">NotoSansVai-Regular.ttf</font> |
| </family> |
| <family pages="0,48,160-164,254-255"> |
| <font weight="400" style="normal">NotoSansYi-Regular.ttf</font> |
| </family> |
| <family pages="32-43,497-498"> |
| <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font> |
| </family> |
| <family lang="zh-Hans" pages="0-4,17,30,32-39,41,43,46-159,169,172-215,249-251,254-255,497-498,512-658,660-682,685,687,689,691-696,698-702,704-718,760-761"> |
| <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font> |
| </family> |
| <family lang="zh-Hant" pages="0-4,17,30,32-39,41,43,46-159,169,172-215,249-251,254-255,497-498,512-658,660-682,685,687,689,691-696,698-702,704-718,760-761"> |
| <font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font> |
| </family> |
| <family lang="ja" pages="0-4,17,30,32-39,41,43,46-159,169,172-215,249-251,254-255,497-498,512-658,660-682,685,687,689,691-696,698-702,704-718,760-761"> |
| <font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font> |
| </family> |
| <family lang="ko" pages="0-4,17,30,32-39,41,43,46-159,169,172-215,249-251,254-255,497-498,512-658,660-682,685,687,689,691-696,698-702,704-718,760-761"> |
| <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> |
| </family> |
| <family lang="ja" pages="0,32,34-35,46-159,249-250,254-255,498,512-523,525-527,530-538,540-543,545-547,550,552,554-559,561,563-568,570,572-573,575-579,582-584,586-594,596-608,610-612,614-618,620,622-625,627-628,630-631,633-638,640,642-646,649-655,658,660-664,666,669-678,681,695-696,760-761"> |
| <font weight="400" style="normal">NotoSansJP-Regular.otf</font> |
| </family> |
| <family pages="0,32-33,35-39,41,43,48,50,254,496-502,4068,4072"> |
| <font weight="400" style="normal">NotoEmoji-Regular.ttf</font> |
| </family> |
| <family pages="35,37-39,43,496,498"> |
| <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font> |
| </family> |
| <!-- |
| Synthetic bolding is explicitly disabled for DroidSansFallback. The |
| quality of its synthetically bolded glyphs are not good enough to meet |
| Cobalt's standards. |
| --> |
| <family pages="0,14,17,32,48-51,77-159,172-215,249-250,254-255,260"> |
| <font weight="400" style="normal" disable_synthetic_bolding="true">DroidSansFallback.ttf</font> |
| </family> |
| <!-- |
| Tai Le and Mongolian are intentionally kept last, to make sure they don't override |
| the East Asian punctuation for Chinese. |
| --> |
| <family pages="0,3,16,25,48,254"> |
| <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font> |
| </family> |
| <family pages="0,24,32,36-37,48,254"> |
| <font weight="400" style="normal" >NotoSansMongolian-Regular.ttf</font> |
| </family> |
| </familyset> |