next/font
를 사용하면 폰트를 최적으로 로드할 수 있다.
모든 글꼴 파일에 대한 자동 자체 호스팅이 내장되어 있어, 레이아웃 이동 없이 최적으로 글꼴을 로드 할 수 있다.
next/font/google
vs. next/font/local
next/font/google
과 next/font/local
모두 폰트 최적화를 지원한다. 두 방식 모두 폰트에 대한 브라우저 캐싱과 프리로딩을 지원하여 페이지 로딩 속도를 높일 수 있다.next/font/google
next/font/local
next/font/local
사용하기웹 폰트를 지원하지 않는 폰트 파일을 사용함에 따라
next/font/local
을 사용했다.
_app.tsx
혹은 페이지 컴포넌트에 설정하기// _app.tsx or some page component
import localFont from "next/font/local";
// 다음과 같이 로컬 폰트 변수를 생성한다.
const MyLocalFont = localFont({
// 아래와 같이 굵기 별로 폰트를 지정해 사용할 수 있다.
src: [
{
path: ...,
weight: ...
},
...
]
});
...
export default function App({ Component, pageProps }: AppProps) {
return (
<main **className={MyLocalFont.className}**>
<Component {...pageProps} />
</main>
);
}
위와 같이 가변 글꼴을 사용해 폰트를 지정하면, Next.js에서 지원하는 성능과 유연성을 누릴 수 있다고 한다.
next/font/local
이든 next/font/google
이든, 호출할 때마다 해당 폰트는 애플리케이션에 하나의 인스턴스로 호스팅 된다.// _app.tsx
import localFont from "next/font/local";
const MyLocalFont = localFont({
src: [
{
path: ...,
weight: ...
},
...
]
});
const customTheme = extendTheme({
fonts: {
body: MyLocalFont.style.fontFamily
}
});
export default function App({ Component, pageProps }: AppProps) {
return (
<ChakraProvider>
<ThemeProvider **theme={customTheme}**>
<Component {...pageProps} />
</ThemeProvider>
</ChakraProvider>
);
}
next/font | Next.js
Basic Features: Font Optimization | Next.js