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
.