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

Ted*_*opp 15 android android-typeface android-paint

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

有没有办法控制这个,以便Android布局引擎回归serif字体?(就像可能会传递一些魔术字符串Paint#setFontFeatureSettings(),或者也许是指定一堆字体用于Paint?)

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

j__*_*__m 0

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