본문으로 건너뛰기

글꼴 최적화

버전 10.2부터 넥스트에는 웹 글꼴 최적화가 내장되어 있습니다.

기본적으로 넥스트는 빌드 타임에 글꼴 CSS를 자동으로 인라인하여 글꼴 선언을 가져오기 위한 추가 왕복을 제거합니다. 이를 통해 FCP(First Contentful Paint)LCP(Large Contentful Paint)가 개선됩니다.

예시:

jsx
// 이전
<link
href="https://fonts.googleapis.com/css2?family=Inter&display=optional"
rel="stylesheet"
/>
// 이후
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<style data-href="https://fonts.googleapis.com/css2?family=Inter&display=optional">
@font-face{font-family:'Inter';font-style:normal...
</style>
jsx
// 이전
<link
href="https://fonts.googleapis.com/css2?family=Inter&display=optional"
rel="stylesheet"
/>
// 이후
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<style data-href="https://fonts.googleapis.com/css2?family=Inter&display=optional">
@font-face{font-family:'Inter';font-style:normal...
</style>

사용법

넥스트 앱에 웹 글꼴을 추가하려면 커스텀 Document에 글꼴을 추가합니다.

jsx
// pages/_document.js
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html>
<Head>
<link
href="https://fonts.googleapis.com/css2?family=Inter&display=optional"
rel="stylesheet"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
jsx
// pages/_document.js
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html>
<Head>
<link
href="https://fonts.googleapis.com/css2?family=Inter&display=optional"
rel="stylesheet"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;

next/head에 글꼴을 추가하는 것은 특정 페이지에만 적용되고 스트리밍 아키텍처에서는 작동하지 않기 때문에 권장하지 않습니다.

자동 웹 글꼴 최적화는 현재 구글 글꼴과 Typekit을 지원하며 곧 다른 글꼴 제공자도 지원할 예정입니다. 또한 로딩 전략font-display 값에 대한 제어 기능을 추가할 계획입니다.

자세한 내용은 Google 글꼴 표시를 참조합니다.

참고

글꼴 최적화는 현재 자체 호스팅 글꼴을 지원하지 않습니다.

최적화 비활성화하기

넥스트가 글꼴을 최적화하는 것을 원하지 않으면 비활성화할 수 있습니다.

next.config.js
js
module.exports = {
optimizeFonts: false,
};
next.config.js
js
module.exports = {
optimizeFonts: false,
};