API разработчика

API разработчика предоставляет доступ к метаданным всех семейств шрифтов, обслуживаемых Google Fonts. Он позволяет приложениям запрашивать у Google Fonts доступные семейства шрифтов. API REST предоставляет данные в формате JSON, включая стили и шрифты (называемые подмножествами в Google Fonts) каждого семейства. API позволяет сортировать список семейств по алфавиту, по дате добавления, по количеству стилей, по тренду или популярности.

Аудитория

Этот документ предназначен для разработчиков веб-приложений и приложений. Для использования API разработчика требуется знание JavaScript.

Быстрый пример

Чтобы получить динамический список шрифтов, предлагаемых службой Google Fonts, отправьте следующий запрос:

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

Пример результата будет выглядеть так:

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

Идентификация вашего приложения в Google

Ваше приложение должно идентифицировать себя каждый раз, когда оно отправляет запрос к API разработчика Google Fonts, включая ключ API в каждый запрос.

Получение и использование ключа API

Получить ключ

Или создайте его на странице «Учетные данные» .

После получения ключа API ваше приложение может добавлять параметр запроса key= yourAPIKey ко всем URL-адресам запроса.

API-ключ безопасен для встраивания в URL-адреса; он не требует кодирования.

Подробности

Ответ JSON (см. пример выше) состоит из массива с именем «items», который содержит объекты с информацией о каждом семействе шрифтов.

Объект семьи состоит из следующих полей:

  • вид: Вид объекта, объект веб-шрифта
  • семья: Название семьи
  • подмножества: список сценариев, поддерживаемых семейством
  • меню: URL-адрес подмножества семьи, включающий только название семьи.
  • варианты: различные стили, доступные для семьи
  • версия: Версия семейства шрифтов.
  • оси: диапазон осей, предоставляется только по запросу (см. ниже) для переменных шрифтов.
  • lastModified: Дата (в формате «гггг-ММ-дд») последнего изменения семейства шрифтов.
  • Файлы: Файлы семейств шрифтов (со всеми поддерживаемыми сценариями) для каждого из доступных вариантов.
  • color_capabilities: Цветовые форматы, если таковые имеются, поддерживаемые этим семейством
  • Теги: Теги, применяемые ко всему пространству проектирования этого семейства. Доступно только по запросу (см. ниже).

Объединив информацию по каждому семейству, можно легко создать запрос к API шрифтов. Например, предположим, что у нас есть ссылка на объект семейства для 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('');

[...]

Сортировка

По умолчанию список семейств возвращается в произвольном порядке. Однако его можно отсортировать с помощью параметра sort:

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

Возможные значения сортировки:

  • альфа: сортировать список по алфавиту
  • дата: сортировать список по дате добавления (сначала самый последний добавленный или обновленный шрифт)
  • Популярность: сортировать список по популярности (сначала самая популярная семья)
  • Стиль: сортировка списка по количеству доступных стилей (семейство с наибольшим количеством стилей отображается первым)
  • тренд: сортировать список по семьям, в которых наблюдается рост использования (сначала семья, в которой наблюдается наибольший рост)

Фильтрация

Запрос конкретной семьи

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

Все семьи, которые поддерживают греческое подмножество

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

Фильтр по категории шрифтов

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

Оптимизация

Для извлечения файлов шрифтов, сжатых в формате woff2

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

Вариативные шрифты

Вариативные шрифты предлагают непрерывные диапазоны стилей. По умолчанию для вариативных шрифтов, экземпляры которых размещены в стандартных позициях, возвращается комбинация файлов статических шрифтов. Если установлено значение capability=VF , вместо статических возвращается файл вариативного шрифта вместе с метаданными диапазона доступных осей. Пример:

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

Пример ответа:

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

Теги

Если установлено capability=FAMILY_TAGS , поле тегов будет заполнено всеми тегами, относящимися ко всему пространству проектирования семейства.

пример примера:

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

Спецификация URL-адреса API

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

your_key : Ваш API-ключ разработчика.

family : Название семейства шрифтов.

subset : Имя подмножества шрифтов.

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

capability : VF | WOFF2 .

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