15

我正在创建一个自定义类,该类使用从资产文件加载的自定义字体View显示文本。字体的基本外观是衬线字体,字体文件中的 TrueType 属性表明它是衬线字体。然而,对于不在字体中的字符,Android 会退回到无衬线字体(它看起来像 Roboto 或 Noto,具体取决于 Android 版本)。StaticLayout.ttf

有没有办法控制这一点,以便 Android 布局引擎回退到衬线字体?(比如可能是一些要传递给的魔术字符串Paint#setFontFeatureSettings(),或者可能是一种指定一堆字体以用于 a 的方法Paint?)

当应用程序分发时,任何解决方案都必须工作,因此使用 Android 的系统配置文件玩游戏不是一种选择。另外,我知道这个问题(四年后仍然没有答案),但我的问题有点不同,尽管这两个问题的解决方案很可能是相同的。

4

1 回答 1

0

在 Lollipop 中,有一个名为FontFamily的隐藏类和一个名为Typeface.createFromFamilies的隐藏方法。如果您非常小心,您可能可以通过反射或其他技巧来使用这些东西,但要准备好回退到公共 API。

于 2016-11-03T07:10:39.763 回答