Next.js์์ ํฐํธ ๋ก๋ฉ์ ์ต์ ํํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ, ์ฌ์ฉ์ ๊ฒฝํ, SEO๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ฒฝ ๊ฐ์ด๋์ ๋๋ค.
Next.js ํฐํธ ๋ก๋ฉ: ํ์ดํฌ๊ทธ๋ํผ ์ฑ๋ฅ ์ต์ ํ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํ ์์๊ฐ ๋์์ต๋๋ค. ๋์ฟ๋ ๋ด์๊ณผ ๊ฐ์ ๋ฒํํ ๋๋์๋ถํฐ ์ธํฐ๋ท ์ ์์ด ์ ํ๋ ์ธ๋ด ์ง์ญ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๋น ๋ฅด๊ณ ๋ฐ์์ด ๋น ๋ฅธ ์น์ฌ์ดํธ๋ฅผ ์๊ตฌํฉ๋๋ค. ์ด ์ฑ๋ฅ์ ํต์ฌ์ ์ธ ์ธก๋ฉด ์ค ํ๋๋ ํ์ดํฌ๊ทธ๋ํผ์ ๋๋ค. ๊ฐ๋ ์ฑ๊ณผ ์๊ฐ์ ๋งค๋ ฅ์ ์ํด ํ์์ ์ธ ํฐํธ๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด ์น์ฌ์ดํธ ๋ก๋ฉ ์๊ฐ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ Next.js ํ๋ ์์ํฌ ๋ด์์์ ํฐํธ ๋ก๋ฉ์ ๋ณต์ก์ฑ์ ๊น์ด ํ๊ณ ๋ค์ด, ๊ฐ๋ฐ์๋ค์ด ํฅ์๋ ์ฑ๋ฅ, ์ฌ์ฉ์ ๊ฒฝํ, ๊ฒ์ ์์ง ์ต์ ํ(SEO)๋ฅผ ์ํด ํ์ดํฌ๊ทธ๋ํผ๋ฅผ ์ต์ ํํ ์ ์๋ ์ง์๊ณผ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํฐํธ ๋ก๋ฉ์ด ์ค์ํ ์ด์
ํฐํธ๋ ์น์ฌ์ดํธ์ ์ ์ฒด์ฑ๊ณผ ์ฌ์ฉ์ฑ์ ์์ด ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ธ๋๋ ๊ฐ์ฑ์ ์ ๋ฌํ๊ณ , ๊ฐ๋ ์ฑ์ ๋์ด๋ฉฐ, ์ ๋ฐ์ ์ธ ์๊ฐ์ ๊ฒฝํ์ ๊ธฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ถ์ ์ ํ๊ฒ ๋ก๋๋ ํฐํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค:
- ๋ก๋ฉ ์๊ฐ ์ฆ๊ฐ: ํฐ ํฐํธ ํ์ผ์ ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ๊ธฐ๊ธฐ์์ ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ํฌ๊ฒ ์ ํ์ํฌ ์ ์์ต๋๋ค. ์ผ๋ ๋์ด๋ก๋น์ ์๋ ์ฌ์ฉ์๊ฐ ๋น์ ์ ์น์ฌ์ดํธ์ ์ ์ํ๋ ค ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ๋งค ๋ฐ๋ฆฌ์ด๊ฐ ์ค์ํฉ๋๋ค.
- ๋ณด์ด์ง ์๋ ํ ์คํธ ๊น๋นก์ (FOIT): ๋ธ๋ผ์ฐ์ ๊ฐ ํฐํธ๊ฐ ๋ค์ด๋ก๋๋ ๋๊น์ง ํ ์คํธ ๋ ๋๋ง์ ์ง์ฐ์์ผ ๋น ๊ณต๊ฐ์ด ๋ณด์ด๊ฑฐ๋ ์ด์์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค.
- ์คํ์ผ์ด ์ ์ฉ๋์ง ์์ ํ ์คํธ ๊น๋นก์ (FOUT): ๋ธ๋ผ์ฐ์ ๊ฐ ์ฒ์์ ๋์ฒด ํฐํธ๋ก ํ ์คํธ๋ฅผ ๋ ๋๋งํ ๋ค์, ์ํ๋ ํฐํธ๊ฐ ๋ค์ด๋ก๋๋๋ฉด ๊ต์ฒดํ์ฌ ์๊ฐ์ ์ผ๋ก ๊ฑฐ์ฌ๋ฆฌ๋ ๋ณํ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
- SEO์ ๋ฏธ์น๋ ์ํฅ: ๋๋ฆฐ ๋ก๋ฉ ์๊ฐ์ ๊ฒ์ ์์ง ์์์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๊ตฌ๊ธ ๋ฐ ๊ธฐํ ๊ฒ์ ์์ง์ ๋น ๋ฅด๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ์ฐ์ ์ํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๋ํ ์น์ฌ์ดํธ์ ๊ฐ์์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
Next.js์ ํฐํธ ๋ก๋ฉ ์ ๊ทผ ๋ฐฉ์: ๊ฐ๋ ฅํ ํดํท
Next.js๋ ํฐํธ ๋ก๋ฉ์ ์ต์ ํํ๊ธฐ ์ํด ํน๋ณํ ์ค๊ณ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ๊ธฐ์ ๋ค์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด๊ณผ ๊ธฐ๊ธฐ ์ ํ์ ๊ฑธ์ณ ํฐํธ ๋์์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๊ฒ ํด์ฃผ๋ฏ๋ก, ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฐ๋ฐ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
1. `next/font`๋ฅผ ์ด์ฉํ ํฐํธ ์ต์ ํ (๊ถ์ฅ)
`next/font` ๋ชจ๋์ Next.js์์ ํฐํธ ์ต์ ํ๋ฅผ ์ํ ๊ถ์ฅ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ด๋ ํฐํธ๋ฅผ ํตํฉํ๊ณ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ ๋จ์ํํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์๋ ์ ํ ํธ์คํ : ํฐํธ๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์ ํ ํธ์คํ ํฉ๋๋ค. ์ ํ ํธ์คํ ์ ๊ตฌ๊ธ ํฐํธ์ ๊ฐ์ ์ธ๋ถ ํฐํธ ์ ๊ณต์ ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฑ๋ฅ๊ณผ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ์ ๋ํ ๋ ํฐ ์ ์ด๊ถ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ํนํ ์๊ฒฉํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ท์ ์ด ์๋ ์ง์ญ์ ์ฌ์ฉ์์ ๋ํ ๋ฐ์ดํฐ ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ต์ ํ๋ ํฐํธ ํ์ผ ์์ฑ: Next.js๋ ์ต์ ํ๋ ํฐํธ ํ์ผ(์: WOFF2)์ ์์ฑํ๊ณ ํฐํธ ์๋ธ์ ํ ๋ฐ ํ์ ๋ณํ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ํ์ผ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค. ์ด๋ ์ธ๋ ๋์ด ์ง์ญ์ด๋ ๋ธ๋ผ์ง ์ผ๋ถ ์ง์ญ๊ณผ ๊ฐ์ด ๋์ญํญ์ด ์ ํ๋ ๊ณณ์์ ์น์ฌ์ดํธ์ ์ ์ํ๋ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- CSS ํด๋์ค ์์ฑ: ํ ์คํธ ์์์ ์ ์ฉํ ์ ์๋ CSS ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํด๋์ค๋ค์ `font-display` ์์ฑ(์๋์์ ์์ธํ ์ค๋ช )์ ํฌํจํ ํฐํธ ๋ก๋ฉ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ํ๋ฆฌ๋ก๋ฉ: ์ค์ํ ํฐํธ ํ์ผ์ ์๋์ผ๋ก ํ๋ฆฌ๋ก๋ํ์ฌ ํ์ด์ง ๋ก๋ฉ ๊ณผ์ ์์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋๋๋ก ํฉ๋๋ค.
- ๋์ ๋ ์ด์์ ์ด๋(CLS) ๋ฐฉ์ง: ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๋ชจ๋์ ํฐํธ ๋ก๋ฉ ์ค์ ๋ฐ์ํ ์ ์๋ ๋ ์ด์์ ์ด๋์ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ ์์ ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์์ : ๊ตฌ๊ธ ํฐํธ์ ํจ๊ป `next/font` ์ฌ์ฉํ๊ธฐ
`next/font` ํจํค์ง๊ฐ ์์ง ์ค์น๋์ง ์์๋ค๋ฉด ๋จผ์ ์ค์นํ์ธ์ (์ผ๋ฐ์ ์ผ๋ก `next` ์์กด์ฑ์ ์ผ๋ถ๋ก Next.js ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ํฌํจ๋์ด ์์ต๋๋ค):
npm install next
`pages/_app.js` ๋๋ ๊ด๋ จ ์ปดํฌ๋ํธ ํ์ผ์์ ์ฌ์ฉํ๋ ค๋ ํฐํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค:
import { Inter, Roboto } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })
const roboto = Roboto({
weight: ['400', '700'],
subsets: ['latin'],
display: 'swap',
})
function MyApp({ Component, pageProps }) {
return (
<div className={`${inter.className} ${roboto.className}`}>
<Component {...pageProps} /
</div>
)
}
export default MyApp;
๊ทธ๋ฐ ๋ค์, ์ปดํฌ๋ํธ์์ ์์ฑ๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค:
<h1 className={inter.className}>Hello, World!</h1>
<p className={roboto.className}>This is some text.</p>
์ด ์ ๊ทผ ๋ฐฉ์์ ํฐํธ ๋ก๋ฉ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ Next.js์ ์ฑ๋ฅ ์ต์ ํ์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
์์ : ๋ก์ปฌ ํฐํธ์ ํจ๊ป `next/font` ์ฌ์ฉํ๊ธฐ
ํ๋ก์ ํธ์ ํฐํธ ํ์ผ(์: .ttf, .otf)์ ์ถ๊ฐํฉ๋๋ค(์: `public/fonts` ๋๋ ํ ๋ฆฌ). ๋ก์ปฌ ํฐํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด `local` import๋ฅผ ์ฌ์ฉํ์ธ์:
import { LocalFont } from 'next/font/local'
const myFont = LocalFont({
src: './my-font.woff2', // Or .ttf, .otf
display: 'swap',
})
function MyApp({ Component, pageProps }) {
return (
<div className={myFont.className}>
<Component {...pageProps} /
</div>
)
}
export default MyApp
2. Font-Display: ํฐํธ ๋ ๋๋ง ๋์ ์ ์ดํ๊ธฐ
`font-display` CSS ์์ฑ์ ํฐํธ๊ฐ ๋ก๋ฉ๋๋ ๋์ ์ด๋ป๊ฒ ํ์๋ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ค์ํ ์ต์ ์ ์ดํดํ๊ณ ์ ์ ํ ๊ฒ์ ์ ํํ๋ ๊ฒ์ ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ ํนํ ๋๋จ์์์๋ ์ํ๋ฆฌ์นด ์ผ๋ถ ์ง์ญ๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ์กฐ๊ฑด์ด ๊ฐ๋ณ์ ์ธ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
auto
: ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๋์์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก ์งง์ ์ฐจ๋จ ๊ธฐ๊ฐ(block period) ํ์ ๊ต์ฒด ๊ธฐ๊ฐ(swap period)์ด ๋ฐ๋ฆ ๋๋ค. ์ด๋ ์ฌ์ฉ์ ์์ด์ ํธ(๋ธ๋ผ์ฐ์ )์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.block
: ๋ธ๋ผ์ฐ์ ๋ ํฐํธ๊ฐ ๋ก๋๋ ํ์๋ง ํ ์คํธ๋ฅผ ๋ ๋๋งํฉ๋๋ค. ํฐํธ๊ฐ ํน์ ์๊ฐ ๋ด์ ๋ก๋๋์ง ์์ผ๋ฉด ํ ์คํธ๊ฐ ํ์๋์ง ์์ต๋๋ค. ์ด๋ FOIT๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.swap
: ๋ธ๋ผ์ฐ์ ๋ ์ฆ์ ๋์ฒด ํฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ๋ ๋๋งํ๊ณ , ์ํ๋ ํฐํธ๊ฐ ๋ก๋๋๋ฉด ๊ต์ฒดํฉ๋๋ค. ์ด๋ FOIT๋ฅผ ํผํ์ง๋ง FOUT๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๊ธฐ ๋ก๋ฉ ์ ์๋ฒฝํ ๋ ๋๋ง๋ณด๋ค ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐ์ ์ํ ๋ ํํ ์ ํ๋ฉ๋๋ค.fallback
: ๋ธ๋ผ์ฐ์ ๋ ํฐํธ์ ๋งค์ฐ ์งง์ ์ฐจ๋จ ๊ธฐ๊ฐ๊ณผ ๊ธด ๊ต์ฒด ๊ธฐ๊ฐ์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ `block`๊ณผ `swap` ์ฌ์ด์ ๊ท ํ์ ๋ง์ถ ๊ฒ์ ๋๋ค.optional
: ๋ธ๋ผ์ฐ์ ๋ ๋งค์ฐ ์งง์ ์ฐจ๋จ ๊ธฐ๊ฐ์ ์ฌ์ฉํ ํ ์ฆ์ ๋์ฒด ํฐํธ๋ก ํ ์คํธ๋ฅผ ๋ ๋๋งํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐ๊ฒฐ์ด ๋๋ฌด ๋๋ฆฌ๊ฑฐ๋ ํฐํธ๊ฐ ์ค์ํ์ง ์๋ค๊ณ ํ๋จํ๋ฉด ์ํ๋ ํฐํธ๊ฐ ์ ํ ๋ ๋๋ง๋์ง ์์ ์๋ ์์ต๋๋ค.
`next/font` ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ๊ธ ํฐํธ์ ๋ํด `swap`์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์๋์ ์๊ฐ์ ์ผ๊ด์ฑ ์ฌ์ด์ ๊ท ํ์ ๋ง์ถ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ ํ์ ๋๋ค. ์ ์์ ์์ ๋ณด์ฌ์ค ๊ฒ์ฒ๋ผ `display` ์์ฑ์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ๋ก์ปฌ ํฐํธ์ ๊ฒฝ์ฐ, ํน์ ์ฑ๋ฅ ๋ฐ ์๊ฐ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ `swap`, `fallback`, ๋๋ `optional` ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
3. ํฐํธ ํ๋ฆฌ๋ก๋ฉ
ํ๋ฆฌ๋ก๋ฉ์ ๋ธ๋ผ์ฐ์ ์๊ฒ ํฐํธ ํ์ผ์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ค์ํ ๊ธฐ์ ์ ๋๋ค. Next.js๋ `next/font`๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค๋๋ค.
ํ๋ฆฌ๋ก๋ฉ์ด ์ค์ํ ์ด์ :
- ์ค์ ๋ฆฌ์์ค ์ฐ์ ์์ ์ง์ : ํ๋ฆฌ๋ก๋ฉ์ ๋ธ๋ผ์ฐ์ ์๊ฒ ํด๋น ํฐํธ๋ฅผ ์ฌ์ฉํ๋ CSS๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํ๊ธฐ ์ ์๋ ํฐํธ ํ์ผ์ ๊ฐ์ ธ์ค๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ ํ ์คํธ๋ฅผ ๋ ๋๋งํด์ผ ํ ๋ ํฐํธ๊ฐ ์ค๋น๋๋๋ก ํ์ฌ FOIT์ FOUT๋ฅผ ์ต์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋ ๋น ๋ฅธ ์ฒซ ์ฝํ ์ธ ํ์ธํธ(FCP): ํฐํธ๋ฅผ ํ๋ฆฌ๋ก๋ฉํจ์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ SEO์ ํต์ฌ ์งํ์ธ FCP ์๊ฐ์ ๋จ์ถํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ ํนํ ์ธํฐ๋ท ์๋๊ฐ ๋๋ฆฐ ๊ตญ๊ฐ์ ์ฌ์ฉ์์๊ฒ ๋งค ๋ฐ๋ฆฌ์ด๊ฐ ์ค์ํ๋ฏ๋ก ๋์์ด ๋ฉ๋๋ค.
- ๋์ ๋ ์ด์์ ์ด๋(CLS) ๊ฐ์: ํ๋ฆฌ๋ก๋ฉ์ ํฐํธ๋ก ์ธํด ๋ฐ์ํ๋ ๋ ์ด์์ ์ด๋์ ๊ฐ๋ฅ์ฑ์ ์ค์ฌ, ํ๋ฆฌํ๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๊ฐ๋ณ์ ์ธ ์ง์ญ์์ ํ์์ ์ธ, ๋ ๋ถ๋๋ฝ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ฆฌ๋ก๋ฉ ๋ฐฉ๋ฒ (`next/font`๋ก ์๋): `next/font`๋ฅผ ์ฌ์ฉํ ๋ ํ๋ฆฌ๋ก๋ฉ์ ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์ง์ ๊ฑฑ์ ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ๋ ์์ํฌ๊ฐ ํ๋ฆฌ๋ก๋ ๋์์ ์ต์ ํํด ์ค๋๋ค. ๋ง์ฝ ์ด๋ค ์ด์ ๋ก `next/font`๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, HTML `<head>` ์น์ ์์ ์๋์ผ๋ก ํฐํธ๋ฅผ ํ๋ฆฌ๋ก๋ํ ์๋ ์์ต๋๋ค (ํ์ง๋ง ์ด๋ ๋งค์ฐ ํน์ ํ ์๊ตฌ๊ฐ ์๋ ํ ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค):
<head>
<link rel="preload" href="/fonts/my-font.woff2" as="font" type="font/woff2" crossorigin>
</head>
`/fonts/my-font.woff2`๋ฅผ ์ค์ ํฐํธ ํ์ผ ๊ฒฝ๋ก๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์์ง ๋ง์ธ์. `as="font"` ์์ฑ์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ด๋ฅผ ํฐํธ๋ก ๊ฐ์ ธ์ค๋๋ก ์ง์ํฉ๋๋ค. `type` ์์ฑ์ ํฐํธ ํ์์ ๋ํ๋ด๊ณ , `crossorigin` ์์ฑ์ ๋ค๋ฅธ ๋๋ฉ์ธ์์ ํฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์ํฉ๋๋ค.
4. ํฐํธ ์๋ธ์ ํ
ํฐํธ ์๋ธ์ ํ ์ ํน์ ์นํ์ด์ง์์ ์ฌ์ฉ๋๋ ๋ฌธ์๋ง ํฌํจํ๋ ํฐํธ ๋ฒ์ ์ ๋ง๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ ํฐํธ ํ์ผ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ฌ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๋ณต์กํ ๋ฌธ์ ์งํฉ์ด๋ ๋ง์ ์์ ๊ธ๋ฆฌํ๋ฅผ ๊ฐ์ง ์ธ์ด๋ฅผ ๋์์ผ๋ก ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค. ํจ์ฌ ๋ ํฐ ๋ฌธ์ ์งํฉ์ด ์๋ ์ผ๋ณธ์ด๋ ํ๊ตญ์์ ์ฌ์ฉ์๊ฐ ๋น์ ์ ์น์ฌ์ดํธ์ ์ ์ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. `next/font`๋ฅผ ์ฌ์ฉํ Next.js์ ์๋ ํฐํธ ์ต์ ํ๋ ์ข ์ข ์๋ธ์ ํ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ํฐํธ๋ฅผ ์๋ธ์ ํ ํด์ผ ํ ์๋ ์์ต๋๋ค:
- ๊ตฌ๊ธ ํฐํธ: ๊ตฌ๊ธ ํฐํธ๋ ํค๋ฆด ๋ฌธ์, ๊ทธ๋ฆฌ์ค ๋ฌธ์, ๋ฒ ํธ๋จ์ด์ ๊ฐ์ ํน์ ๋ฌธ์ ์งํฉ์ ์ ํํ ๋ ์๋์ผ๋ก ํฐํธ๋ฅผ ์๋ธ์ ํ ํฉ๋๋ค.
- Font Squirrel: ์ฌ์ฉ์ ์ ์ ํฐํธ ์๋ธ์ ์ ์์ฑํ ์ ์๋ ์น ๊ธฐ๋ฐ ๋๊ตฌ์ ๋๋ค.
- Glyphs ๋๋ FontLab: ํฐํธ ์๋ธ์ ํ ์ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋ ์ ๋ฌธ ํฐํธ ํธ์ง ์ํํธ์จ์ด์ ๋๋ค.
5. ์ฌ๋ฐ๋ฅธ ํฐํธ ํ์ ์ ํํ๊ธฐ
๋ค์ํ ํฐํธ ํ์์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ค์ ์์ถ๋ฅ ๊ณผ ํธํ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฅ ํ๋์ ์ด๊ณ ๊ถ์ฅ๋๋ ํ์์ WOFF2๋ก, ๋ฐ์ด๋ ์์ถ๋ฅ ์ ์ ๊ณตํ๋ฉฐ ๋ชจ๋ ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค. WOFF(Web Open Font Format)๋ ์ข์ ์ ํ์ด๋ฉฐ, ์ข์ ์์ถ๋ฅ ๊ณผ ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์์ฃผ ์ค๋๋ ๋ธ๋ผ์ฐ์ (IE8 ๋ฐ ์ด์ ๋ฒ์ )๋ฅผ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด EOT(Embedded OpenType)์ ๊ฐ์ ์ค๋๋ ํ์์ ์ฌ์ฉ์ ํผํ์ธ์. Next.js๋ `next/font`๋ฅผ ์ฌ์ฉํ ๋ ํ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ์ต์ ํ๋ ํ์(๋ณดํต WOFF2)์ ์๋์ผ๋ก ์์ฑํ๊ณ ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ ๋์ฒด ํฐํธ๋ฅผ ํฌํจํ์ฌ ํญ๋์ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ณ ๊ธ ๊ธฐ์
ํต์ฌ ์์น ์ธ์๋, ํฐํธ ๋ก๋ฉ์ ๋์ฑ ์ต์ ํํ ์ ์๋ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์ ๊ณ ๊ธ ๊ธฐ์ ์ด ์์ต๋๋ค:
1. ์คํฌ๋กค ์์ด ๋ณผ ์ ์๋ ์ฝํ ์ธ ์ฐ์ ์์ ์ง์
ํ์ด์ง๊ฐ ๋ก๋๋ ๋ ํ๋ฉด์ ์ฆ์ ๋ํ๋๋ ํ ์คํธ(์คํฌ๋กค ์์ด ๋ณผ ์ ์๋ ์ฝํ ์ธ )์ ์ฌ์ฉ๋๋ ํฐํธ๋ฅผ ์๋ณํ์ธ์. ์ด๋ฌํ ํฐํธ๋ ์ฌ์ฉ์์ ์ด๊ธฐ ๊ฒฝํ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ๋์ ์ฐ์ ์์๋ก ํ๋ฆฌ๋ก๋ํ์ธ์. ์ด๋ ๋ธ๋ผ์ง์ ํน์ ์ง์ญ๊ณผ ๊ฐ์ด ์ธํฐ๋ท ์๋๊ฐ ๋๋ฆด ์ ์๋ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ๊ธ์ ์ ์ธ ์ฒซ์ธ์์ ์ฃผ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
2. ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN) ์ฌ์ฉ
CDN์ ํ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ์๋ฒ์์ ํฐํธ ํ์ผ์ ์ ๊ณตํ์ธ์. ์ด๋ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ๋ค์ด๋ก๋ ์๋๋ฅผ ํฅ์์์ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํฉ๋๋ค. CDN์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ตญ๊ฐ์ ์ฌ์ฉ์, ํนํ ์ฃผ ์๋ฒ ์์น์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ์ฌ์ฉ์์๊ฒ ์ด์ ์ ์ค ์ ์์ต๋๋ค. Cloudflare, AWS CloudFront ๋๋ Fastly์ ๊ฐ์ ์๋น์ค๊ฐ ํ๋ฅญํ ์ ํ์ ๋๋ค.
3. ๊ฐ๋ณ ํฐํธ ๊ณ ๋ คํ๊ธฐ
๊ฐ๋ณ ํฐํธ๋ ๋ค์ํ ๊ตต๊ธฐ, ๋๋น, ์คํ์ผ์ ์ ์ํ ์ ์๋ ๋จ์ผ ํฐํธ ํ์ผ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ํ์ํ ํฐํธ ํ์ผ์ ์๋ฅผ ์ค์ฌ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ณ ํฐํธ๋ ๋น๊ต์ ์ต์ ๊ธฐ์ ์ด๋ฏ๋ก ๋์ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ํ์ธํ์ธ์. ์ค๋๋ ๊ธฐ๊ธฐ์ ๊ตฌ์ ๋ธ๋ผ์ฐ์ ์ ๋น์จ์ด ๋์ ๊ตญ๊ฐ์ ๋์ ์ฌ์ฉ์์ธต์ ์ผ๋์ ๋์ด์ผ ํฉ๋๋ค.
4. ํฐํธ ๊ตต๊ธฐ ์ต์ ํํ๊ธฐ
์น์ฌ์ดํธ์์ ์ค์ ๋ก ์ฌ์ฉ๋๋ ํฐํธ ๊ตต๊ธฐ๋ง ํฌํจํ์ธ์. ๋ถํ์ํ ํฐํธ ๋ณํ์ ๋ก๋ํ์ง ๋ง์ธ์. ์๋ฅผ ๋ค์ด, ํฐํธ์ ์ผ๋ฐ(regular) ๋ฐ ๊ตต์(bold) ๊ตต๊ธฐ๋ง ์ฌ์ฉํ๋ค๋ฉด, ๊ฐ๋(thin), ์์(light), ๋๋ ๊ฒ์(black) ๊ตต๊ธฐ๋ ๋ก๋ํ์ง ๋ง์ธ์. ์ด๋ ์ ์ฒด ํฐํธ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค. ์ด ์ต์ ํ๋ ๋์ผํ ํฐํธ์ ์ฌ๋ฌ ๋ณํ์ด ํ์ํ์ง ์์ ์ ์๋ ๋ธ๋ก๊ทธ์ ๊ฐ์ ๋จ์ํ ๋์์ธ์ ์น์ฌ์ดํธ๋ฅผ ๋์์ผ๋ก ํ ๋ ํนํ ํจ๊ณผ์ ์ ๋๋ค.
5. ์น ๋ฐ์ดํ๋ก ์ฑ๋ฅ ๋ชจ๋ํฐ๋งํ๊ธฐ
๋ค์๊ณผ ๊ฐ์ ์น ๋ฐ์ดํ ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ธ์:
- ์ต๋ ์ฝํ ์ธ ํ์ธํธ(LCP): ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ์์(์ฃผ๋ก ํ ์คํธ๋ ์ด๋ฏธ์ง)๊ฐ ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ํฐํธ ๋ก๋ฉ์ LCP์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๋์ ๋ ์ด์์ ์ด๋(CLS): ํฐํธ ๋ก๋ฉ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์๊ธฐ์น ์์ ๋ ์ด์์ ์ด๋์ ์ธก์ ํฉ๋๋ค.
- ์ต์ด ์ ๋ ฅ ์ง์ฐ(FID): ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์์ ์ฒซ ๋ฒ์งธ ์ํธ์์ฉ์ ์๋ตํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ํฐํธ ๋ก๋ฉ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ ์์ง๋ง, ํฐํธ ๋ก๋ฉ์ด ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ์ผ๋ถ์ ๋๋ค.
Google PageSpeed Insights, WebPageTest ๋๋ Lighthouse์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ๊ฐ์ ํ ์์ญ์ ์๋ณํ์ธ์. ์ด๋ ์ง์์ ์ธ ๊ฐ์ ์ ์ ๊ณตํ์ฌ ์น์ฌ์ดํธ๋ฅผ ์ต์ ํํ๊ธฐ ์ํ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ํ ํ์คํ ์ดํด๋ฅผ ๋ณด์ฅํฉ๋๋ค.
์งํ๋ฅผ ๋ถ์ํ๋ ๊ฒ์ ๋ค์ํ ์ง์ญ์์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Google PageSpeed Insights๋ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด(์: 3G)์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ธ๋ ๋์ด ์ง์ญ๊ณผ ๊ฐ์ด ์ ๋์ญํญ ์ธํฐ๋ท ์ ์์ด ๋๋ฆฌ ํผ์ง ์ง์ญ์ ์ฌ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ฌ์ฉ์๋ฅผ ์ํด ์น์ฌ์ดํธ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
6. ๋ค์ํ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํ๊ธฐ
๋ค์ํ ๊ธฐ๊ธฐ, ๋ธ๋ผ์ฐ์ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ฌ ์ผ๊ด๋ ์ฑ๋ฅ๊ณผ ๋ชจ์์ ๋ณด์ฅํ์ธ์. ์ฌ๊ธฐ์๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ, ๋ฐ์คํฌํฑ ์ปดํจํฐ ๋ฐ ๋ค์ํ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge)์์์ ํ ์คํธ๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ๊ต์ฐจ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ํ์์ ์ ๋๋ค. ๋ฏธ๊ตญ์์ Chrome์ผ๋ก ์๋ฒฝํ๊ฒ ๋ณด์ด๋ ์น์ฌ์ดํธ๊ฐ ํ๋์ค์์๋ Firefox์์ ๋ค๋ฅด๊ฒ ๋ ๋๋ง๋ ์ ์์ต๋๋ค.
7. ์ 3์ ํฐํธ ์๋น์ค๋ฅผ ํ๋ช ํ๊ฒ ๊ณ ๋ คํ๊ธฐ
๊ตฌ๊ธ ํฐํธ์ ๊ฐ์ ์๋น์ค๋ ํธ๋ฆฌํจ์ ์ ๊ณตํ์ง๋ง, ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ๊ณผ ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ณ ๋ ค ์ฌํญ์ ๊ณ ๋ คํ์ธ์. ํฐํธ๋ฅผ ์ ํ ํธ์คํ ํ๋ฉด(์: `next/font` ์ฌ์ฉ) ํนํ ์๊ฒฉํ ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ๋ฒ์ด ์๋ ์ง์ญ์ ์ํ ์น์ฌ์ดํธ๋ฅผ ๋์์ธํ ๋ ์ฑ๋ฅ, ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๊ท์ ์ค์์ ๋ํ ๋ ๋ง์ ์ ์ด๊ถ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ์ 3์ ํฐํธ ์๋น์ค๊ฐ ์ ํฉํ ์ ์์ง๋ง, ๊ทธ ์ด์ ๊ณผ ์ ์ฌ์ ์ธ ๋จ์ (์ถ๊ฐ DNS ์กฐํ, ๊ด๊ณ ์ฐจ๋จ๊ธฐ์ ์ํ ์ฐจ๋จ ๊ฐ๋ฅ์ฑ)์ ๋น๊ต ๊ฒํ ํด์ผ ํฉ๋๋ค.
์ฌ๋ก ์ฐ๊ตฌ ๋ฐ ์ค์ ์ฌ๋ก
์ต์ ํ๋ ํฐํธ ๋ก๋ฉ์ด ์ ์ธ๊ณ์ ์ผ๋ก ์น์ฌ์ดํธ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์๋์ง ์ค์ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ๋์ด์ง๋ฆฌ์์ ๋ด์ค ์น์ฌ์ดํธ: ๋์ด์ง๋ฆฌ์ ๋ผ๊ณ ์ค์ ํ ๋ด์ค ์น์ฌ์ดํธ๋ ํฐํธ๋ฅผ ์ ํ ํธ์คํ ํ๊ณ `swap` display ์์ฑ์ ์ฌ์ฉํ์ฌ ํฐํธ ๋ก๋ฉ์ ์ต์ ํํ์ต๋๋ค. ์ด๋ก ์ธํด ๊ธฐ์ฌ๊ฐ ํ๋ฉด์ ๋ํ๋๋ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋์ด, ์ ํ๋ ๋ฐ์ดํฐ ์๊ธ์ ๋ก ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ฅผ ํตํด ์ธํฐ๋ท์ ์ ์ํ๋ ๋ง์ ์ฌ์ฉ์์๊ฒ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ์ต๋๋ค.
- ์ผ๋ณธ์ ์ ์ ์๊ฑฐ๋ ์คํ ์ด: ์ผ๋ณธ ๋์ฟ์ ํ ์ ์ ์๊ฑฐ๋ ์คํ ์ด๋ ์ผ๋ณธ์ด ๋ฌธ์์ ๋ํ ํฐํธ ์๋ธ์ ํ ์ ๊ตฌํํ์ต๋๋ค. ์ด๋ก ์ธํด ์ ์ฒด ํฐํธ ํ์ผ ํฌ๊ธฐ๊ฐ ์ค๊ณ ํ์ด์ง ๋ก๋ ์๊ฐ์ด ๊ฐ์ ๋์ด, ํนํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ผํํ๋ ๊ณ ๊ฐ๋ค์ ์ ํ์จ์ด ๋์์ง๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋์์ต๋๋ค.
- ์๋ฅดํจํฐ๋์ ๋ธ๋ก๊ทธ: ์๋ฅดํจํฐ๋ ๋ถ์๋ ธ์ค์์ด๋ ์ค์ ํ ๊ฐ์ธ ๋ธ๋ก๊ทธ๋ ํฐํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด CDN์ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ์ด๋ก ์ธํด ํนํ ํด์ธ ๋ฐฉ๋ฌธ์๋ค์ ๋ก๋ฉ ์๊ฐ์ด ๊ทน์ ์ผ๋ก ๊ฐ์ํ์ต๋๋ค.
์ผ๋ฐ์ ์ธ ํฐํธ ๋ก๋ฉ ๋ฌธ์ ํด๊ฒฐ
์ต์์ ๋ฐฉ๋ฒ์ ์ ์ฉํ๋๋ผ๋ ํฐํธ ๊ด๋ จ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค:
- FOIT ๋๋ FOUT: ํ ์คํธ๊ฐ ์ฆ์ ๋ ๋๋ง๋์ง ์๊ฑฐ๋ ํฐํธ๊ฐ ์ ํ๋ฉ๋๋ค. ํด๊ฒฐ์ฑ : `swap` ๋๋ `fallback` font-display ์์ฑ์ ์ฌ์ฉํ์ธ์.
- ๋๋ฆฐ ๋ก๋ฉ ์๊ฐ: ํด๊ฒฐ์ฑ : ํฐํธ ํ์ผ์ ์ต์ ํํ๊ณ (์: WOFF2), ์ค์ํ ํฐํธ๋ฅผ ํ๋ฆฌ๋ก๋ํ๊ณ , CDN์ ์ฌ์ฉํ์ธ์.
- ํฐํธ ๋ ๋๋ง ๋ฌธ์ : ํฐํธ๊ฐ ์์๊ณผ ๋ค๋ฅด๊ฒ ๋ํ๋ฉ๋๋ค. ํด๊ฒฐ์ฑ : ํฐํธ ํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋์๋์ง, CSS์์ ์ฌ๋ฐ๋ฅธ ํฐํธ ๊ตต๊ธฐ์ ์คํ์ผ์ด ์ ์ฉ๋๊ณ ์๋์ง ํ์ธํ์ธ์. ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์ฐ๊ณ ์๋ก๊ณ ์นจํ์ธ์.
- ๋ ์ด์์ ์ด๋: ํฐํธ๊ฐ ๋ก๋๋๋ฉด์ ํ ์คํธ๊ฐ ์ด๋ฆฌ์ ๋ฆฌ ์์ง์ ๋๋ค. ํด๊ฒฐ์ฑ : ํฐํธ๊ฐ ๋ก๋๋๊ธฐ ์ ์ ๋ ๋๋ง๋์ง ์๋๋ก font-display ๊ฐ์ ์ง์ ํ๊ฑฐ๋, ์ ์ ํ ๋์ฒด ํฐํธ์ ํจ๊ป ํฐํธ ํ๋ฆฌ๋ก๋ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ฑฐ๋, ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฅผ ์ฒ๋ฆฌํ๋ `next/font`๋ฅผ ์ฌ์ฉํ์ธ์.
๊ฒฐ๋ก : ์ต์ ํ๋ ํ์ดํฌ๊ทธ๋ํผ๋ก ๋น ๋ฅด๊ณ ์ ๊ทผ์ฑ ๋์ ์น ๊ตฌ์ถํ๊ธฐ
ํฐํธ ๋ก๋ฉ ์ต์ ํ๋ ๋จ์ํ ๋ฏธ์ ์ธ ๊ณ ๋ ค ์ฌํญ์ด ์๋๋๋ค; ์ด๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ , ์ฌ์ฉ์ ์นํ์ ์ด๋ฉฐ, SEO ์นํ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๊ทผ๋ณธ์ ์ธ ์ธก๋ฉด์ ๋๋ค. ์ด ๊ฐ์ด๋์์ ์ค๋ช ํ ๊ธฐ์ ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฑํํจ์ผ๋ก์จ ์น์ฌ์ดํธ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํค๊ณ , ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ, ๊ฒ์ ๊ฒฐ๊ณผ์์ ์น์ฌ์ดํธ์ ์์๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ์บ๋๋ค์ ๊ฐ๋ฐ์๋ถํฐ ๋จ์ํ๋ฆฌ์นด์ ๊ฐ๋ฐ์์ ์ด๋ฅด๊ธฐ๊น์ง, ํจ์จ์ ์ธ ํฐํธ ๋ก๋ฉ์ ๊ธ์ ์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ๊ฒฝ์์ด ์น์ดํ ๋์งํธ ํ๊ฒฝ์์๋ ๋ชจ๋ ์ต์ ํ๊ฐ ์ค์ํ๋ฉฐ, ํ์ดํฌ๊ทธ๋ํผ ์ต์ ํ๋ ์จ๋ผ์ธ ์ฑ๊ณต์ ํฅํ ์ค์ํ ๋จ๊ณ์ ๋๋ค. Next.js์ `next/font` ๋ชจ๋์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๊ณต๊ฐ๋๋ฅผ ํ์ฑํ๋ ์ง์ ์ผ๋ก ๋ฐ์ด๋ ์น ๊ฒฝํ์ ๋ง๋๋ ๊ฒ์ ์์ง ๋ง์ธ์.