Sie können jetzt Runtime Resource Overlays (RROs) verwenden, um Schriftarten zu ändern. Indem Sie benutzerdefinierte Schriftarten hinzufügen, um ein Schriftartenpaket zu erstellen, können Sie Schriftarten in Designs verwenden und RROs verwenden, um die Anpassungen anzuwenden.
Erledigen Sie diese Aufgaben:
- Erstellen Sie ein Schriftartenpaket
- Erstellen Sie ein Geräte-Overlay-Paket
- Verwenden Sie die hinzugefügte Systemschriftfamilie
Eine Beispieldateistruktur und Beispieldateien werden in „custom-fonts.zip“ bereitgestellt. Laden Sie diese Datei herunter und extrahieren Sie sie dann lokal für Ihren eigenen Gebrauch.
Erstellen Sie ein Schriftartenpaket
So erstellen Sie ein Schriftartenpaket:
- Fügen Sie alle Schriftarten-
ttf
Dateien zum Schriftartenpaket in dervendor
hinzu. Zum Beispiel:vendor/[oem]/fonts/[oem]-sans/
- Erstellen Sie die
Android.mk
Datei für das Schriftartenpaket. Zum Beispiel:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- Stellen Sie sicher, dass das Modul in der
product
im Ordneretc
installiert wird. Stellen Sie dazu sicher, dass das Modul über die folgenden Flags verfügt:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
Der oben bereitgestellte Beispielcode veranschaulicht eine vollständige Definition eines Schriftartenpaketmoduls.
- Erstellen Sie eine Datei mit dem Namen
fonts.mk
für das Schriftartenpaket und fügen Sie dann die Schriftartenttf
-Dateien zuPRODUCT_PACKAGES
hinzu. Zum Beispiel:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
Zum Beispiel:
PRODUCT_PACKAGES := \ [font name].ttf \
Erstellen Sie ein Geräte-Overlay-Paket
- 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 die Make-Dateien aller Schriftpakete aufruft. Zum 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 Tag
fonts-modification
sein. Fügen Sie Schriftfamilien für jedes Schriftpaket unter diesem Element hinzu. Fügen Sie außerdemcustomizationType="new-named-family"
zu jeder Schriftfamilie hinzu und stellen Sie sicher, dass jede über einname
verfügt. Dieser Name wird später für den Zugriff auf die Schriftfamilie verwendet. Diese Datei muss dem zuvor inAndroid.mk
definierten Modulfonts_customizations.xml
hinzugefügt werden.Das oben bereitgestellte Beispiel enthält eine gültige Datei
fonts_customization.xml
. - Erstellen Sie
fonts.mk
. Zum 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 Schriftartenpakete auf.
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- Fügen Sie das Schriftartmodul zum Build unter
PRODUCT_PACKAGES
hinzu und erstellen Sie es dann neu. Die Schriftarten werden auf dem System installiert. - Stellen Sie sicher, dass sich die
ttf
Schriftartendateien im Ordner/product/fonts
auf dem Gerät befinden. - Stellen Sie sicher, dass sich
fonts_customization.xml
in/product/etc/
auf dem Gerät befindet.
Verwenden Sie die neue Systemschriftfamilie
So verwenden Sie die neue Systemschriftfamilie:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>