提供快速精美網路字型的 API

如何使用 Google Fonts CSS API 有效率地提供網路字型。

多年以來,網頁字體技術發生了許多變化。過去,這項做法只適用於特定情況,需要使用文字圖片或 Flash 外掛程式 (這會影響網站的搜尋引擎最佳化),但現在已成為網路上的標準做法。過去,您必須在網頁載入前載入整個字型,包括您可能未使用的樣式和字元,但這項做法已成為過去式。

Google Fonts CSS API 也隨著網路字型技術的變化而不斷演進。這個 API 的價值主張已從最初的「讓瀏覽器在所有使用 API 的網站中快取常用的字型,加快網頁載入速度」進化到現在。這點不再正確,但 API 仍提供額外且重要的最佳化功能,讓網站能快速載入,字型也能正常運作。

使用 Google Fonts CSS API 時,網站只能要求將 CSS 載入時間降到最短所需的字型資料,確保網站訪客能夠盡快載入內容。API 會針對每個要求,回應該網路瀏覽器的最佳字型。

您只需要在程式碼中加入一行 HTML 程式碼即可。

Google Fonts CSS API 說明文件總結如下:

您不需要進行任何程式設計,只要在 HTML 文件中加入特殊樣式表連結,然後在 CSS 樣式中參照字型即可。

您至少需要在 HTML 中加入一行程式碼,如下所示:

<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap" rel="stylesheet" />

從 API 要求字型時,您可以指定要使用的字型系列,以及選用的字型粗細、樣式、子集和其他選項。接著,API 會以下列其中一種方式處理您的要求:

  1. 如果您的要求使用 API 已提供檔案的常見參數,API 會立即將 CSS 傳回給使用者,並引導他們前往這些檔案。
  2. 如果您要求的字型參數目前未在 API 快取中,API 會使用 HarfBuzz 快速執行字型子集作業,並傳回指向這些字型的 CSS。

字型檔案可以很大,但不一定

網路字型可能會很大,在 WOFF2 中,單一 Noto Sans Japanese 字型重量就將近 3.4 MB,如果每位使用者都下載這個字型,網頁載入時間就會變慢。每當每一毫秒都很重要,且每個位元組都珍貴時,請確保您只載入使用者需要的資料。

Google Fonts CSS API 可即時產生非常小的字型檔案 (稱為子集),只為使用者提供網站所需的文字和樣式。您可以使用 text 參數要求特定字元,而不是顯示整個字型。

<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap&text=RobtMn" rel="stylesheet" />

圖表顯示基本拉丁文、基本希臘文和擴充希臘文的字元數。

CSS API 也會自動為使用者提供其他網頁字型最佳化功能,不需任何 API 參數。API 會為使用者提供已啟用 unicode-range 的 CSS 檔案 (如果網頁瀏覽器支援),讓他們只為網站需要的特定字元載入字型。

如今,Unicode 範圍 CSS 描述符是可用來對抗大型字型下載作業的工具之一。這個 CSS 屬性會設定 @font-face 宣告所包含的萬國碼字元範圍。如果網頁上顯示其中一個字元,系統就會下載該字型的字型。這項功能適用於所有語言,因此您可以使用包含拉丁、希臘或斯拉夫字元的字型,並製作較小的子集。在上圖中,您可以發現,如果必須載入這三個字元集,就會超過 600 個字符。

一張圖表,顯示基本拉丁文、擴充拉丁文、韓文和日文的字元數。

這也能讓網頁支援中文、日文和韓文 (CJK) 字體。在上述圖表中,您可以看到 CJK 字型涵蓋拉丁字元字型的 15-20 倍。這些字型通常很大,而且這些語言的許多字元不如其他語言的字元那麼常用。

使用 CSS API 和 Unicode 範圍,可將檔案傳輸量減少 約 90%。您可以使用 unicode-range 描述元,分別定義各個部分,且只有在內容包含這些字元範圍中的其中一個字元時,才會下載每個切片。

範例:如果您只想在 Noto Sans JP 中設定「こんにちは」這個字詞,可以採取以下做法:

  • 自行代管 WOFF2 檔案。
  • 使用 CSS API 擷取 WOFF2。
  • 使用 CSS API,並將 text= 參數設為「こんにちは」。

比較不同方法下載 Noto Sans JP 的圖表。

在這個範例中,您可以看到使用 CSS API 後,相較於自行代管 WOFF2 字型,您已經節省了 97.5%。這是因為 API 內建支援將大型字型分割為萬國碼範圍。進一步指定要顯示的文字,即可進一步縮小字型大小,讓字型大小僅為 CSS API 字型的 95.3%,比自架字型小 99.9%。

Google 字型 CSS API 會自動以使用者瀏覽器支援的格式提供字型,且格式會盡可能縮小且相容。如果使用者使用支援 WOFF2 的瀏覽器,API 就會以 WOFF2 格式提供字型,但如果使用者使用舊版瀏覽器,API 就會以該瀏覽器支援的格式提供字型。為減少每位使用者的檔案大小,API 也會在不需要時從字型中移除資料。舉例來說,如果使用者的瀏覽器不需要提示資料,系統就會移除這些資料。

使用 Google Fonts CSS API 讓網頁字型與時俱進

Google 字型團隊也致力於推動新的 W3C 標準,持續開發創新的網路字型技術,例如 WOFF2。目前的一個專案是逐步字型傳輸,可讓使用者在螢幕上使用字型檔案時,只載入極少的字型檔案,並視需要串流傳輸其餘部分,超越萬國碼範圍的效能。當您使用我們的 Web Font API 時,會讓使用者在瀏覽器中取得這些基礎字型傳輸技術改善功能。

這就是字型 API 的優點:使用者不必更改網站,就能享有每項新技術的改善成果。新的網路字型格式?別擔心!是否支援新的瀏覽器或作業系統?我們已處理這個問題。因此,您可以專注於使用者和內容,而無須費心維護網頁字型。

變數字型支援內建

變數字型是一種字型檔案,可儲存多種,且 Google Fonts CSS API 新版本內含相關支援。您可以加入額外的變化軸,並使用字型更有彈性,但幾乎能將字型檔案放大兩倍。

在 CSS API 要求中提供更明確的資訊,Google 字型 CSS API 就只會提供網站所需的變數字型部分,以便減少使用者下載的大小。這樣一來,您就能在網頁中使用可變字型,而不會造成長時間的網頁載入時間。方法是指定軸上的單一值,或是指定範圍。您甚至可以在單一要求中指定多個軸和多個字型系列。這個 API 可彈性調整,以滿足您的需求。

易於實作,且經過最佳化處理

Google Fonts CSS API 可協助您提供以下字型:

  • 與網路瀏覽器的相容性更高。
  • 盡量小。
  • 快速送達。
  • 使用起來更方便。

如要進一步瞭解 Google Fonts,請前往 fonts.google.com。如要進一步瞭解 CSS API,請參閱 API 說明文件

特別銘謝

主頁橫幅由 leesehee 提供。