MENU

【woff2版】boldフォントとNotoSansの悩ましさ解消方法

h1などにウェイトの大きいフォントを使用したい場合、Noto Sans JPのweight800または900が欲しいところだが、Googlefontから外部読込にした場合、読込に時間がかかる懸念がある。

もう一つの解決方法がフォントファイルそのものをセルフホストして参照する方法。

参:https://chatgpt.com/share/68f4640f-ffd4-8005-8ea9-332004b4f2f6

目次

woff2ファイルの設置

woff2のダウンロード:https://gwfh.mranftl.com/fonts/noto-sans-jp?subsets=latin&utm_source=chatgpt.com

woffにはwoffとwoff2がある。
woff:レガシーブラウザ用
woff2:もダウンブラウザ用。

indexファイルのあるディレクトリに/fonts/を作成して、そこに配置。

HTML側のheadでサーバ上のwoff2を参照

<link rel="preload" as="font" type="font/woff2" href="fonts/noto-sans-jp-v55-japanese_latin-800.woff2" crossorigin>

GoogleFontsは読み込まない。
HTMLはこんな感じ。

 <p class="leed exbold">ラチェットは、動作方向を一方に制限するために用いられる機構である。極めて広範に用いられ例えば自転車、回り木戸、レンチ(一定面内での回転が容易になる)、巻取機(ワインダ)、ジャッキなど、また2000年頃より作業用安全帽のヘッドバンドにも使用されはじめている。
</p>
<p class="bold">
一般に、ラチェットは歯車と歯止め(爪)を組み合わせてラックに取り付ける。ラチェット用の歯車は通常の歯車と異なり、歯を傾けてある。この傾きがラチェットに方向性をもたらしている。
</p>
<p class="">
爪は薄いが頑丈な突起物であり、歯車にもたれ掛かるように配置される。歯車が適する方向(図1では反時計方向)に回転する時は爪は容易に歯を乗り越えてまた元の位置に落ち着くが、時計方向に回そうとすると爪が歯に食い込むので回転させることができない。
</p>

CSS

woffを使用する場合、@font-faceでフォントを定義。
その他は、通常のfont-family指定で使用可能になる。

@font-face {
    font-family: "Noto Sans JP";
    font-style: normal;
    font-weight: 800;
    src: url("../fonts/noto-sans-jp-v55-japanese_latin-800.woff2") format("woff2");
    font-display: swap; /* すぐフォールバックで描画→到着後に置換(LCP遅延防止) */
}

body{
    position: relative;
    font-family: -apple-system, "Segoe UI", "Hiragino Kaku Gothic ProN", sans-serif;
    letter-spacing: -0.025em;
    color: #202020;
    font-size: 16px;
}

div, p{
	text-align: justify;
    margin: 0 auto 2rem auto;
}

.bold{
    font-weight: 700;
}

.exbold{
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 800;
    line-height: 1.2em;
}

.leed{
    font-size: 36px;
}

@font-faceではサーバ上に置いたwoff2を指定。この場合、

  src: url("../fonts/noto-sans-jp-v55-japanese_latin-800.woff2") format("woff2");

全体挙動

この場合、太字にしたい要素のクラスとしてexboldを指定。ここだけがNoto Sans JP weight 800になる。
その他の部分は、Noto Sans JPのフォントとなる。

woffは初回読込時に通信量が増えるが、1ウェイトだけなら1MB程度で、次回以降のアクセスではフォント関連の通信が基本的に0となる。
今回はNoto Sans Jp weight 800のみの使用のため、軽量。

https://dooop.net/font_woff2_test/

また今回の記述方法であれば、ブラウザ間の表示差はほぼ出ない。
CWVのCLSスコアをダメにしそうな印象はあるが、それはまた次回以降。

目次