開發人員 API

開發人員 API 可讓您存取 Google Fonts 提供的所有字型系列的中繼資料。這可讓應用程式查詢 Google Fonts 的字型系列。REST API 會以 JSON 格式提供資料,其中包含每個字型系列中的樣式和腳本 (在 Google 字型中稱為子集)。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 識別您的應用程式

每當應用程式傳送要求至 Google 字型開發人員 API 時,都必須在每個要求中加入 API 金鑰,以便識別自身。

取得並使用 API 金鑰

取得金鑰

或者,您也可以在「憑證」頁面中建立一個。

取得 API 金鑰後,您的應用程式可以將查詢參數 key=yourAPIKey 附加到所有要求網址。

API 金鑰可以安全地嵌入網址中,不需任何編碼。

詳細資料

JSON 回應 (請參閱上述範例) 由名為「items」的陣列組成,其中包含包含每個字型系列資訊的物件。

家庭物件由下列欄位組成:

  • kind:物件類型,即網頁字型物件
  • family:系列名稱
  • 子集:家族支援的腳本清單
  • menu:家庭子集的網址,僅包含家庭名稱。
  • variants:可供系列使用的不同樣式
  • version:字型系列版本。
  • 軸:軸範圍,僅在變數字型的要求下顯示(請參閱下方說明)。
  • lastModified:上次修改字型系列的日期 (格式為「yyyy-MM-dd」)。
  • 檔案:每個可用的變化版本的字型系列檔案 (含所有支援的字元集)。

只要將每個字型系列的資訊合併,就能輕鬆建立 Fonts API 要求。舉例來說,假設我們有 Anonymous Pro 的 family 物件參照:

[...]

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('');

[...]

排序

根據預設,系統會以無特定順序傳回家族清單。不過,您可以使用排序參數來排序清單:

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

可用的排序值如下:

  • alpha:依字母順序排列清單
  • date:依新增日期排序 (先顯示最近新增或更新的字型)
  • popularity:依熱門程度排序 (最熱門的家庭優先)
  • style:依可用的樣式數量排序 (先列出含有最多樣式的系列)
  • 趨勢:依使用量成長率排序 (先顯示成長幅度最大的家庭)

篩選

查詢特定家庭

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

API 網址規格

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

your_key:您的開發人員 API 金鑰。

family:字型系列名稱。

subset:字型子集的名稱。

categoryserif | sans-serif | monospace | display | handwriting

capabilityVF | WOFF2

sortalpha | date | popularity | style | trending