๐Ÿ…ฐ๏ธ 32. ์›น ํฐํŠธ ์ตœ์ ํ™” ์ „๋žต โ€” ์„ฑ๋Šฅ, ๋””์ž์ธ, UX๊นŒ์ง€ ์ƒ๊ฐํ•œ ๊ธ€๊ผด ์‚ฌ์šฉ๋ฒ•

JM_Devยท2025๋…„ 5์›” 9์ผ
0
post-thumbnail

์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฐํŠธ(๊ธ€๊ผด)๋‹ค.
ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ๋ฌด์‹ฌ์ฝ” Google Fonts๋ฅผ ๋งํฌํ•˜๊ฑฐ๋‚˜,
๋””์ž์ด๋„ˆ๊ฐ€ ์ „๋‹ฌํ•œ TTF ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ @font-face๋กœ ์ ์šฉํ•˜๊ณ  ๋๋‚ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์‚ฌ์‹ค ์›นํฐํŠธ๋Š” ํŽ˜์ด์ง€ ์„ฑ๋Šฅ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜, SEO์—๊นŒ์ง€ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ์š”์†Œ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํฐํŠธ๋ฅผ ์ด์˜๊ฒŒ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ, ์ž˜ ๋ณด์ด๊ณ  ๋น ๋ฅด๊ฒŒ ์ ์šฉ๋˜๋Š” ์ „๋žต์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค.


โœ… ์›นํฐํŠธ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ์ 

1๏ธโƒฃ FOIT (Flash of Invisible Text)

ํ…์ŠคํŠธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋‹ค๊ฐ€ ํฐํŠธ ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋œ ํ›„ ํ•œ ๋ฒˆ์— ํ‘œ์‹œ๋˜๋Š” ํ˜„์ƒ
โ†’ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๊ณต๋ฐฑ ์ƒํƒœ๊ฐ€ ๋ณด์ž„

2๏ธโƒฃ FOUT (Flash of Unstyled Text)

๊ธฐ๋ณธ ํฐํŠธ๋กœ ๋จผ์ € ํ‘œ์‹œ๋œ ํ›„, ํฐํŠธ ๋กœ๋”ฉ์ด ๋๋‚˜๋ฉด ํฐํŠธ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋ฐ”๋€Œ๋Š” ํ˜„์ƒ


๐Ÿ“ฆ ์›น ํฐํŠธ ์ ์šฉ ๋ฐฉ๋ฒ• ๋น„๊ต

๋ฐฉ์‹์„ค๋ช…์žฅ์ ๋‹จ์ 
@import from Google FontsCSS ํŒŒ์ผ์— ์ž„ํฌํŠธ๊ฐ„๋‹จํ•จ๋А๋ฆผ, ์ฐจ๋‹จ ์œ„ํ—˜
<link> ํƒœ๊ทธ ์‚ฌ์šฉHTML <head>์— ๋งํฌ๋ Œ๋”๋ง ์ฐจ๋‹จ ์—†์Œ์†๋„ ๋А๋ฆผ
@font-face ์ง์ ‘ ํ˜ธ์ŠคํŒ…์„œ๋ฒ„์— ํŒŒ์ผ ๋‘๊ณ  import์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ์ง์ ‘ ๊ด€๋ฆฌ ํ•„์š”

โš™๏ธ ์‹ค์ „ ์ ์šฉ ์˜ˆ์‹œ

@font-face {
  font-family: 'Pretendard';
  src: url('/fonts/pretendard.woff2') format('woff2');
  font-display: swap;
}
  • woff2๋Š” ๊ฐ€์žฅ ๊ฐ€๋ณ๊ณ  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ์ง€์›๋ฅ ์ด ์ข‹์Œ
  • font-display: swap์€ FOUT์„ ํ—ˆ์šฉํ•˜๊ณ  FOIT๋ฅผ ๋ฐฉ์ง€
    โ†’ ๊ธฐ๋ณธ ํฐํŠธ๋กœ ๋จผ์ € ๋ณด์ด๊ณ , ๋‚˜์ค‘์— ์›นํฐํŠธ ์ ์šฉ๋จ

๐Ÿ’ก font-display ์˜ต์…˜ ์ •๋ฆฌ

๊ฐ’์„ค๋ช…
auto๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ (๋Œ€๊ฐœ FOIT ๋ฐœ์ƒ ๊ฐ€๋Šฅ)
block3์ดˆ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ํฐํŠธ ๋กœ๋”ฉ (FOIT ๋ฐœ์ƒ ๊ฐ€๋Šฅ)
swap๊ธฐ๋ณธ ํฐํŠธ๋กœ ๋จผ์ € ๋ณด์—ฌ์ฃผ๊ณ , ๋‚˜์ค‘์— ๊ต์ฒด (FOUT ๋ฐœ์ƒ)
fallback100ms ์ด๋‚ด ํฐํŠธ ์•ˆ์˜ค๋ฉด ๊ธฐ๋ณธ ํฐํŠธ ์œ ์ง€
optional์œ ์ € ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋กœ๋”ฉ ์ž์ฒด๋ฅผ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ์Œ

๐Ÿ”ฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ „๋žต ์ •๋ฆฌ

โœ… 1. woff2๋งŒ ์‚ฌ์šฉ

  • TTF, OTF๋Š” ๋„ˆ๋ฌด ํผ
  • ๋ธŒ๋ผ์šฐ์ € ๋Œ€๋ถ€๋ถ„ woff2 ์ง€์› (IE ์ œ์™ธํ•˜๋ฉด OK)

โœ… 2. ์‚ฌ์šฉ ๋ฒ”์œ„ ์ค„์ด๊ธฐ (subset ์ƒ์„ฑ)

  • ํ•œ๊ธ€, ์ˆซ์ž, ์˜๋ฌธ๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ โ†’ ํ•„์š”ํ•œ ๋ฌธ์ž๋งŒ ํฌํ•จํ•œ ํฐํŠธ ํŒŒ์ผ ์ƒ์„ฑ
  • fonttools, glyphhanger, subset-font ๋“ฑ ํˆด ์‚ฌ์šฉ

โœ… 3. preload ์ ์šฉ

<link
  rel="preload"
  href="/fonts/pretendard.woff2"
  as="font"
  type="font/woff2"
  crossorigin="anonymous"
/>

โ†’ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์ „์— ํฐํŠธ ๋จผ์ € ๋กœ๋”ฉ


๐Ÿ“ ๋‚ด๊ฐ€ ๋А๋‚€ ์ 

๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ฉด์„œ ์›นํฐํŠธ ์„ค์ •์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ,
๊ทธ๋•Œ font-display ํ•˜๋‚˜ ๋•Œ๋ฌธ์— ์ฒซ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์ด ๋ช‡ ์ดˆ ์ง€์—ฐ๋˜๋Š” ๊ฑธ ๋ณด๊ณ  ์ถฉ๊ฒฉ์ด์—ˆ๋‹ค.
์ง€๊ธˆ์€ font-display: swap + preload + woff2๋ฅผ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์œผ๋กœ ์“ฐ๊ณ  ์žˆ๊ณ ,
์„ฑ๋Šฅ ์ธก์ • ๋„๊ตฌ(Lighthouse) ์ ์ˆ˜๋„ 20์  ์ด์ƒ ์ƒ์Šนํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค.


๐Ÿ”ก โ€œ์ด์˜๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค, ๋นจ๋ฆฌ ๋ณด์ด๋Š” ๊ฒŒ UX๋‹ค.โ€


profile
๊ฐœ๋ฐœ์ž๋กœ ์ทจ์—…์„ ์ค€๋น„ ์ค‘ ์ด๋ฉฐ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘ ์ž…๋‹ˆ๋‹ค!

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