Android Typeface字体默认/后备

时间:2015-11-24 17:17:50

标签: android fonts

我使用自定义字体绘制(画布)文本(确切地说:我使用自定义字体)。但是,这种字体不支持许多字符,因此一些(不支持的)字符看起来不同。现在我问自己以下问题:

  • 不受支持的字符是什么样的 - 外观是否取决于系统设置/所有设备上的外观是否相同?
  • 不支持的字符使用什么(默认)字体? (不支持的字母与最终支持的字母具有相同的尺寸吗?)

1 个答案:

答案 0 :(得分:5)

我挖掘了Android代码并希望发布我的发现:

Typeface.class 实例是使用 Typeface.class (createFromAsset / createFromFile / create / etc。)的静态create-methods创建的。然后该实例包含一个字体列表(不可修改echo $? > /var/run/shairport.pid)。此列表的第一个元素是主字体(指定),其他元素(索引:1 - (size-1))是从 FontLoader.class 检索的默认字体({{1 }})

其中, Paint.class / Canvas.class List<Font>)使用 Typeface.class 实例绘制文本(测量字符/绘制/等)。他们尽可能使用主要字体(getFallBackFonts())。如果在主要字体中找不到字符,则他们会尝试使用后备字体(drawText() - Typeface.mFonts[0])来衡量和绘制字符。

<强> 结论

如果要使用自定义字体,可以使用Typeface.class实例。如果您的自定义字体不支持您要绘制的某些字符(/您在文本中使用的字符),则系统会尝试使用fallback-fonts。这些后备字体由FontLoader.class(来自system-xml)从系统加载。