@font-face work around
2017-10-20
@font-face
mixin๋จผ์ , ์ผ๋ฐ์ ์ธ css์ ํฐํธ ์ฝ๋๋ฅผ ๋ณด์.
@font-face {
font-family: "Noto Sans CJK KR";
font-style: normal;
font-weight: 900;
src: url("./fonts/NotoSans-Black.eot?") format("eot"),
url("./fonts/NotoSans-Black.woff2") format("woff2"),
url("./fonts/NotoSans-Black.woff") format("woff");
}
@font-face
๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์ ์ปดํจํฐ์ ํด๋น ํฐํธ๊ฐ ์ค์น๋์ด ์์ง ์์๋ ํฐํธ๋ฅผ ๋์คํ๋ ์ด ํ ์ ์๋ค. eot, woff, woff2 ๋ ํฐํธ ํฌ๋งท์ผ๋ก, ์๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํ๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ ์ฐธ๊ณ .
css ํ์ผ์ ์ด๋ค๋ฉด font-family ์ด๋ฆ๊ณผ ์ฌ๋ฌ๊ฐ์ง ํฌ๋งท์ ์ง์ ํด์ค์ผ ํ๋ค. ํฐํธ๊ฐ 1-2๊ฐ์ด๋ฉด ๊ด์ฐฎ์ง๋ง ์ฌ๋ฌ ๊ฐ๊ฐ ๋ ๊ฒฝ์ฐ, ๊ท์ฐฎ์ ๋ฟ๋ง ์๋๋ผ ์ค์ํ๊ธฐ๋ ์ฝ๋ค. ๋๊ฐ๋ ํฐํธ๋ช ๊ณผ font-weight ๋ง ๋ฌ๋ผ์ง๊ณ ๊ฐ์ ๋ด์ฉ์ธ๋ฐ, ์ด ์์ ์ ์๋์ ์ฝ๋๋ก ๋ฐ๋ณตํ์ง ์์ ์ ์๋ค. ์ถ์ฒ
/* _mixins.scss */
@mixin font-face($name, $path, $weight: null, $style: null, $exts: eot woff2 woff ttf svg) {
$src: null;
$extmods: (
eot: "?",
svg: "#" + str-replace($name, " ", "_")
);
$formats: (
otf: "opentype",
ttf: "truetype"
);
@each $ext in $exts {
$extmod: if(map-has-key($extmods, $ext), $ext + map-get($extmods, $ext), $ext);
$format: if(map-has-key($formats, $ext), map-get($formats, $ext), $ext);
$src: append($src, url(quote($path + "." + $extmod)) format(quote($format)), comma);
}
@font-face {
font-family: quote($name);
font-style: $style;
font-weight: $weight;
src: $src;
}
}
@import
ํค์๋๋ก mixin์ ์ํฌํธํ๊ณ , @include
ํค์๋๋ก ๋ง๋ค์ด์ค @font-face
mixin ์ ์ฌ์ฉํ๋ค.
/* App.scss */
@import "../stylesheets/_mixins.scss";
@include font-face("Noto Sans CJK KR", "./fonts/NotoSans-Black", 900, normal, eot woff2 woff);
.App {
font-family: "Noto Sans CJK KR";
-webkit-font-smoothing: antialiased;
}
์ฌ๊ธฐ๊น์ง ํ๋ฉด ๋!
...์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ํฐํธ๊ฐ ์ ์ฉ์ด ๋์ง ์์๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ ๊ผผ์๋ฅผ ์จ๋ณด์๋ค.
Font.scss
ํด๋น ํ๋ก์ ํธ์ ๋ฌธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์๋ค. (* create-react-app)
.
โโโ App.css
โโโ App.js
โโโ App.scss
โโโ index.css
โโโ index.js
โโโ components
โย ย โโโ About
โย ย โย ย โโโ About.css
โย ย โย ย โโโ About.js
โย ย โย ย โโโ About.scss
โย ย โโโ Event
โย ย โโโ Header
โย ย โโโ index.js
โโโ fonts
โย ย โโโ NotoSans-Black.eot
โย ย โโโ NotoSans-Black.otf
โย ย โโโ NotoSans-Black.woff2
โย ย โโโ NotoSans-Black.woff
โโโ stylesheets
โโโ _mixins.scss
โโโ _variables.scss
์๋๊ฒฝ๋ก ./fonts/NotoSans-Black.woff
๋ก ์ง์ ํด์ค ํฐํธ๊ฐ ๋ฐ์์ง์ง ์๋ ๊ฒ์ด์๋ค. ๊ทธ๋์ ํฐํธ๊ฐ ๋ค์ด์๋ fonts/
ํด๋์ font.scss
ํ์ผ์ ์ถ๊ฐํด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ npm run watch-css
๋ช
๋ น์ด๋ก sass ํ์ผ์ ์ปดํ์ผํด์ค๋ค. (node-sass-chokidar
๋ฅผ ์ฌ์ฉํ์๋ค.) ๊ทธ๋ฌ๋ฉด css ํ์ผ์ด ์๊ธด๋ค.
โโโ fonts
โย ย โโโ font.css
โย ย โโโ font.scss
โย ย โโโ NotoSans-Black.eot
โย ย โโโ NotoSans-Black.otf
โย ย โโโ NotoSans-Black.woff2
โย ย โโโ NotoSans-Black.woff
โโโ stylesheets
โโโ _mixins.scss
โโโ _variables.scss
์ด font.scss ํ์ผ ์์์ _mixins.scss
๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ด font.css ํ์ผ์ index.css ์ ์ํฌํธ ํด์ฃผ์๋ค.
/* font.scss */
@import "../stylesheets/_mixins.scss";
@include font-face("Noto Sans CJK KR", "./NotoSans-Black", 900, normal, eot woff2 woff);
/* index.css */
@import url('./fonts/font.css');
์ ๋ฆฌ!
@font-face
๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ _mixins.scss
๋ฅผ ๋ง๋ ๋ค.font.scss
๋ฅผ ๋ง๋ ๋ค.@include font-face
๋ฅผ ์ฌ์ฉํด ์ฝ๊ฒ font-face๋ฅผ ๋ง๋ ๋ค.font.scss
๊ฐ ์์ฑํ font.css
ํ์ผ์ index.css
ํ์ผ์ importํ๋ค.๋!