Benutzerdefinierte Schriftarten implementieren

Ab Android 15 werden variable Schriftarten mit besserer Effizienz und Detailgenauigkeit. Mit dieser Aktualisierung müssen Anbieter neue Konfigurationen für Variablen Schriftarten hinzufügen, font_fallback.xml statt fonts.xml, da fonts.xml eingestellt wird. Weitere Informationen finden Sie unter Unterstützung für variable Schriftarten.

In Android 11 und niedriger wird das Aktualisieren der auf dem Gerät installierten Schriftartdateien in AOSP (in der /system/fonts) oder die Anbieterpartitionen (in der /product/fonts- oder /system/fonts Partitionen) erfordert ein Systemupdate des OEMs. Dieses hat großen Einfluss auf die Kompatibilität von Emojis. In Mit Android 12 können Sie das FontManager-System verwenden Dienst zum Verwalten installierter Schriftartdateien und zum Aktualisieren von auf dem Gerät installierten Schriftartdateien ohne Systemupdate.

Android 12 umfasst drei Prozessinteraktionen: FontManagerService, Font Updater und Application.

FontManagerService ist das zentrale Verwaltungssystem auf dem Systemserver. FontManagerService speichert die neuesten nutzerspezifischen Systemschrifteinstellungen.

FontUpdater ist ein austauschbarer Schriftart-Updater, dem ein Berechtigungsprüfung für signature|privileged. FontUpdater kommuniziert mit dem FontManagerService, um die aktuelle Systemschriftart abzurufen, zu installieren, zu entfernen oder zu aktualisieren Einstellungen. Das FontUpdater kann neue Inhalte der Schriftartdatei durch Interprozess übergeben. Kommunikationsmechanismen (IPC). Der FontManagerService speichert den Inhalt unter an einem weltweit lesbaren Speicherort, z. B. in den /data/fonts-Dateien. Dieses dass der Speicher geschützt ist. Sie kann nur vom FontManagerService geschrieben werden, indem SELinux-Richtlinie.

Wenn die Application-Klasse gestartet wird, übergibt sie die Systemschrifteinstellungen als der bindApplication-Methode; werden die Schriftarteinstellungen App-Prozess genutzt werden kann.

Unterstützung für variable Schriftarten

Ab Android 15 werden Konfigurationen für variable Schriftarten angegeben in font_fallback.xml im folgenden Format:

<family lang="und-Ethi" supportedAxes="wght,ital">
    <font>NotoSansEthiopic-VF.ttf</font>
</family>

In diesem Format verfügt eine variable Schriftart über alle Attribute einer statischen Schriftart mit Zusätzliches supportedAxes-Attribut. Ein supportedAxes-Attribut ist ein durch Kommas getrennte Liste der unterstützten Achsen-Tags. Mit Unter Android 15 können nur die Achsen wght und ital angegeben ist.

Wenn das Attribut supportedAxes nicht angegeben ist, fungiert der Knoten font als Statische Schriftart einer einzelnen Instanz einer variablen Schriftart, die mit axis angegeben wird Kinder.

Wenn das Attribut supportedAxes angegeben ist, erstellt das System dynamisch eine Schriftartinstanz für den angegebenen Wert für Stärke und Stil zur Laufzeit.

Entwickler können die android.graphics.fonts.SystemFonts#getAvailableFonts verwenden Java API oder ASystemFontIterator_open NDK API verwenden, um eine Liste der vom System installierten Schriftartdateien abzurufen. Weitere 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 Schriftartdateien in AOSP, um ihre Marken zu präsentieren. Android 12 unterstützt diese Funktion, Anforderungen, damit die Emoji-Schriftarten auf den Geräten immer aktuell sind. OEMs, die keine Änderungen oder Emoji-Schriftartdateien aktualisieren, müssen Sie diese Funktion nicht verwenden.

Google aktualisiert die Schriftartdateien, insbesondere die NotoColorEmoji-Dateien über GMS Hauptinhalte. Ändern oder entfernen Sie die Datei NotoColorEmoji.ttf daher nicht aus dem /system-Partition an und entfernen Sie sie nicht aus /frameworks/base/data/fonts/fonts.xml. Es gibt drei Möglichkeiten, wie Sie Ihre Schriftarten anpassen können:

  1. Ersetzen Sie die Datei NotoColorEmoji.ttf durch eine Emoji-Schriftart des OEMs.
  2. Passen Sie die Datei NotoColorEmoji.ttf an Ihre lokalen Marktanforderungen an.
  3. Ersetzen oder ändern Sie andere Schriftartdateien.

Wenn Sie keine Emoji-Schriftarten in AOSP ändern, müssen Sie nichts unternehmen. Wenn Emoji-Schriftarten anpassen möchten, folgen Sie der Anleitung unten .

Ersetzen Sie „NotoColorEmoji.ttf“ durch Emoji-Schriftarten des OEMs.

So ersetzen Sie die NotoColorEmoji.ttf-Datei durch die Emoji-Schriftartdatei Ihres OEMs: setzen Sie die Emoji-Schriftart direkt vor die Schriftart-Fallback-Kette:

  1. Fügen Sie Ihre eigene Schriftart mit dem Namen OEMCustomEmoji.ttf in die Partition /system ein.
  2. /frameworks/base/data/fonts/fonts.xml ändern (und /frameworks/base/data/fonts/font-fallback.xml Zoll 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 lokale Märkte anpassen

Führen Sie die folgenden Schritte aus, um sie an Ihre lokalen Märkte anzupassen:

  1. Erstellen Sie eine eigene NotoColorEmoji-Datei mit einem anderen Namen. zum Beispiel und nennen Sie sie Modified\_NotoColorEmoji.ttf.
  2. Platzieren Sie es vor der ursprünglichen NotoColorEmoji.ttf-Datei.

Nachdem Sie Schritt 2 ausgeführt haben, wird das geänderte Symbol Modified\NotoColorEmoji.ttf wird anstelle des ursprünglichen NotoColorEmoji.ttf-Elements angezeigt. Google empfiehlt Folgendes:

  • Verwenden Sie nur die erforderliche Glyphe in dieser Schriftart.
  • Delegieren Sie unveränderte Glyphen an die ursprüngliche NotoColorEmoji.ttf-Datei, sodass erhalten deine Geräte alle Designkorrekturen, die in zukünftigen Emoji-Versionen vorgenommen werden.

Bildzeichen entfernen:Wenn Sie Bildzeichen aus der Datei NotoColorEmoji.ttf entfernen möchten, folgen Sie Schritt 1 und 2 und geben Sie glyph ID = 0 in Ihrer cmap an.

Flag mit „regional“ verwenden:Wenn das Zielsymbol ein regionales Flag ist, geben Sie das Flag „Regional“ an. Glyphen-ID als unbekannter Ländercode angezeigt. (country code = "ZZ" verwenden.)

Tofu-Glyphe erstellen:Sie können bei Bedarf explizit eine Tofu-Glyphen-ID angeben. um eine zu verwenden. Wenn du glyphID = 0 angibst, interpretiert die zugehörige App dies als „Glyphe ist nicht verfügbar“. Wenn Sie beispielsweise dieses Attribut verwenden, Die App „Paint#hasGlyph“ gibt false zurück.

Andere Schriftartdateien ersetzen oder ändern

Um andere Schriftarten zu ersetzen oder zu ändern, erfolgt die Anpassung ähnlich wie bei die TTF-Dateien an die lokalen Marktanforderungen angepasst. Unbekannte Schriftartdateien, die während der Laufzeit im AOSP aktualisiert werden, werden ignoriert und nicht aktualisiert. Google ignoriert unbekannte Schriftarten auf Ihrem Gerät. Dazu gehören auch Schriftartdateien, Originalschriftarten in AOSP.

Obwohl die Schriftart in GMS Core von Google aktualisiert wird, führt die allgemeine für alle OEMs zur Verfügung. OEMs können zusätzliche Schriftart-Updater installieren, indem sie die Schritte unter Voraussetzungen für Videokonferenzen, Schriftartdateien signieren und Schriftarten für die Laufzeit aktualisieren.

Voraussetzungen für Meet

Der Mechanismus zur Aktualisierung von Schriftarten verwendet die Linux-Kernelfunktion fs-verity. Prüfen Sie, ob Ihr Gerät ist fs-verity-konform und das Zertifikat muss mit Ihrem Gerät verknüpft sein.

Schriftartdateien signieren

Da Schriftartdateien riskante Ressourcen sind, müssen sie mit vertrauenswürdigen Schlüsseln verifiziert werden. Überprüfen Sie sorgfältig alle Schriftartdateien, die aktualisiert werden sollen, und unterschreiben Sie mit Ihrem privaten Schlüssel enthält. Die Signatur muss mitfs-verity kompatibel sein.

Schriftart für Laufzeit aktualisieren

Die FontManager-System-App aktualisiert die Schriftarten. Die FontManager App bietet den aktuellen Status der installierten Systemschrift und kann die Schriftart aktualisieren Dateien mit Signaturen. Um Update-Apps aufzurufen, füge den UPDATE_FONT signature|privileged Berechtigung für Ihr Zulassungsliste für Apps, und an dein Manifest.

Dem Updater deiner App die Berechtigung „UPDATE_FONT signature|privileged“ erteilen .