フォント読み込みとCLS — Webフォントによるレイアウトシフトの防止

Webフォント読み込みによるCumulative Layout Shiftを防止します。FOUT、FOIT、font-display戦略、size-adjust、フォントプリロード技術を学びます。

Optimization

詳細な説明

Webフォントがレイアウトシフトを引き起こす仕組み

Webフォントは一般的なCLSの原因です。Webフォントが読み込まれてフォールバックのシステムフォントを置き換えるとき、2つのフォントのメトリクス(文字幅、行高、間隔)が異なるためテキストがリフローします。

FOUTとFOIT

  • FOUT(スタイルなしテキストのフラッシュ):フォールバックフォントでテキストがレンダリングされ、Webフォントの読み込み時にスワップ — 目に見えるレイアウトシフトが発生
  • FOIT(非表示テキストのフラッシュ):Webフォントが読み込まれるまでテキストが非表示

font-display戦略

CLSの最適化には、font-display: optionalが最適です。目に見えるフォントスワップが発生しません。

CSS size-adjustとオーバーライドプロパティ

@font-face {
  font-family: "Adjusted Arial";
  src: local("Arial");
  size-adjust: 105.4%;
  ascent-override: 92%;
  descent-override: 22%;
}

next/fontやFontaineなどのツールがこれらの調整を自動的に計算します。

フォントのプリロード

<link rel="preload" href="/fonts/custom.woff2" as="font" type="font/woff2" crossorigin>

crossorigin属性は、同一オリジンのフォントであってもフォントプリロードに必須です。

ユースケース

フォント読み込みの最適化は、カスタムWebフォントを使用するすべてのウェブサイトに影響します。ブログやコンテンツサイト、マーケティングページ、特定のタイポグラフィに依存するブランド重視のサイトが特に影響を受けます。

試してみる — Web Vitals Reference

フルツールを開く