๐Ÿ” Next font ์ตœ์ ํ™”

Viking_Jยท2024๋…„ 12์›” 22์ผ

๐Ÿ˜ค ๋ฌธ์ œ

โ€œ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‚˜์š”โ€

ํฐํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.

๐Ÿง ๋ฌธ์ œ ์›์ธ

โ€œ๋ฌธ์ œ ์›์ธ์ด ๋ฌด์—‡์ธ๊ฐ€์š”โ€

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์ดˆ ๊ฐœ์„ !

profile
๋ชจํ—˜์„ ๋– ๋‚˜๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€