Herunterladbare Schriftarten verwenden

Schreiben Sie jetzt
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Hier erfahren Sie, wie Sie Text in „Schreiben“ verwenden.
<ph type="x-smartling-placeholder"></ph> Herunterladbare Schriftarten →
<ph type="x-smartling-placeholder">

Mit der Funktion zum Herunterladen von Schriftarten können APIs Schriftarten von einer Anbieteranwendung anfordern, anstatt in der App zu bündeln oder Schriftarten herunterzuladen. Herunterladbare Schriftarten sind verfügbar für Geräte mit Android API-Version 14 und höher über die AndroidX Core-Bibliothek

Herunterladbare Schriftarten bieten die folgenden Vorteile:

  • Damit wird die App-Größe reduziert und die Erfolgsrate steigt.
  • Die Funktion verbessert den Systemzustand, da mehrere Apps dieselbe Schriftart über einen Dienstanbieter. Das spart dem Nutzer mobile Daten, Smartphone-Arbeitsspeicher und Speicherplatz. Bei diesem Modell die Schriftart bei Bedarf über das Netzwerk abgerufen.
Praktische Erfahrungen mit herunterladbaren Schriftarten finden Sie in der Herunterladbare Schriftarten Beispiel-App.

Wie funktionieren herunterladbare Schriftarten?

Ein Schriftartanbieter ist eine Anwendung, die Schriftarten abruft und lokal zwischenspeichert, damit andere Anwendungen Schriftarten anfordern und teilen. Die folgende Abbildung veranschaulicht den Prozess.

<ph type="x-smartling-placeholder">
</ph> Ein Bild, auf dem die Hauptkomponenten des Emoji-kompatiblen Prozesses zu sehen sind <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Prozess zum Herunterladen von Schriftarten

Grundlagen

Sie können die Funktion zum Herunterladen von Schriftarten auf die folgenden Arten verwenden, die ausführlich erläutert werden: finden Sie weiter unten in den folgenden Abschnitten:

Herunterladbare Schriftarten mit Android Studio und Google Play-Diensten verwenden

Sie können Ihre App so einrichten, dass Schriftarten mithilfe von Android Studio 3.0 oder höher heruntergeladen werden. Um Ihnen zu helfen, die Funktionen zum Herunterladen von Schriftarten nutzen, können Sie den Schriftartanbieter von Google Play .

<ph type="x-smartling-placeholder">
  1. Wählen Sie im Layouteditor einen TextView aus. Wählen Sie dann unter Attribute wählen Sie fontFamily > Weitere Schriftarten. <ph type="x-smartling-placeholder">
    </ph> Ein Bild, auf dem der Layout-Editor von Android Studio zu sehen ist <ph type="x-smartling-placeholder">
    </ph> Abbildung 2: Layout-Editor
    Das Fenster Ressourcen wird angezeigt.
  2. Wählen Sie im Menü Quelle die Option Google Fonts aus.
  3. Wählen Sie im Feld Schriftarten unter „Herunterladbare“ eine Schriftart aus. Bereich.
  4. Wählen Sie Schriftart zum Herunterladen erstellen aus und klicken Sie auf OK. <ph type="x-smartling-placeholder">
    </ph> Ein Bild, auf dem zu sehen ist, wie Schriftarten im Fenster „Ressourcen“ ausgewählt werden <ph type="x-smartling-placeholder">
    </ph> Abbildung 3: Wählen Sie im Fenster Ressourcen eine Schriftart aus.
  5. Android Studio generiert automatisch die relevanten XML-Dateien, die zum Rendern der Schriftart erforderlich sind. in Ihrer App korrekt eingerichtet haben.

    <ph type="x-smartling-placeholder">
    </ph> Ein Bild, auf dem zu sehen ist, wie eine Vorschau von Schriftarten angezeigt wird <ph type="x-smartling-placeholder">
    </ph> Abbildung 4: Vorschau der Schriftartdatei

Herunterladbare Schriftarten programmatisch verwenden

Ab Android 8.0 (API-Level 26) unterstützt AndroidX Core herunterladbare Schriftarten vollständig. Für Weitere Informationen zur Verwendung der AndroidX Core-Bibliothek finden Sie in der Abschnitt zur AndroidX Core-Bibliothek zum Herunterladen auf dieser Seite.

Wenn Sie die Funktion zum Herunterladen von Schriftarten programmatisch nutzen möchten, interagieren Sie mit zwei Hauptklassen:

Deine App ruft Schriftarten über die FontsContract API vom Schriftanbieter ab. Jedes hat der Anbieter eigene Einschränkungen für die Android-Versionen und die unterstützte Abfragesprache. Für Weitere Informationen zu den Android-Versionen und zum Abfrageformat findest du in der Dokumentation.

So laden Sie eine Schriftart herunter:

  1. Erstellen Sie eine Instanz der Klasse android.graphics.fonts.FontRequest, um die Schriftart des Anbieters. Übergeben Sie die folgenden Parameter, um eine Anfrage zu erstellen: <ph type="x-smartling-placeholder">
      </ph>
    • Die Befugnis des Schriftartanbieters.
    • Das Paket des Schriftartanbieters, um die Identität des Anbieters zu überprüfen
    • Die Zeichenfolgenabfrage der Schriftart. Weitere Informationen zu Abfrageformaten finden Sie in der in der Dokumentation des Anbieters, Google Fonts:
    • Eine Liste von Hash-Sätzen für die Zertifikate, mit denen die Identität des Anbieters überprüft werden kann. <ph type="x-smartling-placeholder">

    Kotlin

    val request = FontRequest(
            "com.example.fontprovider.authority",
            "com.example.fontprovider",
            "my font",
            certs
    )
    

    Java

    FontRequest request = new FontRequest("com.example.fontprovider",
                       "com.example.fontprovider", "my font", certs);
    
    <ph type="x-smartling-placeholder">
  2. Erstellen Sie eine Instanz des FontsContract.FontRequestCallback .
  3. Überschreiben Sie die onTypefaceRetrieved() um anzugeben, dass die Schriftartanforderung abgeschlossen ist. Geben Sie die abgerufene Schriftart als Parameter an. Mit dieser Methode können Sie die Schriftart nach Bedarf festlegen. Sie können beispielsweise die Schriftart für eine TextView
  4. Überschreiben Sie die onTypefaceRequestFailed() , um Informationen zu Fehlern beim Anfordern von Schriftarten zu erhalten. Weitere Informationen zu Fehlercodes finden Sie in der Fehlercodekonstanten.
  5. Rufen Sie die Methode FontsContract.requestFont() auf, um die Schriftart aus der Schriftart abzurufen. Dienstanbieter. Die Methode initiiert eine Prüfung, um festzustellen, ob die Schriftart im Cache vorhanden ist. Wenn Wenn die Schriftart lokal nicht verfügbar ist, wird der Schriftartanbieter aufgerufen, asynchron und übergibt das Ergebnis an den Callback. Übergeben Sie die folgenden Parameter: <ph type="x-smartling-placeholder">
      </ph>
    • Eine Instanz des Context Klasse
    • Instanz der android.graphics.fonts.FontRequest-Klasse
    • Ein Callback zum Empfang der Ergebnisse der Schriftartanforderung
    • Ein Handler zum Abrufen von Schriftarten in einem Thread
    • <ph type="x-smartling-placeholder">

Der folgende Beispielcode veranschaulicht den allgemeinen Prozess für herunterladbare Schriftarten:

Kotlin

val request = FontRequest(
        "com.example.fontprovider.authority",
        "com.example.fontprovider",
        "my font",
        certs
)
val callback = object : FontsContract.FontRequestCallback() {

    override fun onTypefaceRetrieved(typeface: Typeface) {
        // Your code to use the font goes here.
        ...
    }

    override fun onTypefaceRequestFailed(reason: Int) {
        // Your code to deal with the failure goes here.
        ...
    }
}
FontsContract.requestFonts(context, request, handler, null, callback)

Java

FontRequest request = new FontRequest("com.example.fontprovider.authority",
        "com.example.fontprovider", "my font", certs);
FontsContract.FontRequestCallback callback =
    new FontsContract.FontRequestCallback() {
        @Override
        public void onTypefaceRetrieved(Typeface typeface) {
            // Your code to use the font goes here.
            ...
        }

        @Override
        public void onTypefaceRequestFailed(int reason) {
            // Your code to deal with the failure goes here.
            ...
        }
};
FontsContract.requestFonts(context, request, handler, null, callback);

Weitere Informationen zum Herunterladen einer Schriftart von einem Schriftartanbieter finden Sie in der Herunterladbare Schriftarten Beispiel-App.

Herunterladbare Schriftarten mit AndroidX Core verwenden

AndroidX Core unterstützt die Funktion zum Herunterladen von Schriftarten auf Geräten mit Android. API-Version 14 oder höher. Die androidx.core.provider Das Paket enthält die zu implementierenden Klassen FontsContractCompat und FontRequest. die abwärtskompatiblen Funktionen zum Herunterladen von Schriftarten. Die AndroidX-Klassen enthalten Methoden ähnlich wie die Framework-Methoden, und das Herunterladen von Schriftarten die im Abschnitt über mithilfe von Programmen zum Herunterladen von Schriftarten.

Wenn du Schriftarten mit AndroidX herunterladen möchtest, importiere FontsContractCompat und FontRequest-Klassen aus dem androidx.core.provider-Paket. Erstellen Instanzen dieser Klassen anstelle von FontsContract und android.graphics.fonts.FontRequest-Framework-Klassen.

<ph type="x-smartling-placeholder">

AndroidX Core-Abhängigkeit hinzufügen

Wenn Sie die Klassen FontsContractCompat und FontRequest verwenden möchten, müssen Sie Folgendes ändern: die Klassenpfad-Abhängigkeiten Ihres App-Projekts innerhalb Ihrer Entwicklungsumgebung.

Um AndroidX Core zu deinem App-Projekt hinzuzufügen, füge die folgende Abhängigkeit zum build.gradle-Datei:

Cool

dependencies {
    ...
    implementation "androidx.core:core-ktx:2.2.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.core:core-ktx:2.2.0")
}

Herunterladbare Schriftarten als XML-Ressourcen verwenden

Mit Android 8.0 (API-Level 26) und AndroidX Core lassen sich benutzerdefinierte Schriftart als Ressource im XML-Layout. Das bedeutet, dass Sie die Schriftart nicht für ein Asset. Sie können eine benutzerdefinierte Schriftart für Ihr gesamtes Design festlegen, was die Nutzerfreundlichkeit für Verschiedene Schriftstärken und Stile, z. B. fett, mittel oder leicht,

  1. Erstellen Sie eine neue XML-Datei im Ordner res/font.
  2. Fügen Sie ein <font-family>-Stammelement hinzu und legen Sie die schriftbezogenen Attribute wie folgt fest: wie in der folgenden Beispiel-XML-Datei dargestellt:
  3. <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android"
            android:fontProviderAuthority="com.example.fontprovider.authority"
            android:fontProviderPackage="com.example.fontprovider"
            android:fontProviderQuery="example font"
            android:fontProviderCerts="@array/certs">
    </font-family>
    
  4. Nennen Sie die Datei in der Layout-XML-Datei unter dem Namen @font/font_file_name. Sie können auch verwenden Sie die getFont() zum programmatischen Abrufen der Datei, wie z. B. getFont(R.font.font_file_name).

Schriftarten im Manifest deklarieren

Layout-Inflation und Ressourcenabruf sind synchrone Aufgaben. Standardmäßig wird beim ersten Versuch, Das Abrufen von Schriftarten löst eine Anfrage an den Schriftartanbieter aus, wodurch das erste Layout . Um die Verzögerung zu vermeiden, können Sie Schriftarten, die abgerufen werden müssen, vorab in Ihrem Manifest deklarieren. Nachdem das System die Schriftart vom Anbieter abgerufen hat, ist sie sofort verfügbar. Wenn-Schriftart der Abruf länger als erwartet dauert, bricht das System den Abrufvorgang ab und verwendet die Standardeinstellung Schriftart.

Führe die folgenden Schritte aus, um Schriftarten im Manifest zu deklarieren:

  1. Erstellen Sie ein Ressourcen-Array in res/values/arrays.xml und deklarieren Sie die Schriftarten, die Sie vorab abrufen möchten.
  2. res/values/arrays.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="preloaded_fonts">
            <item>@font/font1</item>
            <item>@font/font2</item>
        </array>
    </resources>
    
  3. Verwende ein meta-data-Tag, um das Ressourcen-Array in deinem Manifest zu deklarieren.
  4. <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
    

Zertifikate hinzufügen

Wenn ein Schriftartanbieter nicht vorinstalliert ist oder Sie die AndroidX Core-Bibliothek verwenden, deklarieren Sie die Zertifikate, mit denen der Schriftartanbieter signiert ist. Das System prüft anhand der Zertifikate, der Identität des Schriftartanbieters.

<ph type="x-smartling-placeholder">

So fügen Sie Zertifikate hinzu:

  1. Erstellen Sie ein String-Array mit den Zertifikatsdetails. Weitere Informationen zum Zertifikat finden Sie in der Dokumentation Ihres Schriftartanbieters.
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
    
  3. Legen Sie das Attribut fontProviderCerts auf das Array fest.
  4. android:fontProviderCerts="@array/certs"
    
    <ph type="x-smartling-placeholder">

Herunterladbare Schriftarten in Compose

Beginnt in 1.2-alpha07 erstellen, können Sie die Downloadable Fonts API in der Compose-App verwenden, Google Fonts asynchron und verwenden Sie sie in Ihrer App. Für finden Sie in der Dokumentation zum Erstellen von herunterladbaren Schriftarten