我使用自定义字体绘制(画布)文本(确切地说:我使用自定义字体)。但是,这种字体不支持许多字符,因此一些(不支持的)字符看起来不同。现在我问自己以下问题:
答案 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)从系统加载。