svgからwoff2へ変換:「Fantasticon」→「 FontForge+grunt-webfont」
久しぶりにsvgからwoff2へ変換したときの覚書。 Gemini 3 Flash Previewと対話。 環境: FreeBSD 14.3-RELEASE-p9, Node.js v24.13.0 1. Fantasticonとは? Gemini先生に聞いたらFantasticonをお勧めされたので調査。 GitHub - tancredi/fantasticon: Icon font generation tool · GitHub Fantasticon は、単なるコンバーターではなく、アイコンフォント構築のためのオーケストレーター(まとめ役)。 処理のステップと使用ツール SVG → SVG Font (svgicons2svgfont) 複数の SVG ファイルを読み込み、1つの巨大な XML ベースのフォントファイル(SVG Font)にまとめる。 この段階で、パスデータ(d属性)がフォントのグリフ座標系にスケーリング。 SVG Font → TTF (svg2ttf) XML形式の SVG Font を、バイナリ形式の TrueType Font (TTF) に変換。 TTF → WOFF (ttf2woff) TTF を zlib で圧縮し、WOFF 形式のヘッダを付与。 TTF → WOFF2 (wawoff2) WebAssembly 版のコンバーターを使用して WOFF2 を生成。 なぜ FontForgeなしで変換できるのか? かつてはSVG からフォントを作るには、FontForge のような C/C++ で書かれたデスクトップアプリを OS にインストールし、Python スクリプト経由で操作するのが一般的。 WOFF2 形式は、Google が開発した Brotli という非常に強力な圧縮アルゴリズムを使用する。 この圧縮ロジックは非常に複雑で、かつては C++ の公式リファレンス実装(google/woff2)を使うしかなかった。 Fantasticon が内部で使っているttf2woff2は、そのGoogle製の C++ コードをWebAssembly (プラットフォーム非依存のバイナリ形式)にコンパイルしたもの。 Node.jsはWebAssemblyを実行できる。 fantasticonをインストー...