Entwickler-API

Die Developer API bietet Zugriff auf die Metadaten für alle Schriftfamilien, die von Google Fonts bereitgestellt werden. Damit können Apps Google Fonts nach den verfügbaren Schriftfamilien abfragen. Die REST API liefert Daten im JSON-Format, das die Stile und Skripts (in Google Fonts als Teilmengen bezeichnet) in jeder Schriftfamilie enthält. Die API kann die Liste der Schriftfamilien alphabetisch, nach Hinzufügedatum, nach Anzahl der Stile, nach Trend oder nach Beliebtheit sortieren.

Zielgruppe

Dieses Dokument richtet sich an Web- und Anwendungsentwickler. Für die Verwendung der Developer API sind JavaScript-Kenntnisse erforderlich.

Kurzes Beispiel

Wenn Sie die dynamische Liste der vom Google Fonts-Dienst angebotenen Schriftarten abrufen möchten, senden Sie die folgende Anfrage:

https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY

Ein Beispiel für das Ergebnis sieht so aus:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Anonymous Pro",
    "variants": [
      "regular",
      "italic",
      "700",
      "700italic"
    ],
    "subsets": [
      "cyrillic",
      "greek",
      "latin",
      "latin-ext"
    ],
    "version": "v21",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2Bp2a15UIB7Un-bOeISG3pLlw89CH98Ko.ttf",
      "italic": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2fp2a15UIB7Un-bOeISG3pHl428AP44Kqr2Q.ttf",
      "700": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2cp2a15UIB7Un-bOeISG3pFuAT0CnW7KOywKo.ttf",
      "700italic": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2ap2a15UIB7Un-bOeISG3pHl4OTCzc6IG30KqB9Q.ttf"
    },
    "category": "monospace",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/anonymouspro/v21/rP2Bp2a15UIB7Un-bOeISG3pHl028A.ttf"
  },
  {
    "family": "Antic",
    "variants": [
      "regular"
    ],
    "subsets": [
      "latin"
    ],
    "version": "v19",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/antic/v19/TuGfUVB8XY5DRaZLodgzydtk.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/antic/v19/TuGfUVB8XY5DRZZKq9w.ttf"
  },
  [...]
 ]
}

Anwendung gegenüber Google identifizieren

Ihre Anwendung muss sich bei jeder Anfrage an die Google Fonts Developer API identifizieren, indem sie jeder Anfrage einen API-Schlüssel beifügt.

API-Schlüssel erhalten und nutzen

Schlüssel anfordern

Alternativ können Sie auf der Seite "Anmeldedaten" einen Schlüssel erstellen.

Nachdem Sie einen API-Schlüssel haben, kann Ihre Anwendung den Abfrageparameter key=yourAPIKey an alle Anfrage-URLs anhängen.

Der API-Schlüssel lässt sich sicher in URLs einbetten. Eine Codierung ist nicht notwendig.

Details

Die JSON-Antwort (siehe Beispiel oben) besteht aus einem Array namens „items“, das Objekte mit Informationen zu jeder Schriftfamilie enthält.

Ein Familienobjekt besteht aus den folgenden Feldern:

  • kind: Die Art des Objekts, ein Webfont-Objekt
  • family: Der Name der Familie
  • Untergruppen: Eine Liste der von der Schriftart unterstützten Schriftsysteme
  • menu: Eine URL für die Teilmenge der Familie, die nur den Namen der Familie enthält.
  • Varianten: Die verschiedenen für die Schriftfamilie verfügbaren Stile
  • version: Die Version der Schriftfamilie.
  • Achsen: Achsenbereich, nur auf Anfrage für Schriftarten mit variablen Achsen vorhanden (siehe unten).
  • lastModified: Das Datum (Format „yyyy-MM-dd“), an dem die Schriftfamilie zuletzt geändert wurde.
  • files: Die Schriftfamilien-Dateien (mit allen unterstützten Schriftsystemen) für jede der verfügbaren Varianten.
  • color_capabilities: Die von dieser Familie unterstützten Farbformate (falls vorhanden)
  • Tags: Die Tags, die für den gesamten Designspace dieser Schriftfamilie gelten. Nur auf Anfrage verfügbar (siehe unten).

Durch die Kombination der Informationen für jede Familie lässt sich ganz einfach eine Fonts API-Anfrage erstellen. Angenommen, wir haben einen Verweis auf das Familienobjekt für Anonymous Pro:

[...]

var apiUrl = [];
apiUrl.push('https://fonts.googleapis.com/css?family=');
apiUrl.push(anonymousPro.family.replace(/ /g, '+'));
if (contains('italic', anonymousPro.variants)) {
  apiUrl.push(':');
  apiUrl.push('italic');
}
if (contains('greek', anonymousPro.subsets)) {
  apiUrl.push('&subset=');
  apiUrl.push('greek');
}

// url: 'https://fonts.googleapis.com/css?family=Anonymous+Pro:italic&subset=greek'
var url = apiUrl.join('');

[...]

Sortieren

Die Liste der Familien wird standardmäßig in keiner bestimmten Reihenfolge zurückgegeben. Es ist jedoch möglich, die Liste mit dem Parameter „sort“ zu sortieren:

https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity

Mögliche Sortierwerte:

  • alpha: Sortiert die Liste alphabetisch.
  • „Datum“: Die Liste wird nach dem Datum sortiert, an dem die Schriftart hinzugefügt wurde. Die zuletzt hinzugefügten oder aktualisierten Schriftarten werden zuerst angezeigt.
  • Beliebtheit: Sortiert die Liste nach Beliebtheit (beliebteste Familie zuerst).
  • style: Sortiert die Liste nach der Anzahl der verfügbaren Schriftschnitte (Schriftfamilie mit den meisten Schriftschnitten zuerst).
  • trending: Sortiert die Liste nach Familien, deren Nutzung zunimmt (Familie mit dem größten Wachstum zuerst).

Filtern

Bestimmte Familie abfragen

https://www.googleapis.com/webfonts/v1/webfonts?family=family_name

Alle Familien, die den griechischen Zeichensatz unterstützen

https://www.googleapis.com/webfonts/v1/webfonts?subset=subset_name

Nach Schriftartkategorie filtern

https://www.googleapis.com/webfonts/v1/webfonts?category=category_name

Optimierung

Zum Abrufen von Schriftartdateien, die im WOFF2-Format komprimiert sind

https://www.googleapis.com/webfonts/v1/webfonts?capability=WOFF2

Variable Schriftarten

Variable Schriftarten bieten einen kontinuierlichen Bereich von Stilen. Standardmäßig wird eine Kombination aus statischen Schriftartdateien für variable Schriftarten zurückgegeben, die an Standardpositionen instanziiert werden. Wenn capability=VF festgelegt ist, wird die Datei für die variable Schriftart anstelle von statischen Dateien zusammen mit den Metadaten für den verfügbaren Achsenbereich zurückgegeben. Beispiel:

https://www.googleapis.com/webfonts/v1/webfonts?capability=VF

Beispielantwort:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Noto Sans Display",
    "variants": [
      "regular",
      "italic"
    ],
    "subsets": [
      "cyrillic",
      "cyrillic-ext",
      "greek",
      "greek-ext",
      "latin",
      "latin-ext",
      "vietnamese"
    ],
    "version": "v20",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR.ttf",
      "italic": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpjK4fy6r6tOBEJg0IAKzqdFZVZxrktdHvjCaxRgew.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpbK4fy6r6tOBEJg0IAKzqdFZVZxpMkXJMhnB9XjO1o90LuV-PT4Doq_AKp_3cKZTCa3g.ttf",
    "axes": [
      {
        "tag": "wdth",
        "start": 62.5,
        "end": 100
      },
      {
        "tag": "wght",
        "start": 100,
        "end": 900
      }
    ]
  },
  [...]
 ]
}

Tags

Wenn capability=FAMILY_TAGS festgelegt ist, wird das Feld „Tags“ mit allen Tags gefüllt, die sich auf den gesamten Designspace der Schriftfamilie beziehen.

Beispiel:

{
 "kind": "webfonts#webfontList",
 "items": [
  [...]
  {
    "family": "Noto Sans Display",
    "variants": [
      "regular",
      "italic"
    ],
    "subsets": [
      "cyrillic",
      "cyrillic-ext",
      "greek",
      "greek-ext",
      "latin",
      "latin-ext",
      "vietnamese"
    ],
    "version": "v20",
    "lastModified": "2022-09-22",
    "files": {
      "regular": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLplK4fy6r6tOBEJg0IAKzqdFZVZxokvfn_BDLxR.ttf",
      "italic": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpjK4fy6r6tOBEJg0IAKzqdFZVZxrktdHvjCaxRgew.ttf"
    },
    "category": "sans-serif",
    "kind": "webfonts#webfont",
    "menu": "http://fonts.gstatic.com/s/notosansdisplay/v20/RLpbK4fy6r6tOBEJg0IAKzqdFZVZxpMkXJMhnB9XjO1o90LuV-PT4Doq_AKp_3cKZTCa3g.ttf",
    "tags": [
      {
        "name": "/Expressive/Business",
        "weight": 58
      },
      {
        "tag": "/Sans/Humanist",
        "weight": 100,
      }
    ]
  },
  [...]
 ]
}

API-URL-Spezifikation

webfonts?key=<your_key>[&family=<family>][&subset=<subset>][&capability=<capability>...][&sort=<sort>]

your_key: Ihr Entwickler-API-Schlüssel.

family: Name einer Schriftfamilie.

subset: Name eines Schriftart-Subsets.

category: serif | sans-serif | monospace | display | handwriting

capability: VF | WOFF2.

sort: alpha | date | popularity | style | trending.