我使用自定义字体(准确地说:我使用自定义字体)绘制(画布)文本。但是,这种字体不支持很多字符,因此一些(不受支持的)字符看起来不同。现在我问自己以下几个问题:
发布于 2015-11-25 09:35:12
我钻研了Android代码,并想发布我的发现:
Typeface.class实例是使用Typeface.class的静态create-方法创建的(createFromAsset/createFromFile/create/等)。然后,实例包含一个字体列表(不可修改的List<Font>
)。这个列表的第一个元素是主字体(指定的),其他元素(索引:1-(大小-1))是默认字体,从FontLoader.class (getFallBackFonts()
)中检索。
除其他外,Canvas.class Typeface.class Paint.class/drawText()
使用一个Typeface.class实例来绘制文本(测量字符/绘制/等等)。如果可能的话,他们尝试使用主字体(Typeface.mFonts[0]
)。如果在主字体中找不到字符,则他们尝试使用备用字体(Typeface.mFonts[1]
-Typeface.mFonts[size-1]
)来测量和绘制字符。
结论
如果要使用自定义字体,可以使用Typeface.class实例。如果您的自定义字体不支持要绘制的特定字符(您在文本中使用的/that),则系统将尝试使用回退字体。这些回退字体由FontLoader.class (从system )从系统加载。
https://stackoverflow.com/questions/33899929
复制相似问题