字型通常是大型檔案,載入時間較慢。部分瀏覽器會在字型載入前隱藏文字,導致閃現不可見文字 (FOIT)。
Lighthouse 字體顯示稽核失敗的原因
Lighthouse 會標示任何可能閃爍顯示隱藏文字的字型網址:
如何避免顯示不可見的文字
font-display
API 會指出在 font-face
樣式中使用字型時,字型會如何顯示。如果自訂字型尚未就緒,下列 font-display
值會指示瀏覽器使用系統字型:
swap
optional
fallback
CSS 範例
@font-face {
font-family: 'Pacifico';
font-style: normal;
font-weight: 400;
src: local('Pacifico Regular'), local('Pacifico-Regular'),
url(https://fonts.gstatic.com/s/pacifico/v12/FwZY7-Qmy14u9lezJ-6H6MmBp0u-.woff2)
format('woff2');
font-display: swap;
}
Google 字型範例
在 Google 字體網址結尾加上 &display=swap
/&display=optional
/&display=fallback
參數:
<link
href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap"
rel="stylesheet"
/>
如何避免因延遲字型造成的版面配置轉移
暫時顯示系統字型,系統會將 FOIT 替換為閃爍的無樣式文字 (FOUT)。這麼做可提早算繪內容,進而改善 FCP 和 LCP,但當自訂字型取代臨時系統字型時,FOIT 和 FOUT 都會對 CLS 造成相同的影響。
您可以搭配 font-display: optional
使用預先載入功能,藉此降低字型載入作業對 CLS 的影響。不過,過度使用預先載入功能可能會對載入指標造成負面影響。建議您執行 A/B 版本測試,確保預先載入字型不會導致任何效能回退。
堆疊專屬指南
Drupal
在主題中定義自訂字型時,指定 @font-display
。
Magento
定義自訂字型時,請指定 @font-display
。