こんにちは。

これはNext.js でGoogle Fonts を利用する方法を調べたときのメモ。

フォントの最適化について

現在のNext.js ではGoogle Fonts に対してWebフォントの最適化が行われている。

特に設定をせずにWebフォントの追加を行うだけで最適化される。

ただし、Webフォントを追加する場所は各コンポーネントやpages/_app.js ではなく、pages/_document.js に追加する必要がある。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// pages/_document.js

import Document, { Html, Head, Main, NextScript } from 'next/document'

export default class MyDocument extends Document {
  render() {
    return (
      <Html>
        <Head>
          <link
            href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;500;700&family=Poppins:ital,wght@0,300;0,500;0,700;1,300;1,500;1,700&display=swap"
            rel="stylesheet"
          />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    )
  }
}

余談

Next.js によるフォントの最適化はGoogle Fonts 以外にはAdobe のフォントライブラリであるTypekit をサポートしている。 (2022/07/27)

また、フォントの最適化を無効化する方法もあるが特に意味はないと思います。

参考文献