폰트 이해
우리는 우리가 보는 화면을 모든 독자가 공유하기를 바랍니다. 하지만, 일부 독자는 작성자가 가진 폰트font 가 없을 수도 있습니다. 이 때, 작성자는 여러 대체 폰트를 제시할 수 있습니다. 최대한 비슷한 대체 폰트를 제시하려면 폰트계열에 대한 이해가 필요합니다.
아래 표는 5가지 폰트 계열을 소개합니다. sarif, sans-sarif, monospace는 존재하는 폰트가 아닙니다(폰트 계열명 입니다). 문서를 표현하는 시스템이라면 최소 1개 이상의 글씨체를 저장하고 있을 것이므로, 상기 폰트를 만나면 시스템이 가지고 있는 기본default 계열의 글씨체로 대체합니다.
계열명 | 국문 | 설명 |
---|---|---|
serif | 명조 | 아름답게 보일 목적으로 획의 끝 부분에 장식을 더함 |
sans-serif | 고딕 | sans=없다(프랑스). 세리프가 없는 글자 |
display | 헤드라인 | 굵고 강렬한 문자 |
handwriting | 손글씨 | 자유로운 글자, 타이포그라피 |
monospace | 동일간격 | 모든 문자의 간격을 일정하게 유지(한글: 2글자 취급), ㅇㅇ체 |
serif
명조(sarif)의 획 끝 부분은 휘어져 있지만, 고딕(sans-sarif)는 그렇지 않습니다.
monospace
monospace는 모든 글자 및 띄어쓰기의 가로넓이가 동일하지만, 일반 글씨는 그렇지 않습니다.
일반 글씨의 너비는 폰트파일에 정의된 제각각의 너비를 갖지만, monospace는 한글은 2칸, 영문과 사이띄기space는 1칸을 차지합니다.
참고자료: 폰트의 이해(적용사례, 다운로드, 나눔/두부 시리즈)
폰트 문법
다음 예시에서 3가지 폰트가 등장합니다. 셋 다 고딕계열입니다. 일반적으로 '맑은 고딕'은 윈도우 사용자의 경우 대부분 가지고 있을 수 있습니다. sans-serif는 엄연히 말하면 폰트 명은 아니고, 시스템 폰트명입니다.
body{
font-family: '나눔고딕', '맑은 고딕', sans-serif;
}
- '나눔고딕'을 가지고 있다면 우선 적용하시오.
- 그렇지 않다면 '맑은 고딕'을 적용하시오
- 그마저도 없다면 시스템이 정한 고딕계열을 적용하시오.
특성 | 설명 | 예제 | |||||||||||||||||||||||||||||||
font-size :크기 |
선언 | px(픽셀), em, rem, % |
font-size: 12px (12픽셀pixel로) font-size: 1.2em (:부모 객체ems대비 1.2배) |
||||||||||||||||||||||||||||||
별명 | xx-small, x-small, small, medium(사용자 기본 설정), x-large, xx-large, xxx-large | font-size: xx-large | |||||||||||||||||||||||||||||||
부모객체 대비: smaller, larger | font-size: smaller | ||||||||||||||||||||||||||||||||
font-family :서체 |
문법syntax: [<family-name> | <generic-family>] : 우선적용, 스페어1... |
font-family: Times, "Times New Roman", Georgia, serif; font-family: Verdana, Arial, Helvetica, sans-serif; font-family: "Lucida Console", Courier, monospace; |
|||||||||||||||||||||||||||||||
font-style :기울임 |
normal, italic(이텔릭체 사용), oblique(기본폰트를 기울임), oblique #deg(각도degree, angle:-90 ~ 90º, default:14) | oblique 10deg | |||||||||||||||||||||||||||||||
font-variant :변수? |
normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ] [참고] |
||||||||||||||||||||||||||||||||
font-weight :두께 |
상대 두께 | bolder, lighter (부모객체를 참조해 정해진 두께로 변경['meaning_of_relative_weights'단락]) | font-weight: bolder | ||||||||||||||||||||||||||||||
절대 두께 | 1 ~ 1000 | font-weight: 100 | |||||||||||||||||||||||||||||||
별명 | 100(Thin, Hairline), 200(Extra Light, Ultra Light), 300(Light), 400(Normal, Regular), 500(Medium), 600(Semi Bold, Demi Bold), 700(Bold), 800(Extra Bold, Ultra Bold), 900(Black, Heavy) | font-weight: Bold | |||||||||||||||||||||||||||||||
font-stretch :자간 |
선언 | 50% ~ 200% |
font-stretch를 지원하는 글꼴은 정확히 넚이를 반영하지만, 그렇지 않으면 넓은 것과 좁은 것만 구분합니다. |
||||||||||||||||||||||||||||||
별명 | ultra-condensed(50%), extra-condensed(62.5%), condensed(75%), semi-condensed(87.5%), normal(100%), semi-expanded(112.5%), expanded(125%). extra-expanded(150%), ultra-expanded(200%) | ||||||||||||||||||||||||||||||||
line-height :행간 |
단위 | (단위 없음), em, %, px(픽셀) |
line-height: 2.5 line-height: 2.5em line-height: 250% line-height: 25px |
||||||||||||||||||||||||||||||
별명 | normal(1.2) | line-height: normal | |||||||||||||||||||||||||||||||
Global 예약어 | inherit, initial, revert, revert-layer, unset |
font('css font 값');
- 반드시 추가되어야 할 내용 : font-size, font-family글자체[참고]
- 옵션 : font-style, font-variant, font-weight, font-stretch, line-height
- 속기 문법Syntax : font =
[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-stretch-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar- [기울임] [변수] [두께] [자간] 크기 [/행간] 서체
온라인 폰트
만약 내가 가지고 있는 '나눔고딕'을 적용하게 하고 싶다면 다운로드 받게 할 수 있습니다. 다운로드 받을 경로를 지정해 줍니다.
@font-face {
font-family: '나눔고딕';
src: url('/source/NanumGothic.otf') format('OpenType');
src: url('/source/NanumGothic.ttf') format('OpenType');
}
@font-face {
font-family: 'D2Coding';
src: url('/source/D2Coding-Ver1.3.2-20180524-all.ttc') format('OpenType');
src: url('/source/D2Coding-Ver1.3.2-20180524-ligature.ttc') format('OpenType');
src: url('/source/D2Coding-Ver1.3.2-20180524-ligature.ttf') format('OpenType');
}
구글 폰트
F_Font >> c_googleFont.html구글 폰트에서 다운받아 사용할 수 있습니다.
<style>
@import url('https://fonts.googleapis.com/css2?family=Nanum+Pen+Script&display=swap');
.nanum-pen {
font-family: "Nanum Pen Script", cursive;
font-weight: 400;
font-style: normal;
font-size: 1cm;
}
</style>
<p class="nanum-pen">가나다라 abcd</p>
예시: 가나다라 abcd
format
파일의 타입은 파일을 열어보고 확인 할 수 있습니다. 가장 널리 사용되는 두 타입(truetype, opentype)의 특징은 다음과 같습니다.
TrueType | OpenType | |
개발사 | Apple, Microsoft | Microsoft, Adobe Systems |
형식 | 글리프 데이터를 담은 헤더와 본문 데이터로 구성 | TrueType의 형식을 확장하여 PostScript 글꼴 데이터도 포함 |
언어 | 개별언어 지원 | 다국어 지원 |
파일크기 | 작음 | 큼 |
기능 | 기본기능 | 레이아웃과 타이포그래피 기능을 포함하여 글꼴의 더 많은 디자인 옵션을 제공 |
호환성 | 대부분 호환 Windows, macOS, Linux 및 Android |
레거시와 호환문제가 있을 수 있음 |
라이센스 | - | 무료 ~ 상용글꼴 |
- PostScript 형식 (PS): Adobe Systems 개발, PostScript 페이지 설명 언어로 디자인, OpenType과 유사
- Web Open Font Format (WOFF): 웹 페이지 타겟, 압축으로 빠르게 로드
- Embedded OpenType (EOT): Microsoft에서 개발, WOFF와 유사, IE6 이하 EOT만 지원
- Scalable Vector Graphics (SVG): 벡터 기반 이미지, 글꼴도 디자인 가능
- Bitmap Fonts: 이미지 파일로 디자인, 해상도 낮은 화면에서 깨지기 쉬움, 확대/축소 제한
- Portable Document Format (PDF): Adobe Systems 개발, 문서 디자인에 사용, PDF 파일 자체에 포함