有没有办法在StaticLayout中回退到Typeface.SERIF?

时间:2016-08-12 06:54:12

标签: android android-typeface android-paint

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

有没有办法控制它,以便Android布局引擎回归serif字体? (或许可以传递给Paint#setFontFeatureSettings()的一些魔术字符串,或者可能是指定在Paint中使用的字体堆栈的方法?)

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

1 个答案:

答案 0 :(得分:0)

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