PageSpeed Insights でレンダリングを妨げる Google Fonts 問題を解決する方法

公開日:
PageSpeed Insights でレンダリングを妨げる Google Fonts 問題を解決する方法

Web フォントは、サイトの表示スピードに影響を与えるのか?深く考えるまでもなく、この答えは Yes です。画面描画を少しでも速くするなら、Web フォントを使わないのが望ましいです。

しかしながらサイトのデザイン上、どうしても Web フォントが使いたい。でも PageSpeed Insights のスコアが悪くなるもの避けたい。その2つの要望を満たす手段があるのか?絶対的な方法ではないものの、その要求に答えられる方法の1つを紹介します。

なお、このブログ Webllica は2種類の Web フォントを利用しています。1つはタイトルに用いている Google Fonts の Quicksand と、アイコン系フォントの Font Awesome です。では、これら2つのフォントを使いながらも、レンダリングを妨げないように行っている工夫をご覧ください。

Web フォントの問題点を再確認

PageSpeed Insights の指摘内容

PageSpeed Insights Web フォント対応前スコア

PageSpeed Insights Web フォント対応前スコア ラボデータ

かなり良いスコアに見えるのは、Google Adsense を非表示にしたページにて測定しているため。Adsense を挿入していると、スコアの改善具合が分かりづらいため、今回はこのような形で計測していきます。

そして肝心の、改善できる項目として指摘が挙がっている、レンダリングを妨げるリソースの除外に関する内容。想定通り、Google Fonts に関わる部分が指摘されています。

レンダリングを妨げるリソースの除外における Google Fonts の指摘内容

head タグに記述しているコードは、以下の通り。最新の display: swap に対応した呼び出し方法であり、現状提供されている方法では、これ以上の高速化が見込めません。

<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Quicksand&display=swap" rel="stylesheet">

Web フォントを読み込みつつ、ここから更に高速化できる方法はただ1つ。それは、ネット経由ではなく、自前のサーバーからフォントを直接読み込む方法への変更です。

FontAwesome について指摘がないのは、既に対応済みであるため。このあと紹介する Google Fonts への対応と、全く同じ対策を行っています。

Google Fonts を自前のサーバーから読み込む

要するに Web フォントの読み込み先を、通信の発生するネット経由ではなく、WordPress 等の Web サイトのソースコードが置いてある自前のサーバーにすることで、限りなく通信のラグをなくすのが最終的な目的です。

では、具体的な手順を説明していきましょう。

Google Fonts をダウンロード

まず Google Fonts のサイトから、目的のフォントのページを開きます。右上のダウンロードリンクから、フォントファイルが取得できます。

Google Fonts をダウンロードする方法

1点注意事項として、フォントによってライセンス形態が異なります。各フォントのページ下部に License 事項があるので、そちらの内容を確認した上で利用するようにしてください。SIL Open Font License については、こちらの記事がとてもわかりやすいので参考までに。

フォントをサーバーにアップロード

ダウンロードした zip ファイルを解凍し、必要なウェイトのフォントをサーバーにアップロードします。任意の場所に配置すれば良いですが、ここではルート直下に fonts フォルダを作成し、その中にファイルを配置します。

FTP で Google フォントをアップロード

僕が使っている Quicksand は、フォントの種類が5つ。そのうち太字や細字は利用しないため、レギュラーのフォントを1つだけ配置しました。

フォントを読み込む CSS を記述

あとは font-family でアップロードしたフォントが使えるように、CSS の記述を追記します。

フォントを読み込む CSS 設定
<style>
@font-face{
  font-display: swap;
  font-weight: 400;
  font-style: normal
  font-family: 'Quicksand';
  src: url('/fonts/Quicksand-Regular.ttf') format('ttf');
  }
</style>

これで設定完了です。

なお FontAwesome についても同様に、ダウンロードしたファイルを自前のサーバーにアップロードした上で参照しています。

改めて PageSpeed Insights でテスト

PageSpeed Insights Web フォント対応後スコア

PageSpeed Insights Web フォント対応後スコア ラボデータ

指摘事項で挙がっていた、レンダリングを妨げるリソースの除外に関する事項は消えて、FCP (First Contentful Paint) の数値が改善しました。

これらの秒数は、測定の時間帯やタイミングなどで変わりやすいため、数回思考したうちの平均的なデータをピックアップしました。

WOFF や WOFF2 にしなくて良いのか?

Google Fonts のサイトからダウンロードしたファイルは TTF 形式のもの。一方で、そもそも Google のサーバーを参照した Web フォントの場合、ブラウザに応じて新しいフォーマットである WOFF や WOFF2 形式のファイルを参照しています。

この古い TTF 形式ではなく、WOFF 形式にしたほうがもっとパフォーマンスが上がるのではないか?と疑問を持ったので試してみたところ、効果的な結果は得られませんでした。そこまで描画スピードに影響しないのであれば、ダウンロードファイルである TTF 形式のままでも問題なさそうです。

もしかしたら、日本語フォントのように容量が大きい場合、圧縮した WOFF2 形式を用いたほうが最適なのかもしれません。

以上、PageSpeed Insights でレンダリングを妨げる Google Fonts 問題の解決方法でした。

この記事をシェアする

このブログの運営者

NJ

元システムエンジニア。個人事業主として独立して Web サイト運営、ポップデザインや動画制作など、パソコンでモノづくりしています。