이전에는 웹 페이지를 최적화 하는 한 방법으로 lazy loading 방식을 알아보았다. 크롬 개발자 도구 탭에 있는 lighthouse를 통하면, 어떤 부분을 최적화를 추가로 할 수 있고, google에서 어떤 부분을 중요시 여기는지 추가로 확인할 수 있다. 폰트 최적화, 캐시최적화, CSS 최적화를 더 알아보겠으며 이번에는 폰트 최적화를 알아보자
✔️ typeface와 font
웹 폰트는 다음과 같은 규칙을 통해 적용 된다.
✔️ 웹 폰트의 장, 단점
FOUT(Flash of Unsytled Text)
: 브라우저가 웹 글꼴을 다운로드하기 전에 텍스트가 대체 글꼴로 렌더링 되는 현상
FOIT(Flash of Invisible Text)
: 브라우저가 웹글꼴을 다운르도하기 전에 텍스트가 보이지 않는 현상
아래 예시는 2016년 미국 상원의원 Mitt Romney의 기사에서 웹 폰트 적용의 로딩이 늦어져, 정반대의 내용이 사용자에게 전달된 예시 이다.
이 처럼 웹 폰트 적용의 설정을 어떻게 하는지에 따라 사용자에게 전달하는 것이 아예 달라질 수 있다.
폰트 적용 시점은 font-display 를 통해 컨트롤 할 수 있다.
fallback
을 통해 FOIT를 방지하고, FOUT을 최소화 할 수 있어 제일 기본 설정으로 사용된다.
아래와 같이 폰트가 로드 되는 시점에서 opacity를 조정함을 통해 사용자에게 더욱더 자연스럽게 보이게 할 수 있다.
<link rel="preload" href="/static_fonts/NanumGothic-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
기본적으로 local에 폰트가 있다면 그 폰트를 사용한다. 하지만 로컬에 저장된 폰트 이름을 기반으로 사용하기 때문에, 사용자의 local에 이름이 다르다면 소용이 없게 된다.
[transfonter 페이지]https://transfonter.org/
특정 변환기를 이용해서, 사용하는 format만 로드
unicode-range에 사용하는 unicode만 작성하여, 사용하는 문자만 로드
font를 data uri를 사용해서 받아오는 방법이다. FOIT와 FOUT가 방지되지만 css parsing이 block되어 렌더링이 지연된다. 특히 한글 폰트는 크기가 커서 속도가 더 느려질 수 있다.