A API para desenvolvedores dá acesso aos metadados de todas as famílias atendidas pelo Google Fonts. Ele permite que os apps consultem o Google Fonts para ver as famílias de fontes disponíveis. A API REST fornece dados no formato JSON que incluem os estilos e scripts (chamados de subconjuntos no Google Fonts) em cada família. A API pode classificar a lista de famílias em ordem alfabética, por data de adição, por número de estilos, por tendência ou por popularidade.
Público-alvo
Este documento é destinado a desenvolvedores da Web e de aplicativos. Para usar a API Developer, é necessário ter conhecimento de JavaScript.
Um exemplo rápido
Para recuperar a lista dinâmica de fontes oferecidas pelo serviço Google Fonts, envie a seguinte solicitação:
https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY
Um exemplo de resultado seria assim:
{
"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"
},
[...]
]
}
Como identificar seu aplicativo para o Google
Seu aplicativo precisa se identificar sempre que envia uma solicitação para a API Google Fonts Developer, incluindo uma chave de API em cada solicitação.
Como receber e usar uma chave de API
Acessar uma chaveOu crie uma na página "Credenciais".
Depois que você tiver uma chave de API, seu aplicativo poderá anexar o parâmetro de consulta key=yourAPIKey a todos os URLs de solicitação.
É seguro incorporar a chave de API a URLs. Não é necessário codificá-la.
Detalhes
A resposta JSON (consulte o exemplo acima) é composta por uma matriz chamada "items" que contém objetos com informações sobre cada família tipográfica.
Um objeto de família é composto pelos seguintes campos:
- kind: The kind of object, a webfont object
- family: o nome da família
- subsets: uma lista de scripts compatíveis com a família
- menu: um URL para o subconjunto da família que cobre apenas o nome dela.
- variantes: os diferentes estilos disponíveis para a família
- version: a versão da família de fontes.
- axes: intervalo de eixos, presente apenas mediante solicitação (consulte abaixo) para fontes variáveis.
- lastModified: a data (formato "aaaa-MM-dd") em que a família de fontes foi modificada pela última vez.
- files: os arquivos da família tipográfica (com todos os scripts compatíveis) para cada uma das variantes disponíveis.
- color_capabilities: os formatos de cores, se houver, compatíveis com essa família
- tags: as tags que se aplicam a todo o espaço de design da família. Presente somente mediante solicitação (veja abaixo).
Ao combinar as informações de cada família, é fácil criar uma solicitação da API Fonts. Por exemplo, supondo que temos uma referência ao objeto da família para 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('');
[...]
Classificação
Por padrão, a lista de famílias é retornada sem uma ordem específica. No entanto, é possível classificar a lista usando o parâmetro "sort":
https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity
Os valores de classificação possíveis são:
- alfa: ordenar a lista em ordem alfabética
- date: ordena a lista por data de adição (a fonte mais recente adicionada ou atualizada primeiro)
- popularidade: ordena a lista por popularidade (primeiro a família mais popular)
- estilo: ordene a lista pelo número de estilos disponíveis (família com mais estilos primeiro)
- Em alta: ordena a lista por famílias que estão aumentando o uso (a família com o maior crescimento aparece primeiro)
Filtragem
Consultar uma família específica
https://www.googleapis.com/webfonts/v1/webfonts?family=family_name
Todas as famílias que oferecem suporte ao subconjunto grego
https://www.googleapis.com/webfonts/v1/webfonts?subset=subset_name
Filtrar por categoria de fonte
https://www.googleapis.com/webfonts/v1/webfonts?category=category_name
Otimização
Para recuperar arquivos de fonte compactados no formato woff2
https://www.googleapis.com/webfonts/v1/webfonts?capability=WOFF2
Fontes variáveis
As fontes variáveis oferecem intervalos contínuos de estilos. Por padrão, uma combinação de arquivos de fontes estáticas é retornada para fontes variáveis instanciadas em posições padrão.
Se capability=VF estiver definido, o arquivo de fonte variável será retornado em vez de estático
junto com os metadados de intervalo de eixos disponíveis. Exemplo:
https://www.googleapis.com/webfonts/v1/webfonts?capability=VF
Exemplo de resposta:
{
"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
Se capability=FAMILY_TAGS estiver definido, o campo "tags" será preenchido com todas as tags relacionadas a todo o espaço de design da família.
Exemplo de amostra:
{
"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,
}
]
},
[...]
]
}
Especificação de URL da API
webfonts?key=<your_key>[&family=<family>][&subset=<subset>][&capability=<capability>...][&sort=<sort>]
your_key: sua chave de API de desenvolvedor.
family: nome de uma família tipográfica.
subset: nome de um subconjunto de fontes.
category: serif | sans-serif | monospace | display | handwriting
capability: VF | WOFF2.
sort: alpha | date | popularity | style | trending.