d.android.com 上没有关于字体系列名称的文档。但是,如果您查看 AOSP,默认字体会以android.graphics.*
. FontListParser从(Android 5.0+) 或(Android 4.1)加载默认字体。默认字体在Typeface#init中加载。/system/etc/fonts.xml
/system/etc/system_fonts.xml
这两个 XML 文件有一些文档。第一种字体是默认字体。您可以从设备中提取 /system/etc/fonts.xml。设备制造商或自定义 ROM 可能会更改默认系统字体。
fonts.xml (API 21+)
注意:这是系统字体配置的较新 (L) 版本,支持更丰富的粗细选择。一些应用程序需要旧版本,因此请保持 system_fonts.xml 和 fallback_fonts.xml 与任何更改同步,即使框架只会读取此文件。
所有没有名称的字体都被添加到默认列表中。字体是根据匹配选择的:完整的 BCP-47 语言标签,包括脚本,然后是语言,最后是顺序(第一个包含字形的字体)。
出现顺序也是体重匹配的决胜局。这就是为什么 Roboto 的 900 重量在 700 重量之前的原因 - 当需要 800 重量时,我们更喜欢前者。由于粗体跨度有效地增加了 300 的权重,这确保了 900 是粗体与 500 的权重配对,从而确保了足够的对比度。
system_fonts.xml (API 16-20)
系统字体
此文件列出了默认情况下将用于所有支持的字形的字体系列。每个条目由一个系列、该系列支持的各种名称以及最多四个字体文件组成。字体文件按它们支持的样式顺序列出:常规、粗体、斜体和粗斜体。如果列出的样式少于四种,则列出的其他字体文件将支持没有关联字体文件的样式。
第一个系列也是默认字体,它处理没有指定特定字体名称的字体请求。
系统字体未处理的任何字形都将导致搜索备用字体。默认的备用字体在文件 /system/etc/fallback_fonts.xml 中指定,供应商可能会提供一个可选文件来指定在 /vendor/etc/fallback_fonts.xml 中使用的其他备用字体。
如果您解析 fonts.xml 文件,您可以找到哪个字体系列使用哪种字体(请参见此处):
╔════╦════════════════════════════╦═════════════════════════════╗
║ ║ FONT FAMILY ║ TTF FILE ║
╠════╬════════════════════════════╬═════════════════════════════╣
║ 1 ║ casual ║ ComingSoon.ttf ║
║ 2 ║ cursive ║ DancingScript-Regular.ttf ║
║ 3 ║ monospace ║ DroidSansMono.ttf ║
║ 4 ║ sans-serif ║ Roboto-Regular.ttf ║
║ 5 ║ sans-serif-black ║ Roboto-Black.ttf ║
║ 6 ║ sans-serif-condensed ║ RobotoCondensed-Regular.ttf ║
║ 7 ║ sans-serif-condensed-light ║ RobotoCondensed-Light.ttf ║
║ 8 ║ sans-serif-light ║ Roboto-Light.ttf ║
║ 9 ║ sans-serif-medium ║ Roboto-Medium.ttf ║
║ 10 ║ sans-serif-smallcaps ║ CarroisGothicSC-Regular.ttf ║
║ 11 ║ sans-serif-thin ║ Roboto-Thin.ttf ║
║ 12 ║ serif ║ NotoSerif-Regular.ttf ║
║ 13 ║ serif-monospace ║ CutiveMono.ttf ║
╚════╩════════════════════════════╩═════════════════════════════╝