Webfont 사용 방법
서식
EOT, TTF, WOFF, WOFF2, SVG 등이 있지만 2019년 12월까지 거의 모든 브라우저가 WOFF와 WOFF2를 지원해 이 두 개만 읽으면 된다.
※ 단, 각 사건의 대상 브라우저를 확인하세요.
Google Fonts의 CDN 활용
태그에 Google Fonts를 불러오고 사용할 때 여러 글꼴을 읽으면 다음 태그가 발행됩니다.
<link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP:400,700|Roboto:400,700&display=swap&subset=japanese" rel="stylesheet">
W3C 검사에서 오류가 발생했습니다. 문법 오류를 피하기 위해 |
대신 %7C
사용했습니다.장점
간편한 사용
결점
렌더링 블록 발생
파일 경로가 변경될 수 있음
브라우저 비헤이비어의 차이
발생하기 쉬운 문제
FOUT(Flash of Unstyled Text)
웹 글꼴이 읽히기 전에 대체 글꼴로 표시되고 읽기가 완료되면 웹 글꼴로 전환되는 현상입니다.
크롬과 같은 브라우저는 시간 초과 전에 불러오기를 완료하지 않은 상태에서 대체 글꼴을 표시하고 글꼴을 다운로드한 후 지정한 글꼴로 전환하여 깜빡이는 문제가 발생했습니다.
FOIT(Flash of Invisible Text)
웹 글꼴 읽기가 완료될 때까지 텍스트 현상을 표시할 수 없습니다.
Safari는 글꼴이 불러오기를 계속 기다렸기 때문에 글꼴 다운로드가 끝날 때까지 텍스트를 표시할 수 없습니다.
CSS 최적화
앞에서 말한 바와 같이 브라우저에 따라 행동이 다르기 때문에 때때로 FOUT, FOIT 등의 문제가 발생할 수 있다.
font-display
속성은 CSS를 통해 글꼴을 읽을 때의 동작을 제어할 수 있습니다.장점
벽돌 링크 블록이 발생하지 않음(비동기식 읽기)
글꼴 동작을 자세히 제어할 수 있습니다
Edge, IE에서 사용 가능
auto
는 브라우저의 기본 동작입니다.block
시간 초과가 없기 때문에 FOUT가 없지만 FOIT가 발생하기 쉽다.swap
는 블록의 기한: 0초, 교환 기한: 무한, FOIT 분실, FOUT가 쉽게 발생한다.fallback
블록 기간: 0.1초, 교환 기간: 3초, Fortback 글꼴을 표시할 수 있습니다.optical
블록기간: 0.1초, 교환기간: 0초, FOUT가 발생하지 않고 FOIT도 최소한입니다.그러나 글꼴 취득 여부는 브라우저가 결정하기 때문에 빠른 텍스트 표시를 우선적으로 사용하는 것이 좋다.Font Loading API
글꼴의 다운로드 진행률과 행동을 모니터링할 수 있지만 브라우저 설치에 차이가 있기 때문에 아래에 설명된 웹 Font Loader는 사용하기 쉽다.
Web Font Loader
Google과 Typekit이 공동으로 개발한 글꼴 읽기를 제어할 수 있는 JavaScript 라이브러리소스 코드GitHub가 공개되어 무료로 사용할 수 있습니다.사용 방법은 Noto Sans JP의 사용 예에서 설명합니다.
preload를 통한 최적화
장점
웹 Font Loader보다 읽기(렌더링) 빠름
AMP에서도 사용 가능
결점
IE, Firefox에서 지원되지 않음
CDN을 사용할 수 없습니다.
이 가능하다, ~할 수 있다,...
Noto Sans JP 사용 예
HTML
<script>
WebFontConfig={
google:{
families:['Roboto:400,700', 'Noto+Sans+JP:400,700']
},
active: function() {
sessionStorage.fonts = true;
}
};
if (typeof WebFont === 'object') {
WebFont.load(WebFontConfig);
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" async></script>
<link rel="preload" as="font" href="/assets/fonts/yakuhanjp/YakuHanJP-Regular.woff2" crossorigin>
<link rel="preload" as="font" href="/assets/fonts/yakuhanjp/YakuHanJP-Bold.woff2" crossorigin>
<link rel="preload" as="font" href="/assets/fonts/yakuhanjp/YakuHanJP-Regular.woff" crossorigin>
<link rel="preload" as="font" href="/assets/fonts/yakuhanjp/YakuHanJP-Bold.woff" crossorigin>
CSS@font-face {
font-family: "YakuHanJP_Noto";
font-weight: 400;
font-style: normal;
src: url("/assets/fonts/yakuhanjp/YakuHanJP-Regular.woff2") format("woff2"), url("/assets/fonts/yakuhanjp/YakuHanJP-Regular.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: "YakuHanJP_Noto";
font-weight: 700;
font-style: normal;
src: url("/assets/fonts/yakuhanjp/YakuHanJP-Bold.woff2") format("woff2"), url("/assets/fonts/yakuhanjp/YakuHanJP-Bold.woff") format("woff");
font-display: swap;
}
}
세션 스토리지 사용브라우저를 닫기 전에 페이지를 넘겨도 웹 글꼴을 다시 불러오는 데 낭비되지 않습니다.
비동기 읽기 파일은script 탭으로 기술합니다
Giithub의 README의 기술은 스크립트 삽입 등의 가능성이 있어 취약성 관점에서 좋지 않은 기술이다.간단히script 탭의 async 속성 코드를 사용하여 기술합니다.
또한 비동기적으로 읽을 때는 WebFont이 사용됩니다.load () 를 실행하는 시점에 웹 Font Loader의 읽기가 완료되지 않았을 수도 있습니다. 따라서 웹 Font의 typeof를 확인하십시오. 완료되지 않았을 때 실행하지 않습니다.
Noto Sans JP에서 가장 신경 쓰는 건 Yaku Hans JP입니다.
웹 글꼴의 절반 정도만 있고 노트산스에 가장 적합한 글꼴 파일도 있습니다.
https://github.com/qrac/yakuhanjp
예를 들어 Yaku Hans는 preload를 사용하지만 WebFontLoader도 기술할 수 있다
인용원
웹 사이트 글꼴 최적화 | Web Fundamentals | Google Developers
브라우저 동작의 다른 내용을 게재하려면 참고 원본에서 사용하십시오.
Reference
이 문제에 관하여(Webfont 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shuhosaka/items/1a986854dfe47dd87795텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)