2016-08-12 82 views
13

我正在創建一個自定義View類,該類使用StaticLayout顯示文本,並使用從.ttf資產文件加載的自定義字體。字體的基本外觀是襯線字體,字體文件中的TrueType屬性表示襯線。不過,對於不在字體中的字符,Android可以回退爲無襯線字體(看起來像Roboto或Noto,取決於Android版本)。有沒有辦法在StaticLayout中回退到Typeface.SERIF?

有沒有一種方法可以控制這個,以便Android佈局引擎回退到襯線字體? (也許就像一些神奇的字符串傳遞給Paint#setFontFeatureSettings(),或者一個方法來指定在Paint字體使用的堆棧?)

的任何解決方案必須當應用程序是分佈式的,所以玩遊戲與Android的系統工作配置文件不是一個選項。另外,我知道this question(四年後仍然沒有答案),但是我的問題有點不同,儘管這兩個問題的解決方案可能完全相同。

回答

0

從Lollipop開始,有一個名爲FontFamily的隱藏類和一個名爲Typeface.createFromFamilies的隱藏方法。如果你非常小心,你可以通過反射或其他欺騙手段來使用這些東西,但是要準備回退到公共API。

相關問題