[CSS] CSS 기본 문법 : 6. 타이포그래피Typography

 

 

Font Family

HTML 요소의 글꼴은 font-family 속성을 사용해 변경할 수 있다.

h1 {
  font-family: Arial;
}

 

위 예제는 모든 <h1> 요소에 Arial 글꼴을 적용한다.

 

여러 단어로 이루어진 글꼴 이름

여러 단어로 구성된 글꼴 이름(ex: Times New Roman)은 작은따옴표(' ') 또는 큰따옴표(" ")로 묶어야 한다.

h1 {
  font-family: 'Times New Roman';
}

 

웹 안전 글꼴 (Web Safe Fonts)

웹 브라우저와 운영체제에 공통적으로 설치되어 있는 글꼴을 웹 안전 글꼴이라고 한다.
→ 예: Arial, Georgia, Times New Roman 등
→ 대부분의 환경에서 일관된 표시가 가능

 

폰트 스택(Fallback Fonts)

원하는 글꼴이 없을 경우를 대비해, 대체 글꼴을 나열한 목록폰트 스택(font stack) 이라고 부른다.

h1 {
  font-family: Caslon, Georgia, 'Times New Roman';
}

 

  • Caslon이 있으면 사용
  • 없으면 Georgia
  • 둘 다 없으면 Times New Roman

 

Serif vs Sans-Serif

이미지 출처 : codecademy

  • Serif 글꼴: 글자 끝에 장식이 있음
    • 예: Times New Roman, Georgia, Caslon
  • Sans-Serif 글꼴: 장식 없이 깔끔함
    • 예: Arial, Helvetica, Verdana

마지막 최종 대체용 글꼴로 serif 또는 sans-serif 를 지정할 수 있다.

h1 {
  font-family: Caslon, Georgia, 'Times New Roman', serif;
}

 

위와 같이 작성하면, 앞의 글꼴들이 모두 없는 경우 브라우저는 기본 serif 글꼴을 적용한다.

 


 

Font Weight

font-weight 속성은 텍스트의 굵기(볼드 여부) 를 조절하는 데 사용된다.
이 속성은 키워드 값 또는 숫자 값으로 설정할 수 있다.

 

font-weight의 키워드 값(Keyword Values)는 다음과 같다 :

의미
normal 기본 굵기 (기본값)
bold 굵은 글씨
lighter 부모 요소보다 더 얇게
bolder 부모 요소보다 더 굵게

 

font-weight의 숫자 값(Numerical Values)는 다음과 같다 :

 

  • 1(가장 얇음) ~ 1000(가장 굵음) 사이 숫자 사용 가능
  • 일반적으로는 100 단위로 사용 (100, 200, ..., 900)
  • 400은 normal, 700은 bold 와 같음
.left-section {
  font-weight: 700; /* 굵은 글씨 */
}

.right-section {
  font-weight: bold; /* 동일하게 굵은 글씨 */
}

 

 

위 코드의 두 클래스는 모두 굵은 텍스트를 출력한다.

 

font-weight을 사용할 때 주의할 점은 다음과 같다 :

 

  • 모든 글꼴이 숫자 굵기를 모두 지원하지는 않는다.
  • 일부 글꼴은 400, 700 등 일부 단계만 제공한다.
  • 따라서 사용하는 글꼴(Font) 에 따라 사용 가능한 font-weight 값을 확인하는 것이 좋다

 

시각적으로 안정된 타이포그래피를 위해,
중요한 텍스트는 700, 보통은 400, 보조 텍스트는 300 이하로 설정하는 것이 일반적이다.

 


 

Font Style

font-style 속성은 텍스트를 이탤릭체(기울임꼴) 로 표시할 때 사용한다.

 

아래 코드는 <h3> 요소의 텍스트를 기울임꼴로 표시한다 :

h3 {
  font-style: italic;
}

 

 

 

 


 

Text Transformation

text-transform 속성은 텍스트를 모두 대문자 또는 소문자로 표시하거나, 단어마다 첫 글자만 대문자로 바꿔주는 기능을 한다.

h1 {
  text-transform: uppercase;
}

 

  • 위 코드는 <h1> 요소의 텍스트를 모두 대문자로 표시한다.
  • HTML 코드에 소문자로 작성해도 브라우저에서는 대문자처럼 렌더링된다.

 

text-transform의 주요 속성 값은 다음과 같다 :

설명
uppercase 모든 글자를 대문자로 표시
lowercase 모든 글자를 소문자로 표시
capitalize 각 단어의 첫 글자만 대문자로 표시
none 기본 상태로 표시 (변경 없음)

 

이때, HTML에서 직접 대소문자를 입력해도 되는데 왜 CSS로 지정하는지 의문이 들 수 있다.

그 이유는 아래와 같다 :

 

  • HTML은 내용, CSS는 표현 담당 → 역할 분리 원칙
  • HTML에 모두 대문자로 작성하면 가독성이 떨어지고 유지보수가 어렵다
  • CSS에서 처리하면 콘텐츠는 깔끔하게 유지하면서 시각적 효과는 자유롭게 조절 가능하다

 


 

Text Layout

텍스트 레이아웃을 조정하는 CSS 속성은 다음과 같다 :

 

1. letter-spacing

문자 간 간격을 조절한다. (글자와 글자 사이의 수평 거리)

p {
  letter-spacing: 2px;
}

 

  • 각 문자 사이에 2픽셀 간격 부여
  • 가독성 향상이나 스타일링 목적에 유용

2. word-spacing

단어 간 간격을 조절한다.

h1 {
  word-spacing: 0.3em;
}

 

  • 단어 사이의 간격을 0.3em로 설정
  • 굵은 글씨나 큰 글씨의 가독성을 높일 때 사용

3. line-height

줄 간격(행간)을 조절한다.

p {
  line-height: 1.4;
}

 

  • 줄과 줄 사이 간격을 1.4배로 설정
  • 단위 없는 수치로 지정하면 폰트 크기에 비례해 반응형 적용됨

4. text-align

텍스트의 정렬 위치를 설정한다. (값 : left, right, center, justify)

h1 {
  text-align: right;
}

 

  • 텍스트를 오른쪽 정렬
  • 기본값은 왼쪽 정렬(left)

 


 

Web Fonts

이미지 출처 : codecademy

 

기존에는 웹 안전 폰트(web safe fonts) 를 사용했지만, 웹 폰트를 통해 훨씬 다양하고 개성 있는 글꼴을 사용할 수 있다. 

 

웹 폰트를 사용하는 방법은 아래와 같다 :

 

1. 무료 폰트 서비스 활용

 

  • 대표 서비스: Google Fonts, Adobe Fonts
  • HTML에 <link> 태그로 폰트를 연결하여 사용

2. 유료 폰트 직접 호스팅

  • 예: fonts.com에서 다운로드한 폰트를 직접 서버에 저장
  • CSS에서 @font-face 규칙을 사용하여 연결

 


 

Web Fonts Using <link>

Google Fonts는 다양한 웹폰트를 손쉽게 검색하고, 웹사이트에 연동할 수 있게 도와주는 무료 서비스이다.

 

사용 방법은 아래와 같다 :

 

1. 폰트 선택

  • 원하는 스타일에 맞는 폰트를 검색 및 선택
  • 해당 폰트의 다양한 스타일(굵기, 기울임 등) 확인 가능

2. 스타일 선택 후 링크 복사

  • 선택한 스타일을 확인하면 <link> 태그가 자동 생성

3. CSS에서 사용

  • 일반 폰트처럼 font-family로 지정
p {
  font-family: 'Roboto', sans-serif;
}

 

 

유의해야 할 사항은 다음과 같다 : 

 

  • font-family의 마지막에 대체 폰트(sans-serif 등) 를 추가해주는 것이 좋다.
  • <link>는 반드시 HTML의 <head> 태그 내부에 넣어야 적용된다.

 


 

Web Fonts Using @font-face

웹폰트를 외부 링크(<link>) 없이 직접 적용하고 싶다면 @font-face를 사용하면 된다.

 

순서는 다음과 같다 :

 

1. 폰트 파일 다운로드

 

  • .ttf, .woff, .woff2 등의 형식으로 폰트를 다운로드
  • 예: Google Fonts에서 ‘Roboto’ 다운로드 가능

2. 작업 디렉토리에 저장

  • 예: fonts/Roboto.woff2, fonts/Roboto.woff, fonts/Roboto.ttf

3. CSS에 @font-face 정의

@font-face {
  font-family: 'MyParagraphFont';
  src: url('fonts/Roboto.woff2') format('woff2'),
       url('fonts/Roboto.woff') format('woff'),
       url('fonts/Roboto.ttf') format('truetype');
}

 

  • font-family: 사용할 폰트 이름을 직접 지정 (자유롭게 작명 가능)
  • src: 상대 경로와 형식(format) 명시
  • 위에서부터 브라우저가 지원하는 형식을 찾아 적용함

4. 폰트 사용

p {
  font-family: 'MyParagraphFont', sans-serif;
}

 

  • 'MyParagraphFont': 위에서 지정한 이름으로 호출
  • sans-serif: 대체 폰트로 설정 (폰트 적용 실패 시 대비)

 

 

 

유의할 점은 다음과 같다 :

 

  • 가능한 경우 .woff2, .woff, .ttf 세 가지 형식을 모두 제공해 브라우저 호환성 확보
  • @font-face는 보통 CSS 파일 상단에 정의함

 


참고