YakuHanJP:サイトのWebフォント強制先読み
Closedfirst published: 2018/12/04last updated: 2019/01/15

YakuHanJPサイトのトップでは多くのフォント・ウェイトを組み合わせた表示確認ができる。「Noto Sansを約半させつつウェイト700と900を比べてみる」等の使い方が想定されるが、この切り替え速度が緩慢だとストレスだろう。
ページ内で表示していない・フォールバックで使用していないWebフォントファイルは初期状態でダウンロードされない。DOMに追加、または display: none; が解除された時点から読み込みを開始。

キャッシュのないシミュレーターはこうなる。NotoやM PLUS Roundedの切り替えが遅く一瞬フォントが消えてしまう。これに対してモダンな実装で対処するのであれば、preload や font-display: swap; を使う。
ただ、ブラウザ対応状況や、日本語Google Fontsのunicode-rangeでサブセット化されたファイル名の想定が難しい事情もあり、YakuHanJPサイトトップではローテクでWebフォントを強制的にダウンロードさせる。
Webフォントは overflow: hidden; の中にあったり color: transparent の場合は読み込まれるため、height: 0; のクリッピング領域に全パターンのテキストを書き込む。今回はJSONを作っているのでVueで流し込み。

切り替えが初回アクセスでも爆速となった。ただ、初回アクセス自体は遅いし、無意味で大量のテキストがページ内に描画されているというのは、検索クローラの観点だとよくないだろう。