開發人員 API 可存取 Google Fonts 提供的所有字型系列中繼資料。應用程式可藉此向 Google 字型查詢可用的字型系列。REST API 會以 JSON 格式提供資料,包括每個字型系列中的樣式和指令碼 (在 Google 字體中稱為子集)。API 可依字母順序、新增日期、樣式數量、趨勢或熱門程度排序字型系列清單。
觀眾
本文適用對象為網站和應用程式開發人員。使用 Developer 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 Fonts Developer API 發出要求時,都必須包含 API 金鑰,藉此識別自己。
取得並使用 API 金鑰
取得金鑰取得 API 金鑰後,您的應用程式可以將查詢參數 key=yourAPIKey 附加到所有的要求網址。
API 金鑰可以安全地嵌入網址中,不需任何編碼。
詳細資料
JSON 回應 (請參閱上方的範例) 由名為「items」的陣列組成,其中包含各字型系列的資訊物件。
家庭群組物件包含下列欄位:
- 種類:物件種類,即網頁字型物件
- family:家庭的名稱
- 子集:系列支援的指令碼清單
- 選單:家庭子集的網址,只涵蓋家庭名稱。
- 變體:字型系列可用的不同樣式
- 版本:字型系列版本。
- axes:軸範圍,僅在要求時顯示 (請參閱下文),適用於可變字型。
- lastModified:字型系列上次修改的日期 (格式為「yyyy-MM-dd」)。
- 檔案:每個可用變體的字型系列檔案 (包含所有支援的指令碼)。
- color_capabilities:這個系列支援的色彩格式 (如有)
- 標籤:適用於這個家庭整個設計空間的標籤。僅在要求時出示 (詳情請參閱下文)。
只要將每個系列的資訊合併,就能輕鬆建立 Fonts 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('');
[...]
排序
根據預設,系統會傳回不按特定順序排列的家庭群組清單。不過,您可以使用排序參數來排序清單:
https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity
可能的排序值包括:
- alpha:依字母順序排序清單
- 日期:依新增日期排序清單 (先顯示最近新增或更新的字型)
- 熱門程度:依熱門程度排序清單 (最熱門的家庭優先)
- 樣式:依可用樣式數量排序清單 (樣式最多的字型系列排在最前面)
- 熱門:依使用量成長幅度排序清單 (成長幅度最大的家庭會排在最前面)
篩選
查詢特定家庭
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,
}
]
},
[...]
]
}
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。