我正在创建一个自定义View
类,该类使用StaticLayout
显示文本,其中自定义字体从.ttf
资源文件加载。字体的基本外观是serif字体,字体文件中的TrueType属性表示它是serif。然而,对于不在字体中的字符,Android会回归到无衬线字体(它看起来像Roboto或Noto,具体取决于Android版本)。
有没有办法控制它,以便Android布局引擎回归serif字体? (或许可以传递给Paint#setFontFeatureSettings()
的一些魔术字符串,或者可能是指定在Paint
中使用的字体堆栈的方法?)
任何解决方案都必须在分发应用程序时起作用,因此使用Android系统配置文件玩游戏不是一种选择。另外,我知道this question(四年后仍然没有答案),但我的问题有点不同,尽管两个问题的解决方案可能完全相同。
答案 0 :(得分:0)
从Lollipop开始,有一个名为FontFamily的隐藏类和一个名为Typeface.createFromFamilies的隐藏方法。如果你非常小心,你可以通过反思或其他技巧来使用这些东西,但要准备好回退到公共API。