我正在创建一个自定义的View
类,使用从.ttf
资产文件加载的自定义字体显示文本,该字体的基本外观是衬线字体,字体文件中的TrueType属性表明它是衬线字体。然而,对于字体中没有的字符,Android会回退到无衬线字体(看起来像是Roboto或Noto,取决于Android版本)。
有没有一种方法可以控制这个行为,使得Android布局引擎回退到衬线字体?(比如可能传递给Paint#setFontFeatureSettings()
的一些神奇字符串,或者在Paint
中指定一组字体堆栈的方式?)
任何解决方案都必须在应用程序分发时起作用,因此不能玩弄Android的系统配置文件。此外,我知道this question(四年后仍未得到答案),但我的问题有点不同,尽管两个问题的解决方案可能是相同的。
FontFamily
类似乎在灰色列表中,因此即使通过反射也无法访问。(请参见https://developer.android.com/about/versions/pie/restrictions-non-sdk-interfaces)。 - Ted HoppParcelFileDescriptor
来复制一个FileDescriptor
,但没有一个公共方法来采用它。这是从一开始就存在于ParcelFileDescriptor
中的功能,但至今仍然隐藏着。Android充满了这种荒谬行为。 - j__m