웹 페이지에서 폰트를 사용할 때, 폰트 파일을 로딩하는 방법과 최적화 기법을 이용하여 로딩 속도를 개선해보자
1. 로컬 폰트 사용하기
로컬에 설치된 폰트를 사용할 경우, 폰트를 다운로드할 필요 없이 로컬에서 빠르게 로딩할 수 있다. 이를 이용하기 위해 CSS @font-face 를 사용하여 로컬 폰트를 불러올 수 있다.
로컬 폰트를 사용하는 CSS 코드의 예시
@font-face {
font-family: 'Nanum Gothic';
src: local('Nanum Gothic'), local('NanumGothic'), url('NanumGothic.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
위 코드에서 local() 함수는 로컬 폰트를 참조하며, url() 함수는 웹 폰트 파일의 경로를 지정한다.
이렇게 로컬 폰트를 사용하면 웹 폰트를 다운로드할 필요 없이 빠르게 로딩할 수 있다.
2. 웹 폰트 Preloading
웹 폰트 파일이 크고 로딩 시간이 긴 경우, Preloading을 이용하여 로딩 시간을 줄일 수 있다. Preloading은 브라우저가 폰트 파일을 백그라운드에서 미리 다운로드하여, 폰트가 필요한 시점에 빠르게 로딩할 수 있도록 하는 방법이다.
웹 폰트 Preloading을 사용하는 HTML 코드의 예시
<link rel="preload" href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap"></noscript>
위 코드에서 rel="preload" 속성을 이용하여 웹 폰트 파일을 미리 다운로드하고, as="style" 속성을 이용하여 스타일 시트로 다운로드하도록 설정한다. onload 이벤트 핸들러를 이용하여 Preloading이 완료되면 스타일 시트를 로딩한다.
3. Subset 폰트 사용
Subset 폰트는 전체 폰트 파일이 아닌, 필요한 글자만 포함된 파일로 웹 페이지에서 필요한 글자만 다운로드하여 로딩 속도를 개선할 수 있다. 이를 이용하기 위해 Google Fonts에서 제공하는 Subset 폰트 기능을 이용하거나, 서드파티 Subset 폰트 생성 도구를 이용하여 Subset 폰트를 생성할 수 있다.
4. 폰트 파일 최적화
웹 폰트 파일이 크기 때문에 로딩 시간이 오래 걸릴 수 있다. 이를 해결하기 위해 다음과 같은 최적화 기법을 이용할 수 있다.
- Gzip 압축: 웹 서버에서 Gzip 압축을 사용하여 웹 폰트 파일을 압축하면 파일 크기를 줄일 수 있다.
- WOFF2 포맷 사용: WOFF2 포맷은 웹 폰트 파일을 압축하고 더 작은 크기로 저장할 수 있다. 따라서, WOFF2 포맷을 사용하면 로딩 속도를 개선할 수 있다.
- Subset 폰트 사용: Subset 폰트는 필요한 글자만 포함된 파일로, 전체 폰트 파일보다 작은 크기로 저장할 수 있다.
- 폰트 파일의 캐시 유지: 브라우저는 폰트 파일을 다운로드한 후 캐시에 저장합니다. 따라서, 폰트 파일의 캐시 유지 기간을 설정하면 다음에 같은 폰트를 사용할 때는 캐시된 파일을 사용하므로 로딩 속도를 개선할 수 있다.
이러한 최적화 기법을 이용하여 폰트 파일을 로딩할 때, Gzip 압축이나 WOFF2 포맷 사용, Subset 폰트 사용, 폰트 파일의 캐시 유지 등을 고려하여 최적화된 폰트 파일을 사용하면 로딩 속도를 개선할 수 있다.
'Basic > HTML & CSS' 카테고리의 다른 글
HTML5 시멘틱 태그 및 시멘틱 태그를 사용하는 이유 (0) | 2023.03.23 |
---|---|
CORS 에러 header 설정 방법 (0) | 2023.03.12 |
GET 요청에 body문을 보낼 수 있을까? (0) | 2023.02.26 |
[CSS] hover 시 테두리가 빛나는 css 만들기 (0) | 2023.02.04 |
Error response 200 vs 404? (0) | 2022.10.14 |