#frontend

2022.Feb.05

폰트로 인한 layout shift 방지하기


브라우저에서 레이아웃 변형layout shift 이 일어났다고 하면 단순히 화면상의 배치가 바뀌었다는 것만을 뜻하지 않습니다. 실제로 변형된 것은 단 하나의 객체만 바뀌었다고 하더라도, 전체적인 화면상의 위치를 재계산해야할 필요가 있을 때 레이아웃 변형이 일어났다고 표현합니다. 따라서 레이아웃 변형이 일어났다고 하면, 일반적으로 사용자 입장에서는 전체 화면이 한꺼번에 움직이므로 깜박거리는 화면이나 느려진 인터페이스를 경험하게 됩니다.

코드나 알고리즘상의 퍼포먼스 하락은 빠르게 탐지할 수 있습니다. 그러나 레이아웃 변형의 경우 스타일이나 HTML 태그 배치의 문제로 인해서 발생하는 경우가 많기 때문에 해당 내용을 놓치기 쉽습니다. 마침 해커뉴스에 레이아웃 변형의 가장 흔한 유형 중 하나인 폰트로 인한 레이아웃 변형을 막는 법에 대해 블로그 포스팅이 올라왔기에 간단히 요약하여 공유드립니다. 아이콘 폰트 및 시스템 폰트 활용에 대한 이야기는 디자이너분들도 알아두시면 좋을 내용인 것 같습니다.

폰트로 인한 레이아웃 변형(layout shift)을 방지하는 법 본문 링크(영문)

역주: 이 경우는 FCP(First Contentful Paint)는 느려질 수 있기 때문에 논의를 거쳐 사용해야할 것 같습니다.

역주: 이 경우는 원본과 비교했을 때 자체 생성된 볼드와 이탤릭체의 심미성을 고려하여 적용해야 할 것 같습니다.

역주: 이 경우는 수동으로 압축을 적용하면 되고, 간혹 브라우저 및 기기에 따라 woff, woff2를 지원하지 않는 경우도 있어서 상황에 맞게 사용해야할 것 같습니다.

그 외에도 현재 크롬에서 최근 도입된 CSS속성 모음인 f-mods를 이용하여 폰트를 최적화하는 방법도 소개하고 있습니다. 이 경우 사파리와 IE에서는 아직 사용이 불가능합니다. 그러나 PWA를 비롯해 대부분의 크롬 자체 기술이 다른 브라우저에서도 채용된 것을 보았을 때 기대해봐도 좋을 것 같습니다.