Interfejs API dla programistów

Interfejs API dla deweloperów zapewnia dostęp do metadanych wszystkich rodzin obsługiwanych przez Google Fonts. Umożliwia aplikacjom wysyłanie zapytań do Google Fonts dotyczących dostępnych rodzin czcionek. Interfejs REST API dostarcza dane w formacie JSON, które obejmują style i skrypty (nazywane podzbiorami w Google Fonts) w każdej rodzinie. Interfejs API może sortować listę rodzin alfabetycznie, według daty dodania, liczby stylów, trendu lub popularności.

Odbiorcy

Ten dokument jest przeznaczony dla programistów aplikacji i stron internetowych. Korzystanie z interfejsu Developer API wymaga znajomości JavaScript.

Krótki przykład

Aby pobrać dynamiczną listę czcionek oferowanych przez usługę Google Fonts, wyślij to żądanie:

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

Przykładowy wynik wygląda tak:

{
 "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"
  },
  [...]
 ]
}

Identyfikowanie aplikacji w Google

Aplikacja musi się identyfikować za każdym razem, gdy wysyła żądanie do interfejsu Google Fonts Developer API, dołączając do każdego żądania klucz interfejsu API.

Uzyskiwanie i używanie klucza interfejsu API

Uzyskaj klucz

Możesz też utworzyć konto na stronie Dane logowania.

Gdy uzyskasz klucz interfejsu API, Twoja aplikacja będzie mogła dołączać parametry zapytania key=yourAPIKey do adresów URL wszystkich żądań.

Klucz interfejsu API można bezpiecznie umieszczać w adresach URL, więc nie trzeba go kodować.

Szczegóły

Odpowiedź JSON (patrz przykład powyżej) składa się z tablicy o nazwie „items”, która zawiera obiekty z informacjami o każdej rodzinie czcionek.

Obiekt family składa się z tych pól:

  • kind: rodzaj obiektu, obiekt czcionki internetowej
  • family: nazwa rodziny;
  • subsets: lista skryptów obsługiwanych przez rodzinę.
  • menu: adres URL do podzbioru rodziny obejmujący tylko nazwę rodziny.
  • variants: różne style dostępne dla rodziny.
  • version: wersja rodziny czcionek.
  • axes: zakres osi, obecny tylko na żądanie(patrz poniżej) w przypadku czcionek zmiennych.
  • lastModified: data (w formacie „rrrr-MM-dd”) ostatniej modyfikacji rodziny czcionek.
  • pliki: pliki rodziny czcionek (ze wszystkimi obsługiwanymi pismami) dla każdego z dostępnych wariantów.

Połączenie informacji o każdej rodzinie ułatwia tworzenie żądania interfejsu Fonts API. Załóżmy na przykład, że mamy odwołanie do obiektu family w przypadku 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('');

[...]

Sortowanie

Domyślnie lista rodzin jest zwracana w dowolnej kolejności. Można jednak posortować listę za pomocą parametru sortowania:

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

Możliwe wartości sortowania:

  • alpha: sortowanie listy alfabetycznie
  • date: sortowanie listy według daty dodania (najpierw najnowszy lub zaktualizowany czcionka);
  • popularity: sortowanie listy według popularności (najpierw najpopularniejsza rodzina)
  • style: sortowanie listy według liczby dostępnych stylów (rodzina z największą liczbą stylów na początku);
  • na czasie: sortowanie listy według wzrostu liczby rodzin (najpierw rodziny, w których liczba rodzin rośnie najszybciej);

Filtrowanie

Wysyłanie zapytania do konkretnej grupy rodzinnej

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

Wszystkie rodziny, które obsługują podzbiór greckiego

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

Filtrowanie według kategorii czcionek

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

Optymalizacja

Aby pobrać pliki czcionek skompresowane w formacie woff2

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

Czcionki zmienne

Czcionki zmienne oferują ciągłe zakresy stylów. Domyślnie w przypadku czcionek zmiennych tworzonych w standardowych pozycjach zwracane jest połączenie plików czcionek statycznych. Jeśli ustawiona jest opcja capability=VF, zamiast statycznych zwracany jest plik czcionki zmiennej wraz z dostępnymi metadanymi zakresu osi. Przykład:

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

Przykładowa odpowiedź:

{
 "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
      }
    ]
  },
  [...]
 ]
}

Specyfikacja adresu URL interfejsu API

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

your_key: Twój klucz API dla programistów.

family: nazwa rodziny czcionek.

subset: nazwa podzbioru czcionek.

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

capability: VF | WOFF2.

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