Webフォント配信とfsType
Webフォントとして配信するためにフォントを WOFF や WOFF2 へ変換すると、ファイルの入れ物は変わります。しかし、埋め込み許可の指定も、利用許諾も、変換によって変わるものではありません。ここでは形式の構造と、本ツールが WOFF2 を解析できない理由を整理します。
情報確認日:
1. WOFF の仕様には fsType という語が出てこない
W3C が公開している WOFF File Format 1.0 と WOFF File Format 2.0 の仕様書本文を確認したところ、fsType という語は一度も出てきませんでした(2026年8月4日に本文を確認)。
これは欠落ではありません。WOFF は、もとのフォント(sfnt形式)のテーブルをそのまま包み直すための入れ物の形式だからです。埋め込み許可の指定は、包まれた中身の OS/2 テーブルの中にそのまま残ります。
TTF を WOFF に変換しても、fsType の値は変換前と同じものが中に入っています。入れ物を変えたことで、値の意味が変わったり、許諾の範囲が広がったりすることはありません。
2. WOFF(1.0)はテーブルを1つずつ圧縮する
WOFF 1.0 の仕様は、フォントのテーブルについて「もとのフォントのテーブルとまったく同じである。ただし各テーブルは圧縮されている場合がある」と定めています。圧縮に使う形式は、規範的な参照先として RFC 1950 の ZLIB 形式が指定されています。
この「テーブルごとに圧縮する」という構造のおかげで、ファイル全体を展開しなくても、OS/2 テーブルだけを取り出して展開できます。ブラウザの標準API DecompressionStream("deflate") が RFC 1950 形式に対応しているため、外部のライブラリを使わずに読み取れます。本ツールが WOFF に対応できているのはこのためです。
さらに WOFF 1.0 には、圧縮した結果がもとのサイズ以上になる場合は、そのテーブルを圧縮せずに格納しなければならないという規定があります。この場合、テーブル一覧に記録された圧縮後の長さは、もとの長さと同じ値になります。OS/2 はフォント全体に比べれば小さなテーブルなので、この規定に当てはまることが起こりえます。本ツールは、圧縮後の長さがもとの長さと同じであれば展開せずにそのまま読み取ります。
本文と規範的な参照先は ZLIB 形式(RFC 1950)を指していますが、付録にあたる箇所には gzip を使うと読める一文があります。どちらに従うべきかを明示した規定は見つかりませんでした。本ツールは、本文と規範的な参照先のほう(RFC 1950)に従って実装しています。
3. WOFF2 を解析できない理由
本ツールは WOFF2(.woff2)を解析できません。判定結果として「WOFF2 は解析できません(このツールの対応範囲外です)」と表示します。理由は次の3つです。
-
WOFF2 は全テーブルを1本のストリームにまとめて圧縮します。WOFF2 の仕様は、フォントのテーブルのデータが「全テーブルを含む単一のデータストリーム」として圧縮されると書いています。テーブルごとに区切られていないため、
OS/2だけを取り出すことができません。WOFF 1.0 で使える「必要なテーブルだけ展開する」という手が、構造上そもそも使えません。 -
そのストリームの展開に必要な形式は、ブラウザの標準APIの仕様には存在しますが、実装が揃っていません。WHATWG の Compression Standard は、
DecompressionStreamが受け付ける形式としてbrotliを含む4つを定義しています。仕様には存在します。しかし、公開されているブラウザ互換データを2026年8月4日に確認したところ、Chrome と Edge はbrotliを未実装と記録されていました(Chrome 側には未実装であることを示す課題番号が添えられています)。Firefox は 147、Safari は 18.4 で追加済みと記録されています。つまり、同じコードがブラウザによって動いたり動かなかったりする状態です。本ツールは、動く環境と動かない環境が混ざる機能を「対応形式」として掲げないことにしました。 - WOFF2 のテーブル一覧は WOFF 1.0 とは別の形式です。可変長のフィールドや変換フラグを持つ構造で、仮に展開できたとしても、テーブルの位置を求めるには別の実装が必要になります。
WHATWG の Compression Standard には brotli が定義されており、実装しているブラウザもあります。正確に書くと「仕様には存在するが、2026年8月4日時点で Chrome と Edge が未実装」です。ブラウザの実装状況は更新されるため、この種の記述には確認日が必要です。上に書いた内容も、2026年8月4日時点で公開されていた互換データに基づくものです。
4. 形式を変換しても、利用許諾は変わりません
ファイル形式の変換は、フォント提供元が定めた条件を変えるものではありません。Web配信が条文で認められていないフォントは、WOFF や WOFF2 に変換しても、条文の側は変わりません。また、条文が改変を認めていない場合、形式の変換をどう扱うかも条文の側の問題になります。当サイトの日本語フォントのライセンス早見表では、掲載している42書体のうち11書体が改変を不可と記録しています(確認日 2026年7月25日)。
また、Webフォントとして配信する場合、ファイルは誰でも取得できる状態でサーバーに置かれます。これは、文書の中にフォントを埋め込むこととは配布の形が違います。W3C の WOFF 1.0 仕様は、フォントをWeb用に包む形式を定めたものですが、その全文に fsType も OS/2 も一度も出てきません。同仕様が述べているのは「適切に許諾された(properly licensed)フォントであればWOFF形式にできる」という趣旨で、配信してよいかどうかの判断は、値の側ではなく条文の側に置かれています。実際、上記の早見表では42書体のうち12書体がWebフォントとしての配信を不可と記録しています。
5. 手元のファイルで確認できること・できないこと
| 確認したいこと | どこで確認するか |
|---|---|
手元のファイルに入っている fsType の値 | 本ツールで読み取れます(TTF・OTF・TTC・WOFF)。 |
| 変換後のファイルにも同じ値が入っているか | 変換前と変換後の両方を本ツールに読み込ませて、値を見比べてください。 |
| フォント自身が申告しているライセンス記述 | 本ツールが fsType の隣に並べて表示します(nameID 13・14)。 |
| Web配信が条文で認められているか | ファイルからは分かりません。日本語フォントのライセンス早見表と、提供元の条文で確認してください。 |
| サブセット化してよいか | 付加ビット(No subsetting)はファイルから読み取れますが、可否の判断は条文で行ってください。 |
| WOFF2 ファイルの中の値 | 本ツールでは読み取れません。変換前のファイルが手元にあれば、そちらを読み込んでください。 |
fsType の値とライセンス条文が実際にどう食い違うのかは、技術フラグと利用許諾は別物で、読み取った書体の一覧つきで扱っています。書体ごとの条文の整理は日本語フォントのライセンス早見表にあります。
参考資料
- W3C:WOFF File Format 1.0(確認日 2026年8月4日)
- W3C:WOFF File Format 2.0(確認日 2026年8月4日)
- WHATWG:Compression Standard(DecompressionStream が受け付ける形式)(確認日 2026年8月4日)
- MDN:DecompressionStream(確認日 2026年8月4日)
- OpenType 仕様:OS/2 テーブル(確認日 2026年8月4日)
ブラウザの実装状況は更新されます。このページの記述は2026年8月4日時点で公開されていた互換データに基づいています。