【知らなきゃ損!】CSSの@font-feature-values.font-displayでフォント読み込みを高速化


"@font-feature-values.font-display" は、CSS の @font-feature-values at-rule の一部であり、ウェブフォントの読み込みと表示方法を制御するためのプロパティです。これは "Miscellaneous" カテゴリに属し、フォント機能の表示方法をより詳細に制御する機能を提供します。

詳細解説

"@font-feature-values.font-display" は、以下の値を使用して、フォントの読み込みと表示のタイミングを指定できます。

  • auto
    ブラウザのデフォルトの動作を使用します。(多くの場合、swap)
  • optional
    ウェブフォントが読み込まれた場合にのみ、フォールバックフォントを使用します。
  • fallback
    ウェブフォントが読み込まれない場合にのみ、フォールバックフォントを使用します。
  • block
    ウェブフォントが読み込まれるまで、フォールバックフォントを使用します。
  • swap
    最初に利用可能なフォールバックフォントを使用し、ウェブフォントが読み込まれたら置き換えます。

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: swap;
}

この例では、'MyFont' というフォントファミリーが定義されています。フォントファイルは、まずローカルストレージから読み込まれ、次に woff2 形式、最後に woff 形式で読み込まれます。font-display プロパティは swap に設定されているため、ウェブフォントが読み込まれるまで、利用可能な最初のフォールバックフォントが使用されます。

"@font-feature-values.font-display" の利点

"@font-feature-values.font-display" を使用すると、以下の利点が得られます。

  • ユーザーエクスペリエンスを向上
    フォントの読み込みによるちらつきを減らすことで、ユーザーエクスペリエンスを向上させることができます。
  • コンテンツの表示を改善
    ウェブフォントが読み込まれるまで、フォールバックフォントを使用してコンテンツを滑らかに表示できます。
  • フォントの読み込み時間を短縮
    ウェブフォントが読み込まれる前にフォールバックフォントを使用することで、ページの読み込み時間を短縮できます。

"@font-feature-values.font-display" の注意点

"@font-feature-values.font-display" を使用するには、以下の点に注意する必要があります。

  • 複雑なフォント設定を使用している場合は、このプロパティを使用する前に慎重にテストする必要があります。
  • すべてのフォントで "font-feature-values.font-display" がサポートされているわけではありません。
  • このプロパティは比較的新しい機能であり、すべてのブラウザで完全にサポートされているわけではありません。


例 1:フォントの読み込みを高速化

この例では、フォールバックフォントを最初に表示し、ウェブフォントが読み込まれたら置き換えることで、フォントの読み込みを高速化する方法を示します。

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: swap;
}

例 2:フォントのちらつきを回避

この例では、ウェブフォントが読み込まれるまでフォールバックフォントを使用することで、フォントのちらつきを回避する方法を示します。

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: block;
}

例 3:フォールバックフォントの使用を制限

この例では、ウェブフォントが読み込まれない場合にのみフォールバックフォントを使用する方法を示します。

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: fallback;
}

例 4:オプションフォールバックフォントの使用

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: optional;
}

例 5:ブラウザのデフォルト動作を使用

この例では、ブラウザのデフォルトの動作を使用する方法を示します。多くのブラウザでは、これは swap 値と同等です。

@font-feature-values {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-display: auto;
}

これらの例は、"@font-feature-values.font-display" プロパティの基本的な使用方法を示しています。このプロパティを使用して、フォントの読み込みと表示をより詳細に制御することができます。

  • font-feature-values は、OpenType フォントのみを対象としています。
  • 複数のフォントフェースを定義する場合は、各フェースで font-feature-values を個別に設定できます。


"@font-feature-values.font-display" は、CSS の比較的新しい機能であり、すべてのブラウザで完全にサポートされているわけではありません。また、すべてのフォントでサポートされているわけではありません。そのため、このプロパティの代替方法を検討することが重要です。

代替方法

"@font-feature-values.font-display" の代替方法はいくつかあります。

  • Webフォントのフォールバック
    ウェブフォントが読み込まれない場合に使用するフォールバックフォントを指定できます。これにより、フォントのちらつきを回避できますが、フォント機能の制御はできません。
  • font-style プロパティ
    このプロパティを使用して、フォントのスタイル (例: イタリック、太字) を設定できます。これにより、フォントの読み込みを高速化できますが、フォント機能の制御はできません。
  • font-weight プロパティ
    このプロパティを使用して、フォントの太さを設定できます。これにより、フォントの読み込みを高速化できますが、フォント機能の制御はできません。
  • font-variant プロパティ
    このプロパティを使用して、特定の OpenType 機能を有効または無効にすることができます。ただし、"@font-feature-values.font-display" ほど詳細な制御はできません。

以下の例は、"@font-feature-values.font-display" の代替方法を示しています。

例 1:font-variant プロパティを使用する

この例では、font-variant-ligatures プロパティを使用して、標準リガチャーを有効にする方法を示します。

@font-face {
  font-family: 'MyFont';
  src: local('MyFontRegular'),
       url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-variant-ligatures: on;
}

例 2:font-weight プロパティを使用する

この例では、font-weight プロパティを使用して、太字フォントを指定する方法を示します。

@font-face {
  font-family: 'MyFont';
  src: local('MyFontBold'),
       url('MyFontBold.woff2') format('woff2'),
       url('MyFontBold.woff') format('woff');
  font-weight: 700;
}

例 3:font-style プロパティを使用する

この例では、font-style プロパティを使用して、イタリックフォントを指定する方法を示します。

@font-face {
  font-family: 'MyFontItalic';
  src: local('MyFontItalic'),
       url('MyFontItalic.woff2') format('woff2'),
       url('MyFontItalic.woff') format('woff');
  font-style: italic;
}

例 4:Webフォントのフォールバックを使用する

この例では、ウェブフォントが読み込まれない場合に使用するフォールバックフォントを指定する方法を示します。

@font-face {
  font-family: 'MyFont';
  src: url('MyFontRegular.woff2') format('woff2'),
       url('MyFontRegular.woff') format('woff');
  font-family: Arial, sans-serif; /* フォールバックフォント */
}