ホームページ >ウェブフロントエンド >CSSチュートリアル >css font-display:Web上でのフォントレンダリングの未来

css font-display:Web上でのフォントレンダリングの未来

Jennifer Aniston
Jennifer Anistonオリジナル
2025-02-16 08:49:17432ブラウズ

css font-display:Web上でのフォントレンダリングの未来

キーテイクアウト

  • CSS Font-Display Decruptorは、ユーザーエクスペリエンスと知覚されたパフォーマンスを向上させることを目的とした、読み込み中にフォントの表示方法を開発者に制御できるようにします。
  • 記述子は @font-face at-rule内で動作し、自動、ブロック、スワップ、フォールバック、オプションの5つの可能な値を提供します。各値は、フォントの読み込みとレンダリングを処理するための異なる戦略を表します。
  • 記述子は、ブロック、スワップ、障害の3つの期間に分割されたタイムラインで動作します。開発者が明示的に割り当てることができないこれらの期間の期間は、ブラウザがテキストをどのようにレンダリングするかを決定します。
  • CSSフォントディスプレイ記述子はすべてのブラウザでまだ完全にはサポートされていませんが、フォントのレンダリング動作をWebで標準化する際の重要な前進を表しています。
  • Webフォントを使用する欠点の1つは、ユーザーのデバイスでフォントが使用できない場合、ダウンロードする必要があることです。これは、フォントが使用可能になる前に、ブラウザがそのフォントを使用するテキストブロックの表示を処理する方法を決定する必要があることを意味します。そして、それはユーザーエクスペリエンスや知覚されたパフォーマンスに大きな影響を与えない方法でそうする必要があります。
  • 時間の経過とともに、ブラウザはこの問題を軽減するためのいくつかの戦略を採用しています。しかし、彼らはさまざまな方法でこれを行い、これらの問題を克服するためにいくつかのテクニックと回避策を考案する必要がありました。
@font-face at-ruleのFont-display記述子を入力します。このCSS機能は、これらの動作を標準化し、開発者により多くの制御を提供する方法を紹介します。 Font-displayを使用して

Font-Displayが提供するさまざまな機能を詳細に見る前に、CSSで機能をどのように使用するかを簡単に検討しましょう。

まず、Font-displayはCSSプロパティではありませんが、イントロで述べたように、 @font-face at-ruleの記述子です。これは、次のコードに示されているように、 @font-faceルール内で使用する必要があることを意味します。

このスニペットでは、フォントSaira condensedのスワップ値を定義しています。 css font-display:Web上でのフォントレンダリングの未来利用可能なすべての値のキーワードは次のとおりです

auto

block

swap

フォールバック
<span><span>@font-face</span> {
</span>  <span>font-family: 'Saira Condensed';
</span>  <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2');
</span>  <span>font-display: swap;
</span><span>}</span>

optional

font-displayの初期値はautoです。
  • 後のセクションでは、これらのそれぞれの値を詳細に説明します。ただし、最初に、ブラウザがレンダリングするフォントを決定するために使用する期間を見てみましょう。各値について議論するときは、タイムラインのさまざまな側面と、これらが各値に対してどのように振る舞うかを説明します。

    フォントディスプレイタイムライン

    この機能の中核は、フォントディスプレイタイムラインの概念です。フォントの読み込み時間は、その要求から始まり、その読み込みまたは障害が成功したことで終了するため、ブラウザがテキストをどのようにレンダリングするかを決定する3つの連続した期間に分割できます。これらの3つの期間は次のとおりです

    ブロック期間。この期間中、ブラウザはテキストを目に見えない
      フォールバックフォントでレンダリングします。要求されたフォントが正常にロードされた場合、テキストは要求されたフォントで再レンダリングされます。目に見えないフォールバックフォントは、テキストの空白のプレースホルダーとして機能します。これにより、再レンダリングが実行されるとレイアウトのシフトが削減されます
    • スワップ期間。目的のフォントがまだ使用できない場合、フォールバックフォントが使用されますが、今回はテキストが表示されます。繰り返しますが、読み込みフォントが入っている場合、使用されます。 失敗期間。フォントが使用可能にならない場合、ブラウザはそれを待つことなく、現在のページ訪問の期間にフォールバックフォントとともにテキストが表示されます。これは必ずしもフォントの負荷が中止されていることを意味するわけではないことに注意してください。代わりに、ブラウザはそれを継続することを決定することができます。そうすれば、同じユーザーによる連続したページ訪問でフォントが使用できるようになります。
    • そのような期間の期間を調整すると、カスタムテキストレンダリング戦略を構成できます。特に、これらの期間はゼロに崩壊したり、インフィニティに拡張したりする可能性があります。次のセクションで説明します。
    • しかし、これらの期間は、開発者が明示的に割り当てることはできません。この可能性は、仕様の初期段階で調べられましたが、削除されました。代わりに、前のセクションで概説されているように、ユースケースの大部分を処理できる事前定義されたキーワード値のセットが提供されます。
    • これらの各キーワードがフォントの読み込みと表示プロセスをどのように管理するかを見てみましょう。
    font-display:auto

    この値は、ブラウザがブラウザによって選択されたデフォルトのフォントディスプレイ動作を採用するようにブラウザに指示します。多くの場合、この戦略は次の値、ブロックに似ています。

    font-display:block

    この値では、短いブロック期間(仕様は3秒の期間を推奨)の後、スワップ期間は無限に拡張されます。これは、この状況で失敗期間がないことを意味します。

    ブラウザが要求されたフォントを一時的に待機している間、目に見えないフォールバックフォントでテキストをレンダリングします。その後、フォントがまだ使用できない場合、フォールバックフォントが表示されます。そして、ダウンロードが完了するたびに、ブラウザは必要なフォントでテキストを再レンダリングします。

    次のビデオでこの動作を見ることができます。これは、その見出しに特定のWebフォントを組み込んだ簡単なテストページを使用します。

    ページのロードの先頭で、見出しは見えませんが、それはdomにあります。約3秒後、フォントがまだ使用できない場合、テキストはフォールバックフォントで表示されます。ビデオデモでは、Chrome Devtoolsのネットワークスロットリング機能を使用して、ネットワーク条件が不十分です。最後に、フォントがなんとかダウンロードしたとき、見出しはそれで再レンダリングされます。

    font-display:swap

    この値を使用すると、ブロック期間は0に崩壊し、スワップ期間は無限に拡張されます。したがって、ここでも、失敗期間がありません。

    言い換えれば、ブラウザはフォントを待つのではなく、代わりにフォールバックフォントでテキストをすぐにレンダリングします。次に、フォントが使用可能になるたびに、テキストはそれで再レンダリングされます。

    これを確認しましょう:

    https://uploads.sitepoint.com/wp-content/uploads/2017/09/1508342017fontdisplay02.mp4


    これは、失敗期間を組み込んだ最初の値です。非常に短いブロック期間(100ミリ秒をお勧めします)の後、スワップ期間は短い期間になります(3秒が推奨されます)。その結果、この期間の終わりに要求されたフォントが準備ができていない場合、テキストはページ訪問期間中にフォールバックフォントを使用して表示されます。これにより、ユーザーエクスペリエンスに耳を傾ける可能性のあるレイアウトシフトが遅れてページ訪問者を邪魔することができません。

    以下のこの最初のビデオでは、6秒以上後にフォントがロードされるため、次のことを決して交換しません。

    https://uploads.sitepoint.com/wp-content/uploads/2017/09/1508342067fontdisplay03.mp4

    次のビデオでは、スワップ期間のタイムアウトが始まる前にフォントの読み込みが速くなるため、フォントは予想どおりに使用されます。

    font-display:optional

    仕様を最初に読んだとき、フォントディスプレイ戦略に割り当てられた名前がそれほど明確ではないことがわかりました。これは、仕様自体でも指摘されています。これは、各戦略の意図された使用をよりよく示し、次の代替案を提案するSPEC使用名の将来のバージョンを示唆しています。

      ブロックが必要です
    • にとって重要です フォールバックよりも
    • 望ましい
    • しかし、オプションの値は変更されていないと予想されます。実際、この価値は、それがトリガーする行動の本質をうまく捉えています。この場合、フォントはページのレンダリングに対してオプションと見なされ、基本的にブラウザを通知します。
    フォントが既に使用可能な場合は、それを使用してください。フォントは、将来のページ訪問で使用する準備ができています

    この値を使用すると、フォントディスプレイのタイムラインには短いブロック期間があります(繰り返しますが、仕様は100ミリ秒の時間間隔を推奨します)とゼロ期スワップ期間があります。したがって、故障期間はすぐにブロック期間に続きます。つまり、フォントが容易に利用できない場合、ページ訪問期間中は使用されません。しかし、最終的にフォントをバックグラウンドで完全にダウンロードできるため、将来のページのロードで即時レンダリングできるようになります。 しかし、特にネットワーク条件が低い下で、ユーザーエージェントはフォントのダウンロードを自由に中止したり、開始したりしないことをここで指摘する必要があります。これは、ネットワーク接続の品質に不必要に影響を与えないようにしています。したがって、サイトはまだ使用可能ですが、フォントは将来のページのロードですぐに使用できません。

    以下のビデオでは、テストページがネットワークをスロットすることなく読み込まれています。フォントはすぐにダウンロードされますが、短いブロック期間後にのみ、テキストはすべての訪問期間中にフォールバックフォントで表示されます。

    https://uploads.sitepoint.com/wp-content/uploads/2017/09/1508342072fontdisplay05.mp4

    次のビデオでは、ページは同じネットワーク条件の下でリロードされていますが、今回はキャッシュを有効にして、2回目の訪問をシミュレートします。


    そして、あなたがそれを持っているので、見出しは今では望ましいWebフォントでレンダリングします。

    先に進む前に、フォールバックとオプションの値を使用するときにブロック期間に推奨される約100ミリ秒の非常に短い期間に注意してください。これは、フォールバックフォントを使用する前に、クイックロードフォントの短い期間(またはキャッシュからのロード)を表示するために、したがって「非スタイルのテキストのフラッシュ」またはFOUTを回避するためです。

    私は、オプションと同じ短い間隔を使用する代わりに、Font-Display:Swapを使用するときに、ブロック期間がゼロになる理由を実際に疑問に思いました。スペックのGitHubリポジトリには、「スワップ」に他の「小さなブロック期間」を使用させるようにするためのオープンな問題があります。 フォールバックフォントについて

    上記の議論では、何度かフォールバックフォントについて言及しました。しかし、これはどこから来るのでしょうか?

    フォールバックフォントは、問題の要素上のフォントファミリープロパティを使用して定義されたフォントスタックに存在する最初の使用可能なフォントです。 たとえば、テストページでは、見出しのフォントファミリー値は次のとおりです。

    これは、たとえば、レンダリングされたフォントとしてArialを使用するWindowsマシンで、検証することができます(オプションについては上記のビデオを参照)。

    サポート

    フォントディスプレイの記述子のサポートを作成する時点では、次のように見えます。

    <span><span>@font-face</span> {
    </span>  <span>font-family: 'Saira Condensed';
    </span>  <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2');
    </span>  <span>font-display: swap;
    </span><span>}</span>
    Chromeはバージョン60

    以来それをサポートしています

    オペラは、バージョン47

    以来それをサポートしています

    Firefoxの開発中で、バージョン46以来旗の後ろに入手できます。 Microsoft Edgeがいつでもそれをサポートすることを兆候はまだありません。 Microsoft Edge Developerフィードバックサイトには、この機能の実装に投票することができるチケットがあります。
    • 最新のサポート情報については、caniuse.comを参照してください。
    • 上記のように、それはCSSプロパティではなくフォント記述子であるため、Font-Displayサポートを機能クエリでテストできないことに注意する価値があります。このgithub号では、この機能を適切に検出する方法についての議論があります。
    • フォントディスプレイがサポートされていないことが検出されたら、いくつかのフォールバック戦略が可能ですが、これはこの記事の範囲です。この記事では、Zach Leathermanによるフォント読み込み戦略に関する包括的なガイドが、利用可能なソリューションの徹底的な調査を提示します。 Googleフォントでの使用
    • デモページで使用されているフォントがGoogleフォントからのものであることに気付いたかもしれませんが、通常の方法ではロードされていません。つまり、フォントプロバイダーが提供するスタイルシートにリンクしています。代わりに、そのstyleSheetにあるフォントのURLをコピーして、そのURLをカスタム @font-faceルールで使用しました。使用法セクションで見られるように、フォントフェイスルール内でフォントディスプレイを指定する必要があるため、これを行う必要がありました。
    • より良い、より多くのGoogleフォントに優しい方法はありますか? Googleフォントやその他のサードパーティのフォントファウンドリーは、フォントディスプレイをサポートしますか?

      これについて説明したGoogle Fonts Github Repoには、オープンな問題があります。この機能に興味を示すために1を追加してください!

      また、

      また、CSSフォントモジュールレベル4が、 @font-feature-valuesの記述子としてのフォントディスプレイの使用を提案して、開発者が @font-faceルールのディスプレイポリシーを設定できるようにすることに言及する価値があります。彼らの制御の直下。しかし、これはまだユーザーエージェントによって実装されていません。

      最後の単語

      これにより、フォントディスプレイ記述子のまともな概要と、この機能がフォントレンダリングの強い未来を予測することを願っています。

      この記事では、Font-Displayによって実装されたさまざまな戦略の特定のユースケースについては議論していませんが、仕様はいくつかの明確な例を備えたユースケースを示しています。したがって、私がここで取り上げた基本に加えて、私が参照したリソースをもっと見る必要があります。 CSSフォントディスプレイとWebフォントレンダリングに関するよくある質問(FAQ)

      CSSフォントディスプレイプロパティとは何ですか?なぜ重要なのか?まだ読み込まれています。このプロパティは、ウェブサイト上のユーザーエクスペリエンスに大きな影響を与えるため、重要です。フォントがロードに時間がかかりすぎると、テキストのレンダリングが遅れ、目に見えないテキストのFlash(FOIT)またはスタイルのないテキストのフラッシュ(FOUT)として知られる現象につながる可能性があります。 Font-Displayプロパティを使用することにより、開発者はこの動作を制御し、ユーザーエクスペリエンス全体を改善できます。

      CSS Font-Displayプロパティはどのように機能しますか?フォントが読み込まれているときとロードに失敗したときに、フォントがどのように動作するかを決定する一連のルールを提供します。 「自動」、「ブロック」、「スワップ」、「フォールバック」、「オプション」など、いくつかの値を受け入れます。これらの各値は異なる読み込み戦略を表し、開発者にニーズに最適なものを選択する柔軟性を与えます。ディスプレイ値は、異なるフォントロード戦略を表します。 「Auto」は、読み込み動作をブラウザに残します。 「ブロック」は、フォントに短いブロック期間と無限のスワップ期間を与えます。 「スワップ」は、フォントにゼロ秒ブロック期間と無限のスワップ期間を与えます。 「フォールバック」は、フォントに非常に短いブロック期間と短いスワップ期間を与えます。 「オプション」は、フォントにゼロ秒ブロック期間とゼロ秒スワップ期間を与えます。

      コードでCSS font-displayプロパティを使用するにはどうすればよいですか?

      コードにCSS font-displayプロパティを使用するには、 @font-faceルールに含める必要があります。例は次のとおりです。

      @font-face {
      font-family: 'myfont';
      src:url( 'myfont.woff2')format( 'woff2');
      font -display:swap;
      }
      この例では、font-displayプロパティは「スワップ」に設定されています。つまり、「myfont」が利用できない場合は、フォールバックフォントでテキストがすぐに表示されます。 >

      CSSフォントディスプレイプロパティがWebサイトのパフォーマンスに与える影響は何ですか?

      CSS Font-Displayプロパティは、Webサイトのパフォーマンスに大きな影響を与える可能性があります。読み込みプロセス中にフォントが表示される方法を制御することにより、テキストレンダリングの遅延を防ぐのに役立ち、それによりウェブサイトの認知された読み込み速度が改善されます。また、フォントが遅くなることによって引き起こされるレイアウトシフトを回避し、よりスムーズなユーザーエクスペリエンスにつながるのに役立ちます。 fout)?

      CSS font-displayプロパティは、FOITとFOUTの問題に直接対処します。開発者がフォントの読み込み動作を制御できるようにすることにより、読み込みプロセス中にテキストが見えなくなったり、スタイルを整えたりするのを防ぐことができます。たとえば、Font-Displayプロパティを「スワップ」に設定すると、フォールバックフォントでテキストをすぐに表示することでFOITを排除できます。 🎜> CSS Font-Displayプロパティを使用するためのいくつかのベストプラクティスには、ニーズに基づいて適切な値を選択し、さまざまなブラウザーとネットワーク条件で読み込み動作をテストすることが含まれます。また、レイアウトシフトを最小限に抑えるためにカスタムフォントのメトリックに密接に一致するフォールバックフォントを使用することもお勧めします。

      はい、サードパーティサービスでホストされているWebフォントを備えたCSS Font-Displayプロパティを使用できます。ただし、すべてのサービスがこの機能をサポートしているわけではないことに注意することが重要です。詳細については、ドキュメントをチェックするか、サービスプロバイダーに連絡してください。

      CSS Font-Displayプロパティを使用することに制限や欠点はありますか?表示プロパティは、すべてのブラウザで完全にサポートされていないことです。たとえば、Internet Explorerや他のブラウザのいくつかの古いバージョンは、この機能をサポートしていません。さらに、「オプションの」値により、カスタムフォントが完全にスキップされる場合があり、ウェブサイトの視覚的な一貫性に影響する可能性があります。

      CSSフォントディスプレイプロパティは、包括的なWebパフォーマンス戦略にどのように適合しますか?

      CSS Font-Displayプロパティは、包括的なWebパフォーマンス戦略の1つのツールにすぎません。知覚された負荷速度を改善し、レイアウトシフトを防ぐことができますが、CSSやJavaScriptファイルのサイズを最小限に抑え、画像の最適化、コンテンツ配信ネットワーク(CDN)の使用など、他のパフォーマンス最適化手法と組み合わせて使用​​する必要があります。 。

以上がcss font-display:Web上でのフォントレンダリングの未来の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。