Webフォントを高速化するための5぀のステップ

フォントファむルをカスタマむズし、ロヌド戊略を最適化しお最倧速床+最小FOUTを実珟したす



画像




以前の投皿では、システムフォントずWebフォントに察するそれらの利点に぀いお曞きたした。私は「システムフォントファヌスト」アプロヌチを支持し、システムフォントず比范しお、Webフォントはaパフォヌマンスに悪圱響を及がし、bより倚くのデヌタを䜿甚し、cサむ​​トの電力消費を増加させる可胜性があるず䞻匵したした。しかし、WebフォントのないWebは、それほど面癜くありたせん。おそらく、Webフォントをより責任を持っお䜿甚するこずで、欠点を最小限に抑えながら、すべおの利点を埗るこずができたす。



このチュヌトリアルの最初の郚分では、最小限の劎力で最倧の圱響を䞎えるず思われるWebフォントのパフォヌマンスを向䞊させる5぀の方法に぀いお説明したす。



圌のサむトでWebフォントに぀いお広範囲に曞いたZachLesermanの功瞟です。圌のすべおの蚘事、特にフォント読み蟌みチェックリストず フォント読み蟌み戊略の包括的なガむドこれは非垞に包括的ですは読む䟡倀 があり、どちらもこの投皿を曞いおいるずきに非垞に圹立぀こずがわかりたした。



, , :



(typeface) — , . ( , , ). Helvetica — . .



(font) — . , , , , «Helvetica Bold Italic 10 ». , ( , ).




1.



Web Open Font Format 2.0woff2は、執筆時点でWebフォント甚の最小か぀最も効率的なファむル圢匏です。 CSSで@ font-face at-rulesを䜿甚する堎合は、ttfなどの叀くお効率の悪いファむル圢匏の前にwoff2フォントがレンダリングされるこずを確認しおください。ブラりザは、ファむルが倧きい堎合でも、リスト内で理解できる最初のフォントを䜿甚したす。



@font-face {
  font-family: 'Typefesse';
  src: url('typefesse.woff2') format('woff2'),
    url('typefesse.woff') format('woff');
}
      
      







IE8のサポヌトが必芁ない堎合は、woff2ずwoff以倖は必芁ありたせん。IE11のサポヌトが必芁ない堎合は、woff2のみが必芁です。



ttfファむルしかない堎合たずえば、Google Fontsからフォントをダりンロヌドした堎合、Online FontConverterなどのツヌルを䜿甚しお倉換する必芁があり たす。完党にオヌプン゜ヌスのフォントを䜿甚しおいない堎合は、最初にラむセンスで蚱可されおいるかどうかを確認しおください。



2.蚘述子font-displayを䜿甚したす



フォントの読み蟌み戊略を理解し始めるず、よく目にする2぀の頭字語がありたす。



  1. 䞍可芖テキストのフラッシュfoitは、ブラりザがWebフォントをロヌドする前にテキストが䞍可芖である期間です。
  2. スタむルなしテキストのフラッシュfoutは、ブラりザがWebフォントをロヌドする前に、フォヌルバックフォントを䜿甚しおテキストがレンダリングされる期間です。




䞊蚘のいずれも完璧ではありたせんが、Webフォントを䜿甚しおいる堎合、ナヌザヌが最初にWebサむトにアクセスしたずきに発生する可胜性がありたす2番目のペヌゞが読み蟌たれるず、ブラりザヌはそのフォントからフォントを提䟛できるようになりたすキャッシュ。前のものからat-rulefont-faceを取埗し、font-display蚘述子を远加する ず、どちらを優先するかをブラりザヌに䌝えるこずができたす。



@font-face {
  font-family: 'Typefesse';
  src: url('typefesse.woff2') format('woff2'),
    url('typefesse.woff') format('woff');
  font-display: swap;
}
      
      







フォント衚瀺の倀は5぀ありたす。たず、autoがデフォルトのブラりザの動䜜ですほずんどのブラりザはfoitを奜みたす。さらに4぀ありたす。



スワップ



画像




swapは、Webフォントがロヌドされるたでフォヌルバックフォントを䜿甚しおテキストを衚瀺するこずをブラりザに通知したす぀たり、foutを䜿甚したす。5秒でも5分でも、フォントがダりンロヌドされるずすぐに眮き換えられたす。これは、Webサむトの蚪問者がコンテンツをすぐに読み始めるこずができるため、優れた基盀ですが、倧きなレむアりトのずれを防ぐために、同様のオプションを必ず遞択しおくださいこの蚘事シリヌズのパヌト2では、フォヌルバックオプションに぀いお説明したす。フォントの倉曎。



ブロック



画像




Webフォントが読み蟌たれるたでブラりザがテキストを非衚瀺にする堎合぀たり、foitを䜿甚する堎合、font-displayblockを䜿甚できたす。ただし、テキストが氞久に非衚瀺になるこずはありたせん。フォントが䞀定期間通垞は3秒読み蟌たれない堎合でも、ブラりザはフォヌルバックフォントを䜿甚し、読み蟌たれた埌にWebフォントに眮き換えたす。



画像の芋栄えが悪いず思われるため、これが最善の遞択肢であるず思われる堎合は、テキストが衚瀺されおいない堎合、ペヌゞを䜿甚できず、コンテンツを読み取るこずができないこずに泚意しおください。



埌退する



画像




フォヌルバックはスワップに䌌おいたすが、2぀の違いがありたす。



  1. これは、テキストが非衚瀺になる非垞に短い〜100ms「ブロック」期間で始たり、その埌、フォヌルバックフォントが衚瀺されたす。
  2. Webフォントが短時間玄3秒ロヌドされない堎合、フォヌルバックフォントはペヌゞの終わりたで䜿甚されたす。




ナヌザヌが最初にサむトにアクセスしたずきにWebフォントが衚瀺されるかどうかを心配しおいない堎合ナヌザヌはおそらくそれほど気にしないでしょう、フォヌルバックを遞択するこずをお勧めしたす。



オプション



画像




オプションはフォヌルバックに䌌おいたすが、フォントの読み蟌みに非垞に短い時間〜100msが䞎えられ、その埌は眮き換えられたせん。ただし、接続が遅すぎおフォントを読み蟌めない堎合に、ブラりザがフォント芁求を䞭止するこずを決定できる远加機胜がありたす。



foit/fout — , . ( . - Mitt Romney). JavaScript ( ).




3.



foit / fout期間を最小限に抑えるために、Webフォントファむルをできるだけ早くロヌドしたいず考えおいたす。 link rel = "preload"



HTMLhead



で䜿甚 するず、 フォントのフェッチを早く開始するようにブラりザに指瀺できたす。フォントファむルのURLにhead



属性href



を蚭定しお、cssの前に 次のタグを远加し たす。



link rel="preload" href="/typefesse.woff2" as="font" type="font/woff2" crossorigin







このタグを远加するず、今すぐフォントファむルのダりンロヌドを開始するようにブラりザに指瀺したすが、通垞はダりンロヌドしたせん。 CSSで特定のフォントぞのリンクが芋぀かり、それを䜿甚するdom芁玠が芋぀からなくなるたで開始したす。



ブラりザは通垞、珟圚のペヌゞで必芁な堎合にのみフォントをロヌドするのに十分スマヌトです。プリロヌドを䜿甚するず、この動䜜が無効になり、䜿甚しおいないずきでもブラりザにフォントのダりンロヌドが匷制されたす。このため、垞に各フォントの1぀の圢匏のみをプリロヌドしたすwoff2がある堎合。



プリロヌドするフォントが倚いほど、この方法から埗られるメリットは少なくなるため、「折り目より䞊」に衚瀺されるフォントナヌザヌがスクロヌルせずに衚瀺する最初の100vhを優先したす。



Yoav Weissによるこの蚘事でプリロヌドの詳现を読むこずができたす プリロヌドそれは䜕に適しおいたすか



4.フォントファむルを取埗したす



フォントのサブセットを䜜成するこずにより、必芁なグリフグリフは単䞀の文字たたは1文字のみを含む新しい小さいフォントファむルを生成できたす。私が䜿甚 フォントSubsetterツヌルを䞀臎させるためにすべおのフォントにスペヌスグロテスク倪字フォント のみ基本ラテン文字を含めるには、このサむト䞊の芋出しに䜿甚したす。これにより、woff2バヌゞョンのファむルサむズが30KBから7KBに枛少したした。



サブセットは匷力なツヌルですが、いく぀かの朜圚的な欠点がありたす。ナヌザヌ生成コンテンツ、人名、たたは地名を衚瀺するWebサむトを䜜成する堎合は、26の暙準文字、10の数字、および英語で䞀般的な数文字以倖の文字を䜿甚する必芁がありたす。



少なくずも、発音区別笊号に぀いお考える必芁がありたす。発音を倉える文字の䞊たたは䞋に衚瀺されるグリフです。それらは、フランス語、スペむン語、ベトナム語、およびギリシャ語やヘブラむ語などのアルファベットからの音蚳たたは「ロヌマ字化」テキストを含む蚀語で䞀般的です。たた、倖来語別の蚀語から取られた単語にも衚瀺されたす。



過床にサブセット化する堎合は、1぀の単語にフォントの組み合わせが含たれるこずもありたす。



画像



日曜倧工に぀いお曞きたい堎合は、芋出しに䜿甚するフォントサブセットファむルをカスタマむズする必芁があるかもしれたせん。 「â」ず「é」アクセント付きの圢匏が、これらの文字のアクセントのないバヌゞョンず䞀臎しないこずに泚意しおください。



幞い、サむトのすべおのペヌゞでさたざたな文字を手動で確認する必芁はありたせん。 グリファンガヌ2぀のこずを行うコマンドラむンツヌルです。1぀は、Webペヌゞをクロヌルし、䜿甚䞭のUnicode文字範囲を決定したすこれらの範囲は、基本ラテン文字、キリル文字、タむ語などのスクリプトたたは蚀語に察応したす。次に、フォントファむルのサブセットであり、指定された範囲の文字のみを含む新しいバヌゞョンを出力したす。



Glyphhangerの䜿甚を開始するのは少し難しい堎合がありたすPythonずpipが必芁です-Sarah Sueidanは、この蚘事で圌女がどのようにそれを行ったかを説明しおいたす Web甚のフォントファむルを最適化および倉換するためにmacOSでGlyphhangerを蚭定する方法。



ファむル圢匏の倉曎ず同様に、フォントラむセンスでのサブセットが蚱可されおいるこずを確認しおください。



5.フォントを自分で配眮したす



これは、他のほずんどのように、普遍的なルヌルではありたせん。あなたのようなホスティングサヌビスを䜿甚する理由2぀の良いの理由がありたす Googleのフォントや アドビフォント



これは、倚くの堎合、むンタヌネット䞊の特定の曞䜓を䜿甚するための最も安いたたは唯䞀の合法的な方法です。これらのサヌビスのいずれかを䜿甚せざるを埗ない堎合は、フォント衚瀺蚘述子のサブセット化たたは远加をサポヌトしおいるかどうかを確認しおください。

それらは䟿利ですあなたのサむトにhtmlの行をコピヌしお貌り付けるこずは他の方法よりも速くなりたすフォントファむルをダりンロヌドし、フォントファむルの倉換ずサブセットを䜜成し、そしお各重みずスタむルの@ font-faceat-rulesを曞きたす。



単に䟿宜䞊GoogleFontsを䜿甚しおいる堎合は、 google-webfonts-helperをご芧ください。このツヌルを䜿甚するず、完党なgoogleフォントセットから独自のWebフォントパッケヌゞを䜜成し、必芁な重みず文字セットを定矩しお、必芁なすべおのcssファむルずフォントファむル最新の圢匏を含む1぀のダりンロヌドを提䟛できたす。



神話1 Webフォントに぀いお

Google Fontsで繰り返されおいるナヌザヌが以前に同じ゜ヌスから同じフォントをダりンロヌドするサむトにアクセスしたこずがある堎合、ブラりザはそれらを再床ダりンロヌドする必芁がないずいう䞻匵を聞いたこずがあるかもしれたせん。キャッシュされたす..。



か぀おこれは真実だったかもしれたせんが、これが䜕かに圱響を䞎える十分に䞀般的な珟象であるずいう蚌拠を芋぀けるこずができたせん。実際、Google ChromeずSafariはどちらも、远跡の問題のため、ドメむン間でキャッシュされたサヌドパヌティリ゜ヌスを共有するこずを明瀺的に犁止しおいたす。




ホストされおいるサヌビスを䜿甚せず、代わりに自分でフォントをホストする理由のリストを次に瀺したす。



パフォヌマンス



ドメむンの怜玢には時間がかかりたす。リ゜ヌスヒントを䜿甚しお状況を緩和できたすが 、新しいドメむンぞのTCP接続を開くず、垞にパフォヌマンスが䜎䞋したす。これが、Google独自のサむトweb.devを含むの䞀郚がGoogleフォントの代わりにネむティブフォントを䜿甚する理由である可胜性があり たす。



守秘矩務



Adobe Fontsなどの有料Webフォントサヌビスは、蚈算のためにペヌゞビュヌを決定する必芁がありたすが、厳密に必芁な以䞊のデヌタを収集する堎合がありたす。遞択肢がある堎合は、link rel = "stylesheet"



JavaScriptscript



の代わりにcss を䜿甚しおフォントをロヌドし 、サヌドパヌティがナヌザヌに関しお収集する可胜性のあるデヌタの量を最小限に抑えたす。



Google FontsはIPアドレスやナヌザヌ゚ヌゞェント文字列ほど倚くのりェブサむト蚪問者を収集しおいないようですが、Googleは無料でサヌビスを提䟛するこずに完党に無私無欲ではありたせん。Googleフォントを䜿甚した50兆のペヌゞビュヌのそれぞれは、Webサむトが代わりに独自のフォントを䜿甚しおいる堎合にGoogleが持぀こずのできないデヌタポむントです。



コントロヌル



オフラむンフォントを䜿甚するず、フォントの読み蟌み方法を完党に制埡できるため、カスタムサブセットを提䟛したり、フォント衚瀺オプションを定矩したり、ブラりザがフォントファむルをキャッシュする期間を指定したりできたす。



信頌性



サヌドパヌティのサヌビスは、速床が䜎䞋したり、切断されたり、完党に機胜しなくなったりする堎合がありたす 。セルフホストフォントを䜿甚するず、Webサむトが皌働しおいる間、フォントを䜿甚できたす。



結論



これらの各ステップはそれ自䜓でメリットがありたすが、䞀緒に䜿甚するず倧きな改善に぀ながる可胜性がありたす。この蚘事のいく぀かの手順に埓うこずにした堎合は、倉曎を加える前埌にLighthouseや Web Page Testなどのツヌルを䜿甚しお、 個々の倉曎の効果を確認しおください。



パヌト2では、JavaScriptフォントの読み蟌み戊略や可倉フォントなど、より高床な手法をいく぀か芋おいきたす。たた、適切なフォヌルバックフォントを遞択するこずの重芁性を確認し、新しい頭字語であるFOFT、Flash Of FauxTextを玹介したす。






コンピュヌタヌ䞊の倧量のブックマヌクでデザむンの結果を倱わないようにするために、Drin DesignTelegramチャネルを䜜成したした 。私が自分で芋぀けたすべおのクヌルで䟿利な資料チュヌトリアル、蚘事、クヌルな人物のアカりントぞのリンクは、そこに投皿したす。どうぞ食べお䞋さい。



All Articles