見出し用の欧文フォントを一書体だけ導入したい。しかし配布版の woff2 は 59KB あり、和文フォールバックと混植する前提なら大半のグリフは使われない。fonttools の pyftsubset で Latin 領域だけを残したところ、23KB まで縮んだ。
実行したコマンド
pyftsubset Font-Variable.woff2 \
--output-file=font-latin.woff2 \
--flavor=woff2 \
--unicodes="U+0000-00FF,U+2000-206F,U+2190-21FF" \
--layout-features='*'
範囲は基本ラテンとラテン補助、約物、矢印まで。--layout-features='*' を付けないとリガチャやカーニングの OpenType 機能が落ちるので注意する。
確認した三つの落とし穴
- 可変フォントの weight 軸が残っているか(
fvarテーブルの確認) font-display: swapにして FOUT を許容し、読み込み失敗時もテキストが出ること- ライセンスがサブセット配布を許すか。OFL は改変版の同梱配布にライセンス全文の同梱を求める
まとめ
サブセット化は一度やれば終わりの作業で、59KB→23KB の削減が全ページに効く。ライセンス表記だけは省略せず、リポジトリ直下の NOTICE に全文を置いた。