编辑:通过一些实验,特别是允许用户更改字体的 Galaxy S3,这就是我发现的:
- 使用
Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)
将返回该 CUSTOM 字体,而不是系统默认的无衬线字体(即 Roboto)
- 相反,使用
Typeface.create("sans-serif", Typeface.NORMAL)
(或 BOLD)它会返回 Roboto,而不管用户的字体自定义如何。从下面的列表中,您实际上可以使用上面的“helvetica”、“tahoma”、“verdana”或“arial”来代替“sans-serif”,结果相同。
我发现一个名为system_fonts.xml
似乎确认 Roboto 将用于Typeface.SANS_SERIF
SDK 目录下的任何引用的文档:
平台 > android-14 > 数据 > 字体
<!--
System Fonts
This file lists the font families that will be used by default for all supported glyphs.
Each entry consists of a family, various names that are supported by that family, and
up to four font files. The font files are listed in the order of the styles which they
support: regular, bold, italic and bold-italic. If less than four styles are listed, then
the styles with no associated font file will be supported by the other font files listed.
The first family is also the default font, which handles font request that have not specified
specific font names.
Any glyph that is not handled by the system fonts will cause a search of the fallback fonts.
The default fallback fonts are specified in the file /system/etc/fallback_fonts.xml, and there
is an optional file which may be supplied by vendors to specify other fallback fonts to use
in /vendor/etc/fallback_fonts.xml.
-->
<familyset>
<family>
<nameset>
<name>sans-serif</name>
<name>arial</name>
<name>helvetica</name>
<name>tahoma</name>
<name>verdana</name>
</nameset>
<fileset>
<file>Roboto-Regular.ttf</file>
<file>Roboto-Bold.ttf</file>
<file>Roboto-Italic.ttf</file>
<file>Roboto-BoldItalic.ttf</file>
</fileset>
</family>
由于必须放入供应商字体fallback_fonts.xml
并且系统字体将始终被优先考虑,并且列出的第一个系列是 sans-serif、aria、helvetica、tahoma 或 verdana 别名下的 Roboto,除非我发现否则我认为它是安全的假设 Roboto 将是调用返回的字体Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)
。
我现在仍将保持开放状态,希望得到一个明确的答案,因为我不确定是否允许 OEM 修改 system_fonts.xml。如果是,那么这根本没有帮助。