Ab Android 15 werden variable Schriftarten zur Laufzeit effizienter und mit besserer Granularität gerendert. Mit diesem Update müssen Anbieter neue Konfigurationen für variable Schriftarten zu
font_fallback.xml
hinzufügen, anstatt zu fonts.xml, da fonts.xml eingestellt wird.
Weitere Informationen zu variablen Schriftarten.
Unter Android 11 und niedriger erfordert das Aktualisieren von auf dem Gerät installierten Schriftartendateien in AOSP (in der Partition /system/fonts) oder in den Anbieterpartitionen (in den Partitionen /product/fonts oder /system/fonts) ein Systemupdate vom OEM. Diese Anforderung hat erhebliche Auswirkungen auf die Emoji-Kompatibilität. Unter Android 12 können Sie den Systemdienst FontManager verwenden, um installierte Schriftartendateien zu verwalten und auf dem Gerät installierte Schriftartendateien ohne Systemupdate zu aktualisieren.
Android 12 bietet drei Prozessinteraktionen: FontManagerService, Font Updater und Application.
FontManagerService ist das zentrale Verwaltungssystem auf dem Systemserver.
FontManagerService speichert die neuesten Systemeinstellungen für Schriftarten pro Nutzer.
FontUpdater ist ein austauschbarer Schriftarten-Updater, der durch eine signature|privileged-Berechtigungsprüfung als vertrauenswürdig eingestuft wird. FontUpdater kommuniziert mit FontManagerService, um die aktuellen Systemeinstellungen für Schriftarten abzurufen, zu installieren, zu entfernen oder zu aktualisieren. FontUpdater kann neue Schriftartendateiinhalte über IPC-Mechanismen (Inter-Process Communication) weitergeben. FontManagerService speichert die Inhalte an einem für alle lesbaren Speicherort, z. B. in den Dateien /data/fonts. Dieser Speicher ist geschützt. Er kann von FontManagerService nur und nur über die
SELinux-Richtlinie beschrieben werden.
Wenn die Klasse Application gestartet wird, werden die Systemeinstellungen für Schriftarten als
Argumente der Methode bindApplication übergeben. Anschließend werden die Schriftarteinstellungen
für die Verwendung durch den App-Prozess initialisiert.
Unterstützung für variable Schriftarten
Ab Android 15 werden Konfigurationen für variable Schriftarten
in
font_fallback.xml
im folgenden Format angegeben:
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
In diesem Format hat eine variable Schriftart alle Attribute einer statischen Schriftart mit einem zusätzlichen supportedAxes-Attribut. Ein supportedAxes-Attribut ist eine durch Kommas getrennte Liste der unterstützten Achsentags. Unter Android 15 können nur die Achsen wght und ital angegeben werden.
Wenn das Attribut supportedAxes nicht angegeben ist, funktioniert der Knoten font als statische Schriftart einer einzelnen Instanz einer variablen Schriftart, die mit untergeordneten Elementen vom Typ axis angegeben wird.
Wenn das Attribut supportedAxes angegeben ist, erstellt das System zur Laufzeit dynamisch eine Schriftartinstanz für den angegebenen Wert für Gewicht und Stil.
Entwickler können die android.graphics.fonts.SystemFonts#getAvailableFonts
Java API oder die ASystemFontIterator_open
NDK API verwenden, um eine Liste der auf dem System installierten Schriftartendateien abzurufen. Informationen zu
Entwickler-APIs, die dieses Update unterstützen, finden Sie unter
Verbesserte OpenType Variable Font API
und buildVariableFamily.
Schriftarten anpassen
Einige OEMs installieren oder ersetzen Schriftartendateien in AOSP, um ihre Marken zu präsentieren. Android 12 unterstützt diese Funktion, fügt aber Anforderungen hinzu, um Emoji-Schriftarten auf Geräten auf dem neuesten Stand zu halten. OEMs, die Emoji-Schriftartendateien nicht ändern oder aktualisieren, müssen diese Funktion nicht verwenden.
Google aktualisiert die Schriftartendateien, insbesondere die NotoColorEmoji Dateien über GMS
Core. Ändern oder entfernen Sie daher die Datei NotoColorEmoji.ttf nicht aus der
/system Partition und entfernen Sie sie nicht aus
/frameworks/base/data/fonts/fonts.xml.
Beachten Sie die folgenden drei Möglichkeiten, wie Sie Ihre Schriftarten anpassen können:
- Ersetzen Sie die Datei
NotoColorEmoji.ttfdurch eine Emoji-Schriftart mit OEM-Branding. - Ändern Sie die Datei
NotoColorEmoji.ttffür die Anforderungen Ihres lokalen Markts. - Ersetzen oder ändern Sie andere Schriftartendateien.
Wenn Sie keine Emoji-Schriftarten in AOSP ändern, müssen Sie nichts weiter tun. Wenn Sie Emoji-Schriftarten anpassen möchten, folgen Sie der Anleitung in den folgenden Abschnitten.
NotoColorEmoji.ttf durch Emoji-Schriftarten mit OEM-Branding ersetzen
Wenn Sie die Datei NotoColorEmoji.ttf durch Ihre Emoji-Schriftartendatei mit OEM-Branding ersetzen möchten, platzieren Sie die Emoji-Schriftart direkt vor der Schriftart-Fallback-Kette:
- Platzieren Sie Ihre eigene Schriftart mit dem Namen
OEMCustomEmoji.ttfin der Partition/system. Ändern Sie
/frameworks/base/data/fonts/fonts.xml(und/frameworks/base/data/fonts/font-fallback.xmlunter Android 15 und höher) wie im folgenden Code:<family lang="ko"> <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> </family> <!-- ADD FOLLOWING LINE --> <family lang="und-Zsye"> <font weight="400" style="normal">OEMCustomEmoji.ttf</font> </family> <!-- END OF MODIFICATION --> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> <family lang="und-Zsym"> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font> </family>
NotoColorEmoji.ttf für die Anforderungen des lokalen Markts ändern
So passen Sie die Schriftart an die Anforderungen Ihres lokalen Markts an:
- Erstellen Sie eine eigene
NotoColorEmoji-Datei mit einem anderen Namen, z. B. nennen Sie sieModified\_NotoColorEmoji.ttf. - Platzieren Sie sie vor der ursprünglichen Datei
NotoColorEmoji.ttf.
Nach Schritt 2 wird das geänderte Glyphe, das von
Modified\NotoColorEmoji.ttf unterstützt wird, anstelle des ursprünglichen NotoColorEmoji.ttf angezeigt.
Google empfiehlt Folgendes:
- Diese Schriftart sollte nur das erforderliche Glyphe enthalten.
- Delegieren Sie unveränderte Glyphen an die ursprüngliche Datei
NotoColorEmoji.ttf, damit Ihre Geräte alle Designkorrekturen erhalten, die in zukünftigen Emoji-Versionen vorgenommen werden.
Glyphen entfernen:Wenn Sie Glyphen aus der Datei NotoColorEmoji.ttf entfernen möchten, führen Sie die Schritte 1 und 2 aus und geben Sie in Ihrer cmap glyph ID = 0 an.
Regionale Flagge verwenden:Wenn das Zielglyphe eine regionale Flagge ist, geben Sie die Glyphe-ID als unbekannten Ländercode an. Verwenden Sie country code = "ZZ".
Tofu-Glyphe erstellen:Sie können explizit eine Tofu-Glyphe-ID angeben, wenn Sie eine verwenden möchten. Wenn Sie glyphID = 0 angeben, interpretiert die zugehörige App dies als „Glyphe nicht verfügbar“. Wenn Sie dieses Attribut verwenden, gibt die App Paint#hasGlyph beispielsweise false zurück.
Andere Schriftartendateien ersetzen oder ändern
Das Ersetzen oder Ändern anderer Schriftarten ähnelt dem Ändern der TTF-Dateien für die Anforderungen des lokalen Markts. Unbekannte Schriftartendateien, die zur Laufzeit in AOSP aktualisiert werden, werden ignoriert und nicht aktualisiert. Google ignoriert unbekannte Schriftarten auf Ihrem Gerät. Dazu gehören auch Schriftartendateien, die von den ursprünglichen Schriftarten in AOSP geändert wurden.
Schriftarten-Updates werden zwar von Google in GMS Core durchgeführt, der allgemeine Mechanismus für Schriftarten-Updates steht jedoch allen OEMs zur Verfügung. OEMs können zusätzliche Schriftarten-Updater installieren. Folgen Sie dazu der Anleitung unter Voraussetzungen erfüllen, Schriftartendateien signieren, und Schriftarten zur Laufzeit aktualisieren.
Voraussetzungen erfüllen
Der Mechanismus für Schriftarten-Updates verwendet die Linux-Kernelfunktion fs-verity. Prüfen Sie, ob Ihr Gerät fs-verity-konform ist, und fügen Sie das Zertifikat auf Ihrem Gerät hinzu.
Schriftartendateien signieren
Da Schriftartendateien riskante Ressourcen sind, müssen sie mit vertrauenswürdigen Schlüsseln verifiziert werden.
Überprüfen Sie alle Schriftartendateien, die aktualisiert werden sollen, sorgfältig und signieren Sie sie mit Ihrem privaten Schlüssel. Die Signatur muss mit fs-verity kompatibel sein.
Schriftarten zur Laufzeit aktualisieren
Die System-App FontManager führt Schriftarten-Updates durch. Die App FontManager bietet den Status der zuletzt installierten Systemschriftart und die Möglichkeit, Schriftartendateien mit Signaturen zu aktualisieren. Wenn Sie Update-Apps aufrufen möchten, fügen Sie die
UPDATE_FONT signature|privileged Berechtigung der Zulassungsliste für Ihre
App,
und Ihrem Manifest hinzu.
Geben Sie die Berechtigung UPDATE_FONT signature|privileged für die Updater-Funktion Ihrer App an.