WordPress 字型載入優化:font-display 選擇與 Google Fonts 本地化實作

網站字型加載方式往往是被忽視的細節,卻直接影響訪客看到內容的速度。當你使用 Google Fonts 時,瀏覽器需要向 Google 的伺服器發起跨域請求,這不僅增加 HTTP 連線數,還可能延遲最大內容繪製(LCP)的觸發時刻。若你的 H1 標題或英雄區塊文字依賴外部字型,延遲就會直接傷害核心 Web 指標(Core Web Vitals)分數。本文將拆解字型渲染策略,以及將字型本地化後如何透過預載加速的實作思路。

Google Fonts 跨域請求對效能的實際衝擊

使用 Google Fonts 時,瀏覽器在遇到字型聲明後會發起外部請求,這個過程涉及 DNS 查詢、TCP 連線建立與 HTTPS 握手。即使在高速網路環境下,單筆跨域字型請求也會消耗 100~300ms。若你的頁面載入時已經有圖片、腳本、樣式表等多筆請求在排隊,字型檔案很可能成為最後一根稻草,推遲文字首次出現的時間點。

更關鍵的是,如果 LCP 元素(通常是網誌首圖或 H1 標題)使用了 Google Fonts 但尚未載入,瀏覽器會等待,導致 LCP 分數飆升。根據 2026 年的效能監測數據,自架字型相比 Google CDN 路徑平均快 100~300ms,在行動網路上落差更明顯。

字型渲染策略的四個選項

當瀏覽器下載自訂字型時,有一個時間軸問題:要立刻用預設字型顯示文字,還是先隱藏文字等字型載入?CSS 的 font-display 屬性就是用來控制這個決策的。理解四個值的差異,能幫你針對不同情景做出最佳選擇。

font-display: auto

這是未明確設定時的預設值,瀏覽器採用自己的策略,通常表現類似 block。行為不可預測,且在不同瀏覽器上可能有差異。除非有特殊需求,否則不建議依賴此值,應改為明確指定其他值。

font-display: block

瀏覽器會完全隱藏文字直到自訂字型載入,最多等待 3 秒。若超過時限字型仍未來,就降級為預設字型。這個策略保證最終呈現的是你想要的字型,代價是短時間內頁面出現空白——俗稱「看不見文字現象」(Flash of Invisible Text, FOIT)。適合品牌標誌或特殊視覺設計必須精確呈現的場景,但對一般內文會傷害使用者體驗。

font-display: swap

立刻用預設字型顯示文字,當自訂字型準備好後「無縫切換」。這是 2026 年 WordPress 社群的推薦做法,因為訪客能立刻讀到內容,視覺上只是看到一次短暫的字型切換(Flash of Unstyled Text, FOUT)。切換時間通常在幾百毫秒內,使用者感受不明顯,卻大幅改善了可讀性。

font-display: fallback

瀏覽器先用預設字型,但給自訂字型一個 100ms 的「短時間窗口」——若 100ms 內沒下來,就放棄等待用預設字型。這種策略適合網路較不穩定的場景(比如行動 4G),或者你接受「有時候字型可能載不來」的風險。

font-display: optional

更激進的版本,不開放無限切換窗口。字型來了最好,沒來就永遠用預設字型,完全不干擾使用者體驗。適合非核心視覺元素、網路環境不穩定的場景。

對比三種載入策略的實際效果

不同的 font-display 搭配不同的字型來源,會產生截然不同的使用體驗。下表以 LCP 分數、首次可讀時間、視覺過渡現象為評估軸線,幫助你快速判斷適合的組合。

策略組合 LCP 分數 首次可讀時間 視覺過渡 適用場景
Google CDN + swap 較差(300ms+) 輕微 FOUT 無特殊優化
Google CDN + block 最差(3s 等待) 最慢 FOIT(完全隱藏) 品牌標誌、特殊字型必須精確
本地自架 + swap 最佳 輕微 FOUT 推薦做法,日常內文
本地自架 + preload 最佳 最快 高優先順序 LCP 字型

字型本地化的實作概念

將 Google Fonts 改為本地自架,核心做法是下載字型檔案,存放在自己的伺服器上,然後修改 CSS 指向本機路徑。WordPress 6.5 之後內建了自動下載與自架機制,不需外掛即可做到。手動做法則是透過字型轉換工具,將字型從 Google 平台下載下來,上傳到主機的 /wp-content/fonts/ 資料夾,再用自訂 CSS 聲明新的 @font-face

本地自架的好處不只是速度。Google Fonts 涉及跨域請求與隱私法規(特別是歐盟 GDPR),將字型自架後不再向第三方發送訪客資訊,符合隱私合規。同時,你對字型的載入時機、格式、預載策略有完整控制權。

預載優化與關鍵字型優先序

當字型本地自架後,下一步是利用 <link rel="preload"> 標籤在關鍵字型上「打上優先權」,讓瀏覽器在解析頁面的早期階段就開始下載。這特別適合用在 LCP 元素——也就是頁面最大的可見文字,通常是你的首圖或 H1 標題所用的字型。

預載時不是盲目對所有字型都加,而是只對「造成效能瓶頸的那一個字型」預載。預載太多反而會搶走其他資源的頻寬。一般建議挑最重的字型(通常是 Bold 或 Medium 的拉丁字母子集),或者挑最早出現在首屏的字型。在 WordPress 裡,可以透過佈景主題的 functions.php 或客製化 wp_resource_hints 鉤子來新增預載指令。

使用 OMGF(自動優化 Google Fonts)或 WP Rocket 這類最佳化外掛,會自動偵測並新增最佳化的預載標籤,不需手動 CSS 調整。

優化成效的驗證與調整

套用這些優化後,用 Chrome DevTools 的 Network 頁籤觀察字型檔案的下載時機與大小。聚焦三個指標:首先是字型從發起請求到完全載入用了多少時間(目標在 200ms 以內),其次是字型檔案大小有沒有異常(拉丁字母子集通常在 30~80KB),再者是預載標籤有沒有真的生效(Preload 的優先權應該高於其他非關鍵資源)。

用 Google PageSpeed Insights 或 WebPageTest 跑 LCP 測試,對比優化前後的分數。若本地自架加預載後 LCP 分數還沒改善,問題可能不在字型本身,而在首屏圖片或伺服器回應延遲。這時候可以用效能火焰圖來定位真正的瓶頸。

本機自架字型、選擇適當的 font-display 值、對 LCP 關鍵字型預載,這三步組合起來就能有感地加快頁面載入。從跨域到本地、從被動等待到主動預載,是 WordPress 站長必做的效能調整。

相關文章
標籤: Core Web Vitals, font-display, Google Fonts 本地化, 字型載入, LCP 優化