์๋
ํ์ธ์ :) ์ค๋์ ๋ง์ ๋ถ๋ค์ด ์ฌ์ฉํ๋ Noto Sans KR ํฐํธ ์ ์ฉ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ดค์ด์.
Google Fonts๋ฅผ ํตํด ๊ฐ๋จํ ๋ถ๋ฌ์ฌ ์๋ ์๊ณ , npm์ผ๋ก ์ค์นํ๊ฑฐ๋ ์ง์ ํธ์คํ
ํ ์๋ ์์ต๋๋ค.
ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์ ํํด์ ์ ์ฉํด๋ณด์ธ์!
Noto Sans KR
๊ตฌ๊ธ·์ด๋๋น ๊ธฐ๋ฐ์ ์คํ์์ค ์ฐ์ธ๋ฆฌํ ๊ณ์ด ๊ธ๊ผด๋ก ํ๊ธ·์๋ฌธ·ํ์ ๋ฑ ๋ค๊ตญ์ด ์ง์์ด ์ข๊ณ ํ๋ฉด ๊ฐ๋ ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
์น์ฉ์ผ๋ก ๋๋ฆฌ ์ฐ์ด๋ฉฐ ์ฌ๋ฌ ๊ตต๊ธฐ(Weights)๋ฅผ ์ง์ํ๊ณ ์์ด์.
1. CDN์ผ๋ก ์ ์ฉํ๊ธฐ (๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ)
jsDelivr (์ถ์ฒ)
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/googlefonts/noto-sans-kr@latest/css/all.min.css">
์ ๋งํฌ๋ฅผ <head> ์์ ๋ฃ์ผ๋ฉด
**Thin(100)๋ถํฐ Black(900)**๊น์ง ๋ชจ๋ weight๋ฅผ ํ ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ดํ CSS์์ ์ด๋ ๊ฒ ์ง์ ํ๋ฉด ๋ผ์ ๐
body {
font-family: "Noto Sans KR", "Noto Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
}
Google Fonts (๊ณต์, ์ง์ weight ์ง์ ๋ฐฉ์)
Google Fonts์์๋ ๋ชจ๋ ๊ตต๊ธฐ๋ฅผ ํ๊บผ๋ฒ์ ๋ถ๋ฌ์ค๋ ค๋ฉด ์๋์ฒ๋ผ weight ๋ฒ์๋ฅผ ์ง์ ํ๋ฉด ๋ฉ๋๋ค
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
Google Fonts๋ ๋คํธ์ํฌ ์์ฒญ์ด ๋ง์์ง๋ ๋จ์ ์ด ์์ด์.
๊ทธ๋์ ํ๋ก์ ํธ์ฉ์ผ๋ก๋ jsDelivr ๋ฐฉ์์ด ์กฐ๊ธ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์
๋๋ค.
2. npm์ผ๋ก ์ค์นํด์ ์ ์ฉํ๊ธฐ
React๋ Vue ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๋ npm ํจํค์ง๋ก ๊ด๋ฆฌํ๋ ๊ฒ ํธํฉ๋๋ค.
fontsource ํจํค์ง๋ฅผ ์ด์ฉํ๋ฉด ํ์ํ ๊ตต๊ธฐ๋ง ์ ํํด์ ์ธ ์ ์์ด์.
# ์ค์น
npm install @fontsource/noto-sans-kr
๊ทธ๋ค์ JS ๋๋ CSS ํ์ผ์์ ์๋์ฒ๋ผ ๋ถ๋ฌ์ค๋ฉด ๋ฉ๋๋ค.
import "@fontsource/noto-sans-kr/400.css";
import "@fontsource/noto-sans-kr/700.css";
body {
font-family: "Noto Sans KR", sans-serif;
}
3. ์ง์ ํธ์คํ ํด์ ์ ์ฉํ๊ธฐ
์๋ฒ์ ํฐํธ ํ์ผ์ ์ง์ ์ฌ๋ ค ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
ํ๋ก์ ํธ ๋ณด์ ์ ์ฑ
์ ์ธ๋ถ CDN ์ฌ์ฉ์ด ์ด๋ ต๊ฑฐ๋, ํฐํธ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๊ณ ์ถ์ ๋ ์ ์ฉํด์.
๋จผ์ Google Fonts์์ ์ํ๋ ๊ตต๊ธฐ์ woff2 ํ์ผ์ ๋ค์ด๋ก๋ํ ๋ค /fonts/ ํด๋์ ์ ์ฅํ์ธ์.
๊ทธ๋ค์ CSS์ ์๋์ฒ๋ผ ์ถ๊ฐํฉ๋๋ค ๐
@font-face {
font-family: "Noto Sans KR";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("/fonts/NotoSansKR-Regular.woff2") format("woff2"),
url("/fonts/NotoSansKR-Regular.woff") format("woff");
}
@font-face {
font-family: "Noto Sans KR";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("/fonts/NotoSansKR-Bold.woff2") format("woff2");
}
body {
font-family: "Noto Sans KR", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
tip : woff2 ํ์ผ์ ์์ถ๋ฅ ์ด ๋๊ณ ๋ธ๋ผ์ฐ์ ํธํ์ฑ๋ ์ข์์ ๊ถ์ฅ๋ฉ๋๋ค.
font-display: swap ์์ฑ์ผ๋ก ํฐํธ ๋ก๋ฉ ์ ๊น๋นก์์ ์ต์ํํ์ธ์.
4. ์ ์ฉ ์ ์ฃผ์์ฌํญ
- ์ฉ๋ ์ด์ : ํ๊ธ ํฐํธ๋ ํ์ผ ํฌ๊ธฐ๊ฐ ํฐ ํธ์ด์์.
ํ์ํ ๊ตต๊ธฐ๋ง ๋ถ๋ฌ์ค๊ฑฐ๋, ์์ฃผ ์ฐ๋ ๊ธ์๋ง ํฌํจ๋ ์๋ธ์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ ์ข์์. - Fallback ํฐํธ ์ง์ : "Noto Sans KR", system-ui, sans-serif ์์ผ๋ก ์ค์ ํด๋๋ฉด
ํฐํธ ๋ก๋ฉ์ด ๋๋ฆด ๋๋ ๊ธฐ๋ณธ ํฐํธ๋ก ์์ฐ์ค๋ฝ๊ฒ ํ์๋ฉ๋๋ค. - ๊ฐ๋ณ ํฐํธ(Variable Font) : ์ต๊ทผ์ weight ๋ฒ์๋ฅผ ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์๋
๊ฐ๋ณ ๋ฒ์ ๋ ์ ๊ณต๋๊ณ ์์ผ๋, ์ต์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด๋ผ๋ฉด ํ์ฉํด๋ณด์ธ์. - ๋ผ์ด์ ์ค : Noto Sans KR์ ์คํ์์ค ํฐํธ๋ก ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง,
๋ฐฐํฌ ์์๋ ๋ฐ๋์ Google Fonts ํ์ด์ง๋ฅผ ์ถ์ฒ๋ก ๋ช ์ํด์ฃผ๋ ๊ฒ ์ข์์.
๊ฐ๋จํ ์ฐ๊ณ ์ถ๋ค๋ฉด Google Fonts CDN ๋น๋ ํ๊ฒฝ์ด๋ผ๋ฉด npm(fontsource) ์ ์ฑ ์ ์ธ๋ถ ์ฌ์ฉ์ด ์ด๋ ต๋ค๋ฉด ์ง์ ํธ์คํ ์ด ์ธ ๊ฐ์ง ์ค ํ๋๋ก ์ ํํ๋ฉด ๋ฉ๋๋ค ๐
'๐ฅ๏ธ ํ๋ก ํธ์๋ > ๐จํผ๋ธ๋ฆฌ์ฑ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| # CSS ์ ํ์ ์ ๋ฆฌ : ์ธ์ ํ์ ๊ฒฐํฉ์๋ถํฐ ํ์ ์ ํ์๊น์ง (0) | 2025.11.04 |
|---|---|
| # CSS ๋ฆฌ์ (Reset)์ฝ๋ CDN ์ฐ๊ฒฐ (0) | 2025.09.16 |
| # ๋ถํธ์คํธ๋ฉ ๋ฐ ๋ถํธ์คํธ๋ฉ ์์ด์ฝ(bootstrap icons) CDN (0) | 2025.09.15 |
| # ์ต์ ์ ์ด์ฟผ๋ฆฌ(jQuery), ์ ์ด์ฟผ๋ฆฌ UI CDN (0) | 2025.09.10 |
| # jQuery๋ก ๋ง๋๋ ์ปค์คํ ๋ค์ค ์ ํ select ๋ฐ์ค! (๋ผ์ด๋ธ๋ฌ๋ฆฌ X) (2) | 2025.09.01 |