仕事で Google の Noto Serif Japanese フォントを使う必要があり、そのままだと Regular だけで 5MB あるので、 Subset 化する必要があった。コマンドラインから簡単にできるものを探すのにやや時間がかかったので、メモしておく。
色々試した結果、 Python 製の fonttools
に入っている pyftsubset
が優秀だったので、それを使った。
https://github.com/fonttools/fonttools
使い方
NotoSerifJP-Regular をダウンロードする https://fonts.google.com/noto/specimen/Noto+Serif+JP/about
fonttools
をインストール
|
|
- コマンドを実行
|
|
もしくはファイルから指定できる。イケてる。
|
|
他に試したもの
Node.js 製の fontmin
もある。
https://github.com/ecomfe/fontmin
が、自分が試した限りは下記のような問題があった。
- あんまりメンテナンスされていなそう
- ESM モジュールに対応していないので、フォーク版をインストールする必要あり
- otf には対応していないので、一旦 ttf に変換する必要がある
ESM に対応していないので、このようなエラーで進めない。
|
|
これを回避するには、 npx fontmin-esm
とする必要がある。
また、 otf サポートされていない問題は特に面倒そうだったので、やめた。というかできなかった。
otf に対して fontmin
を適用しようとすると、このようなエラーで進めない。
|
|
オンラインで otf から ttf に変換するツールも試したが、なぜかサイズが 7kb になったりして変換できなかった。
他にも PHP 製のツールや Node.js + WASM のツールがあったが、いまいち使い方が分からなかったので敬遠した。