로컬 폰트(Local Font)

사용자의 컴퓨터나 디바이스에 미리 설치된 폰트를 의미한다.
사용자는 로컬 폰트를 이용하여 웹 페이지에서 텍스트를 보거나 인쇄물을 제작할 수 있다. 예를 들어, "Arial"이나 "Times New Roman"과 같은 폰트들은 대부분의 컴퓨터나 디바이스에서 기본적으로 제공되는 로컬 폰트이다.

웹 폰트(Web Font)

인터넷을 통해 다운로드하여 사용하는 폰트이다. 웹 페이지에서 사용하는 특정 폰트가 로컬 폰트에 없을 경우 이를 대신하여 사용할 수 있다. 웹 폰트를 사용하면 디자인적 자유도가 높아진다. 또한 웹 폰트를 사용하면 폰트의 일관성을 유지할 수 있다. 대표적으로 Google Fonts, Adobe Fonts, Font Squirrel 등이 있다.


웹 페이지에서 폰트를 로딩하는 방법

  • 로컬 폰트 사용 시 preload 속성 이용
  • 로컬 폰트를 사용하는 경우, preload 속성을 사용하여 브라우저에 폰트를 로드하도록 지시할 수 있다. 이렇게 하면 웹 페이지가 로드될 때 폰트가 빠르게 표시될 수 있다. preload 속성은 link 태그의 rel 속성과 함께 사용된다.
    <link rel="preload" href="myfont.woff2" as="font" type="font/woff2" crossorigin>
  • 웹 폰트 사용 시 @font-face 규칙 이용
  • 웹 폰트를 사용하는 경우, @font-face 규칙을 사용하여 폰트를 로드할 수 있다. 이 규칙을 사용하면 웹 페이지에서 폰트를 사용하는 요소가 로드될 때 폰트가 자동으로 로드된다.
     @font-face {
      font-family: "MyWebFont";
      src: url("myfont.woff2") format("woff2");
      font-weight: 400;
      font-style: normal;
    }
  • 웹 폰트 사용 시 font-display 속성 이용
  • 웹 폰트를 사용하는 경우, font-display 속성을 사용하여 웹 페이지의 렌더링 속도를 최적화할 수 있다. 이 속성을 사용하면 웹 페이지가 로드될 때 폰트가 로드되기 전에 일시적으로 폰트가 없는 상태에서 텍스트가 표시되는 문제를 방지할 수 있다. font-display 속성은 @font-face 규칙 안에서 지정한다.
    @font-face {
      font-family: "MyWebFont";
      src: url("myfont.woff2") format("woff2");
      font-weight: 400;
      font-style: normal;
      font-display: swap;
    }
    

    📍 preload와 font-display 속성을 적절히 사용하면 웹 페이지의 렌더링 성능을 향상시키는 데 가장 효과적이다.

    웹 폰트만 로딩해야하는 상황에서 최적화 기법

  • 필요한 폰트만 로딩
  • 웹 페이지에서 사용하는 모든 폰트를 로딩하는 것은 불필요한 대역폭과 로딩 시간을 발생시키므로 최소한의 필요한 폰트만 로딩해야 한다. 이를 위해 폰트 파일의 크기를 최적화하고, 폰트를 사용하는 요소에만 로드하도록 지정하는 것이 좋다.
  • 서브셋 폰트 사용
  • 서브셋 폰트는 전체 폰트 중에서 사용하는 글자만 추려내어 만든 폰트로, 필요한 글자만 로딩하여 대역폭과 로딩 시간을 절약할 수 있다. 이를 위해서는 서브셋 폰트 생성 도구를 사용하거나, Google Fonts와 같은 서비스를 이용하여 서브셋 폰트를 다운로드할 수 있다.
  • 폰트 압축 사용
  • 웹 폰트 파일은 크기가 크기 때문에 다운로드 시간이 오래 걸릴 수 있다. 이를 해결하기 위해 폰트 파일을 Gzip, Brotli와 같은 압축 알고리즘을 사용하여 압축할 수 있다. 이렇게 하면 폰트 파일의 크기가 줄어들어 다운로드 시간이 단축된다.
  • 캐싱 활용
  • 폰트 파일은 자주 사용되기 때문에, 캐싱을 활용하여 다운로드 시간을 줄일 수 있다. 이를 위해 폰트 파일에 적절한 캐싱 헤더를 설정하여 브라우저가 캐시를 활용하도록 할 수 있다. 예를 들어, 캐싱 기간을 길게 설정하거나 ETag를 사용하여 캐싱 제어를 할 수 있다.

    📍 최적화 기법들을 적절하게 활용하면 웹 페이지의 폰트 로딩 성능을 향상시킬 수 있다.

    profile
    이유 없는 개발은 없다

    0개의 댓글