Sie können jetzt Laufzeitressourcen-Overlays (RROs) verwenden, um Schriftarten zu ändern. Wenn Sie benutzerdefinierte Schriftarten hinzufügen, um ein Schriftpaket zu erstellen, können Sie Schriftarten in Themen verwenden und die Anpassungen mithilfe von RROs anwenden.
Führen Sie die folgenden Schritte aus:
- Schriftpaket erstellen
- Geräte-Overlay-Paket erstellen
- Die hinzugefügte Systemschriftartfamilie verwenden
Eine Beispieldateistruktur und Beispieldateien finden Sie in custom-fonts.zip. Laden Sie diese Datei herunter und extrahieren Sie sie lokal für Ihre eigene Verwendung.
Schriftpaket erstellen
So erstellen Sie ein Schriftpaket:
- Fügen Sie dem Schriftpaket in der Partition
vendor
alle Schriftdateienttf
hinzu. Beispiel:vendor/[oem]/fonts/[oem]-sans/
- Erstellen Sie die Datei
Android.mk
für das Schriftpaket. Beispiel:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- Das Modul muss in der Partition
product
im Ordneretc
installiert werden. Prüfen Sie dazu, ob das Modul die folgenden Flags enthält:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
Der obige Beispielcode zeigt eine vollständige Definition eines Schriftpaketmoduls.
- Erstellen Sie eine Datei mit dem Namen
fonts.mk
für das Schriftpaket und fügen Sie dann die Schriftdateienttf
zuPRODUCT_PACKAGES
hinzu. Beispiel:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
Beispiel:
PRODUCT_PACKAGES := \ [font name].ttf \
Geräte-Overlay-Paket erstellen
- Erstellen Sie ein Modul namens
fonts_customization.xml
, das dem Build hinzugefügt werden soll. Dieses Modul verweist auf die Dateifonts_customization.xml
, die die Schriftfamilien enthält, und ruft die Make-Dateien aller Schriftpakete auf. Beispiel:vendor/[oem]/[device]_overlay/fonts/Android.mk
- Erstellen Sie die Schriftfamilien:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
Die Stammebene der Datei muss ein
fonts-modification
-Tag sein. Fügen Sie unter diesem Element Schriftfamilien für jedes Schriftpaket hinzu. Fügen Sie außerdem jeder SchriftfamiliecustomizationType="new-named-family"
hinzu und achten Sie darauf, dass jede einname
-Attribut hat. Dieser Name wird später zum Zugriff auf die Schriftfamilie verwendet. Diese Datei muss demfonts_customizations.xml
-Modul hinzugefügt werden, das zuvor inAndroid.mk
definiert wurde.Das oben bereitgestellte Beispiel enthält eine gültige
fonts_customization.xml
-Datei. - Erstellen Sie
fonts.mk
. Beispiel:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- Fügen Sie
fonts_customization.xml
unter dem FlagPRODUCT_PACKAGES
hinzu. - Rufen Sie jedes der zuvor erstellten Schriftpakete auf.
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- Fügen Sie das Schriftmodul unter
PRODUCT_PACKAGES
zum Build hinzu und erstellen Sie ihn dann neu. Die Schriftarten werden auf dem System installiert. - Prüfen Sie, ob sich die
ttf
-Schriftdateien auf dem Gerät im Ordner/product/fonts
befinden. - Prüfen Sie, ob
fonts_customization.xml
auf dem Gerät in/product/etc/
enthalten ist.
Neue Systemschriftfamilie verwenden
So verwenden Sie die neue Systemschriftfamilie:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>