日本語 Web フォントのライセンスとサブセット化
一言まとめ
SIL OFL 1.1 のフォントは同梱配布・商用可だが、再配布時は著作権表示・OFL.txt 同梱・Reserved Font Name の 3 条件が要る。Noto Serif JP は約 4MB / ウェイトなので pyftsubset で半減させ、縦書きなら --layout-features='*' を忘れない。
目次 5 sections
調査時点: 2026-04。
SIL OFL(SIL Open Font License)は、フォントの利用・改変・再配布の条件を定めるオープンライセンス。サブセット化は、必要な文字や機能にフォントの収録範囲を絞ってファイルを小さくする処理。
SIL OFL 1.1 の扱い
Noto Serif JP、源ノ明朝、しっぽり明朝などが該当する。
- フォントファイルをテンプレートやサイトに同梱して販売・配布できる(フォント単体の販売は不可)。改変・派生・商用使用可で、属性表示は不要。
- ファイルを再配布するときの必須条件: 著作権表示を引き継ぐ、OFL.txt を同梱する、派生フォントに Reserved Font Name を使わない。
- PDF や画像への埋め込みは「配布」に当たらないため OFL の条件は掛からない。
- はんなり明朝は商用・同人可だが OFL の明示がなく、個別確認が要る。
配信方法と条件の関係
| 方法 | OFL 再配布条件 | 補足 |
|---|---|---|
| Google Fonts CDN | 掛からない(ファイルを配布しない) | 閲覧者の IP が Google に送られるため GDPR の考慮が要る |
| セルフホスト(Fontsource など) | 掛かる | @fontsource-variable/noto-serif-jp は可変フォント(weight 200〜900)を npm で入れられ、外部リクエストが出ない |
サブセット化
Noto Serif JP は約 4MB / ウェイト。pyftsubset で約 50% 削減、WOFF2 でさらに 20〜30% 削減できる。
pyftsubset NotoSerifJP-Regular.otf --output-file=NotoSerifJP-Regular.woff2 \ --flavor=woff2 --layout-features='*' \ --unicodes='U+0020-007E,U+3000-30FF,U+4E00-9FAF,U+FF01-FF60,U+FF65-FF9F' \ --with-zopfli --verbose--layout-features='*'は必ず付ける。省略すると縦書き用の字形(vkna/vpal/vert)が落ちる。- Unicode レンジの目安: U+0020-007E(ASCII)、U+3000-30FF(句読点・かな・カナ)、U+4E00-9FAF(基本漢字)、U+FF01-FF60(全角記号)、U+FF65-FF9F(半角カナ)。
- 使用グリフだけを自動抽出するなら
glyphhanger。 - 可変フォントに対する
pyftsubsetの正確なオプション組み合わせは当時未検証。
関連
更新履歴
- 2026-04-19: 初版(ローカル調査ノート)
- 2026-10-17: Wiki へ移植、概念ページとして再構成。冒頭に定義を追加
出典
同じトピック — Web
- 単一画面の Canvas ツールのスタック選定(vanilla TS / Svelte / Preact と PWA ツーリング)
- DAM カラオケ検索(clubdam)の挙動と制約
- Core Web Vitals と画像最適化
- favicon の最小構成(SVG + ICO + apple-touch-icon + manifest)
- フロントエンドのフレームワークとツールの動き(2025)
- HTML-in-Canvas API
- HTML-in-Canvas の実現性(a11y・性能・セットアップ・シェーダー)
- iOS Safari で canvas の画像を保存させる(download 属性 / Web Share / 長押し)
- 個人サイトのライブウィジェットと外部 API の制限
- モダン CSS / Web API の対応状況(2025-2026)
- OPFS(Origin Private File System)
- Google Places API のキーの守り方(ブラウザ露出 vs サーバ中継)
- iOS の PWA 制限
- 機能別 React / TS ライブラリ対応表(2026-04 時点)
- URL 長の上限と日本語の URL エンコード膨張
- 書き出すテキストファイルの UTF-8 BOM と Markdown 継続行
- 縦書き Web の実装(writing-mode・ルビ・圏点・縦中横・禁則)
- PWA の Web Share Target(Android)の実測と落とし穴
- WebAssembly(Wasm)
- YouTube oEmbed で動画タイトルとチャンネル名を取る