Webフォントの読み込みの遅れで表示がカクカクするのを @next/font で解決する

良い感じのサイトにしたくてタイトルにWebフォントを使ってみたけど、普通に使うだけだとカクカクしてしまった。まあいっかと思ってたけど、友達に指摘されて悔しかったから対応してみた。nextjs 13を使ってるなら、@next/font を使うと対応できる。

カクカクを直したいところのフォントをGoogle Fontにする

@next/font が対応してくれるのはGoogle Fontとダウンロードしたフォントだけだから、Adobe fontを使うのをやめてGoogle Fontにした。

@next/font を導入する

pages/_app.tsx で@next/fontを導入するための実装を追加する。このブログはtailwindを使ってるのでその場合の方法。

// Google Font で読み込みたいフォントを読み込む今回は使いたい Oswald を読み込んでる
import { Oswald } from'@next/font/google'
  
// fontの設定をする。variable にはtailwindで指定するものを書く
const oswald = Oswald({ display:'swap', subsets: ['latin'], variable:'--font-oswald', })
:
:
function MyApp() {
  return (
    <main className={`${oswald.variable}`}>
      <Component {...pageProps} />
    </main>
  )
}

tailwind.config.js にフォントを追加する

theme: {
  extend: {
    fontFamily: {
      'display': ['var(--font-oswald)', ...defaultTheme.fontFamily.serif],
    },
  },
},

設定したフォントを指定する

<h1 className='font-display text-4xl sm:text-6xl my-6 font-black'>{children}</h1>

それでこうなった。目立つとこだけやったけど、他の場所も対応しよう!