API do desenvolvedor

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 chave

Ou 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.