@font-face는 CSS3에서 웹용 글꼴을 직접 삽입할 수 있도록 해주는 기능입니다. 일반적인 운영체제에 포함되지 않은 특수 폰트를 웹사이트에 적용하고 싶을 때, 전통적으로 텍스트를 이미지로 변환하는 방식이 사용되었지만, 이는 접근성, 유지보수성, 검색 엔진 최적화 측면에서 큰 단점이 있습니다. 이러한 문제를 해결하기 위해 JavaScript 또는 Flash를 활용한 기법도 있었지만, 복잡하거나 호환성 문제가 발생했습니다. 이번에는 순수한 CSS의 @font-face 속성을 이용해 어떤 폰트든 웹에서 효과적으로 사용하는 방법을 설명합니다.
@font-face 구문 구조
@font-face {
font-family: 'customFontName';
src: url('path/to/font.woff2') format('woff2'),
url('path/to/font.woff') format('woff'),
url('path/to/font.ttf') format('truetype'),
url('path/to/font.eot') format('embedded-opentype'),
url('path/to/font.svg#fontId') format('svg');
font-weight: normal;
font-style: normal;
}
속성 설명
- font-family: 사용자 정의 폰트 이름. 이후
font-family속성에서 참조됩니다. - src: 폰트 파일의 경로와 형식 정보를 포함합니다. 여러 형식을 지원하면 브라우저별 호환성이 높아집니다.
- format: 폰트 파일의 형식을 명시하여 브라우저가 적절한 파일을 선택하도록 도와줍니다. 주요 값은
woff,woff2,truetype,embedded-opentype,svg등입니다. - font-weight, font-style: 폰트의 굵기 및 스타일 설정 (예:
bold,italic).
실현 단계
1단계: 다중 형식의 폰트 파일 확보
모든 주요 브라우저에서 일관된 표시를 위해 다음과 같은 파일 형식을 준비해야 합니다:
- WOFF2 / WOFF: 최신 브라우저(크롬, 파이어폭스, 사파리 등)에 최적화됨.
- TTF (TrueType): 오래된 브라우저나 일부 모바일 환경에서 필요.
- EOT (Embedded OpenType): Internet Explorer 8 이하 지원.
- SVG: iOS Safari 등 일부 플랫폼에서 필요.
실제로는 보통 .ttf 또는 .otf 파일을 얻은 후, FontSquirrel 또는 Online Font Converter 등의 도구를 통해 다른 형식으로 변환할 수 있습니다.
2단계: 폰트 선언 및 적용
다양한 형식의 폰트 파일을 준비했다면, 스타일시트에 @font-face를 정의합니다.
@font-face {
font-family: 'myCustomFont';
src: url('../fonts/myfont.woff2') format('woff2'),
url('../fonts/myfont.woff') format('woff'),
url('../fonts/myfont.ttf') format('truetype'),
url('../fonts/myfont.eot') format('embedded-opentype');
font-weight: normal;
font-style: normal;
}
3단계: 웹 요소에 폰트 적용
정의한 폰트를 실제 요소에 사용합니다.
body {
font-family: 'myCustomFont', 'Helvetica', sans-serif;
}
h2 {
font-family: 'myCustomFont', Arial, serif;
}
p {
font-size: 16px;
font-family: 'myCustomFont', Verdana, sans-serif;
}
이렇게 하면 브라우저는 가장 최적의 폰트 형식을 자동으로 선택하여 로드하게 됩니다. 또한, 기본 폰트를 백업으로 두어 폰트 로딩 실패 시에도 가독성이 유지됩니다.
참고 팁
- 폰트 파일은 압축된 형식(예: WOFF2)을 우선적으로 사용하면 성능이 향상됩니다.
@font-face정의는 가능한 최상위 위치(예:styles.css)에 배치하고, 중복 정의를 피하세요.- Google Fonts나 Adobe Fonts처럼 외부 서비스를 사용하면 폰트 관리가 간편하지만, 자체 호스팅이 필요한 경우도 있으므로 상황에 맞게 선택하세요.