サブセット化したWebフォントをHugoで利用したい。
解決策
-
テーマの
static
ディレクトリ内にfonts
ディレクトリ(themes/kantas/static/fonts
)を作成しWebフォントを配置する。 -
HTMLの
<head/>
内で、あらかじめフォントを読み込む<link rel="preload" href="{{ .Site.BaseURL }}/fonts/NotoSansJP-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="{{ .Site.BaseURL }}/fonts/NotoSansJP-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous">
-
CSSファイル(
themes/kantas/assets/css/fonts.css
)を追加し、@font-face
を定義する。 1 2 3@font-face { font-display: swap; font-family: Noto Sans JP; font-style: normal; font-weight: 400; src: local("Noto Sans JP"),url(../fonts/NotoSansJP-Regular.woff2) format("woff2") } @font-face { font-display: swap; font-family: Noto Sans JP; font-style: normal; font-weight: 700; src: local("Noto Sans JP Bold"),url(../fonts/NotoSansJP-Bold.woff2) format("woff2") }
-
fonts.css
をHTML内で読み込む<!-- 略 --> {{- $fonts_css := resources.Get "css/fonts.css" | resources.Fingerprint -}} <link rel="stylesheet" href="{{ $fonts_css.RelPermalink }}"> <!-- 略 -->
-
Webフォントが利用されているか確認する
-
Chromeの
DevTools
で、ページのWebフォントが表示されているであろう要素を選択して、右クリックして検証
を選択 -
DevTools
のElements
タブ内のComputed
タブを表示し、スクロールして一番下に表示されるRendered Fonts
を確認する以下のように、
Noto Sans JP
がNetwork resource
と表示されていれば、Webフォントが利用されている。Noto Sans JP—Network resource(3 glyphs)
もし、
Network resource
ではなく、Local file
と表示されている場合、Webフォントではなく、自PCにインストールされているフォントが利用されている。
-
参考
- @font-face - CSS: カスケーディングスタイルシート | MDN
- fontTools Docs — fontTools Documentation
- 【備忘録】Chrome DevToolsで要素に適用されているフォントを確認する方法 - Qiita
- url() - CSS: カスケーディングスタイルシート | MDN
-
WebフォントのURLは、CSSファイルからの相対パスで指定する ↩︎
-
local()
とurl()
を併記することで、自PCに該当フォントがない場合のみWebフォントを利用するようになる。 ↩︎ -
MacOSのChromeの場合、
local("Noto Sans JP")
とfont-weight: 700
だけでは太字にならない。local("Noto Sans JP Bold")
のようにフルネームを指定する必要があるようだ。 参考: @font-face で font-weight: 700を指定時に、local(Noto Sans JP)では太字にならない · Issue #52 · kantas-spike/kantas-theme ↩︎