โ์ด๋ค ๋ฌธ์ ๊ฐ ์์๋์โ
ํฐํธ๋ฅผ ๋ค์ด๋ก๋ ํ๋ ๋ฐ ์ค๋ ๊ฑธ๋ ธ๋ค.
โ๋ฌธ์ ์์ธ์ด ๋ฌด์์ธ๊ฐ์โ
CDN์ผ๋ก ๋ฐ์์ค๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
โํด๊ฒฐ์ฑ โ
ํฐํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ next/font๋ฅผ ์ฌ์ฉํ๋ค.
โ์ ์ด๋ฐ ํด๊ฒฐ์ฑ ์ฌ์ฉํ๋์โ
์ ํ ํธ์คํ + next font
๋ค๋ฅธ ๊ณณ์ ์์ฒญ์ ํด์ ํฐํธ๋ฅผ ๋ฐ์ง ์๊ณ ๋ด ์๋ฒ์์ ๋ฐ์ผ๋ฉด ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ํฐํธ๋ฅผ ๋ค์ด๋ก๋ํด์ ๋น๋ํด๋๋ค.
next font (next ๊ณต์๋ฌธ์)
next/font๋ ํฐํธ(๋ง์ถคํ ํฐํธ ํฌํจ)๋ฅผ ์๋์ผ๋ก ์ต์ ํํ๊ณ ์ธ๋ถ ๋คํธ์ํฌ ์์ฒญ์ ์ ๊ฑฐํ์ฌ ๊ฐ์ธ์ ๋ณด ๋ณดํธ์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
next/font๋ ๋ชจ๋ ํฐํธ ํ์ผ์ ๋ํด ์๋ ์์ฒด ํธ์คํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด size-adjust CSS ์์ฑ์ ํ์ฉํ์ฌ ๋ ์ด์์ ์ด๋ ์์ด ์น ํฐํธ๋ฅผ ์ต์ ์ ๋ฐฉ์์ผ๋ก ๋ก๋ํ ์ ์์ต๋๋ค.
์ด ์๋ก์ด ํฐํธ ์์คํ ์ Google Fonts๋ ์ฑ๋ฅ๊ณผ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ๊ณ ๋ คํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. CSS์ ํฐํธ ํ์ผ์ ๋น๋ ์ ๋ค์ด๋ก๋๋๋ฉฐ ๋๋จธ์ง ์ ์ ์์ฐ๊ณผ ํจ๊ป ์์ฒด ํธ์คํ ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ Google๋ก ์์ฒญ์ด ์ ์ก๋์ง ์์ต๋๋ค.
์ฆ ์ ํ ํธ์คํ + fallback font ์ต์ ํ๋ก ๋ ์ด์์ ์ด๋ ์ต์ํํด์ค๋ค.
์ํ๋ ํฐํธ์ ๊ฐ์ฅ ๋น์ทํ ํฐํธ๋ฅผ ์๋์ผ๋ก fall back font๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ ์ฐธ ์ ๊ธฐํ๋ค
โ์ด๋ป๊ฒ ์ ์ฉํ๋์โ
import localFont from 'next/font/local'
const pretendard = localFont({
src: '../public/fonts/PretendardVariable.woff2',
display: 'swap',
weight: '45 920',
preload: true,
})
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
return (
<html lang="ko" className={`${pretendard.className} size-full`}>
<body className="size-full">
<div className="size-full overflow-x-hidden">{children}</div>
</body>
</html>
)
}
FCP 1์ด ๊ฐ์ !