2016-08-12 1 views
13

Ich erstelle eine benutzerdefinierte View Klasse, die Text unter Verwendung eines StaticLayout mit einem benutzerdefinierten Schriftbild aus einer .ttf Asset-Datei geladen zeigt. Das grundlegende Aussehen der Schriftart ist eine Serif-Schriftart und die TrueType-Eigenschaften in der Schriftartdatei zeigen an, dass es serif ist. Nichtsdestoweniger greift Android für Zeichen, die nicht in der Schriftart sind, auf eine serifenlose Schrift zurück (es sieht wie Roboto oder Noto aus, abhängig von der Android-Version).Gibt es eine Möglichkeit, in einem StaticLayout auf Typeface.SERIF zuzugreifen?

Gibt es eine Möglichkeit, dies zu steuern, so dass die Android-Layout-Engine auf eine Serifenschrift zurückfällt? (Wie vielleicht einiger magischer String Paint#setFontFeatureSettings(), passiert, oder vielleicht einen Weg, um einen Stapel von Schriften zur Verwendung angeben, in einem Paint?)

Jede Lösung würde arbeiten, wenn die Anwendung verteilt wird, so Spiele mit Android-System spielen Konfigurationsdateien ist keine Option. Ich kenne auch this question (das ist nach vier Jahren immer noch unbeantwortet), aber mein Problem ist ein bisschen anders, obwohl die Lösung für beide Probleme sehr wohl die gleiche sein könnte.

Antwort

0

Ab Lollipop gibt es eine versteckte Klasse namens FontFamily und eine versteckte Methode namens Typeface.createFromFamilies. Wenn Sie sehr vorsichtig sind, können Sie dieses Zeug wahrscheinlich durch Reflexion oder andere Tricks verwenden, aber seien Sie bereit, auf die öffentliche API zurückzugreifen.

Verwandte Themen