Web オープンフォント形式 (.woff)
W3C 標準Web Open Font Format(WOFF)は、W3Cが推奨する歴史的な第1世代のオープン標準Webフォント形式であり、標準のTrueTypeまたはOpenTypeフォントをzlib圧縮とXMLライセンスメタデータでラップしています。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで WOFF ファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで WOFF ファイルを識別します:
16進数シグネチャ (オフセット 0):
77 4F 46 46ASCII表現: wOFF
標準化: W3C Recommendation (2012)
技術仕様
| コンテナアーキテクチャ | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| 圧縮 | Deflate (zlib) compression applied to each individual font table |
| バイトエンディアン | Big-Endian (SFNT standard) |
| 色空間 | Inherited from underlying font tables |
| チャンネルと構造 | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| 最大寸法 | Up to 65,535 glyphs per font file |
| 透過性 | Inherited from underlying font format |
| ストリーミングとプログレッシブ | Table-by-table decompression enables streaming font loading |
技術比較マトリックス: WOFF 対 競合製品
| 技術属性 | WOFF (現在) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| 圧縮コーデック | テーブルごとのDeflate(zlib) | テーブル前処理付きBrotli | 非圧縮SFNT | 非圧縮SFNT |
| マジック署名 | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| 相対的なファイルサイズ | TTFより約40%小さい | TTFより約60%小さい | ベースライン標準(100%) | ベースライン標準(100%) |
| ターゲット環境 | レガシーWebブラウザ(IE9+、Safari 5+) | 最新のWebブラウザ(ユニバーサル) | デスクトップオペレーティングシステム | デスクトップパブリッシングおよび印刷 |
一般的な破損モードと16進数リカバリガイド
ブラウザコンソールの警告:「ダウンロードしたフォントのデコードに失敗しました:OTS解析エラー(Failed to download font: OTS parsing error)」。
根本原因: 宣言された未圧縮テーブルの長さの不一致、または破損したzlibストリーム。
復旧: フォントテーブルを再圧縮するか、File2Fileフォントコンバーターを使用してWOFF2に変換します。
セキュリティ分析とパーサー攻撃ベクトル
Webブラウザは、信頼できないWebドメインからダウンロードしたWOFFファイルをOpenType Sanitizer(OTS)を使用して解析し、エクスプロイトペイロードをブロックします。
既知の攻撃ベクター
- 破損したフォントテーブルチャンクのzlib解凍中のバッファオーバーリード。
- フォントレンダラーでヒープバッファオーバーフローを引き起こす、一致しないテーブル長フィールド。
- フォントテーブルの展開中のメモリ枯渇によるサービス拒否。
防御的ベストプラクティス:
歴史的背景とマイルストーン
主な利点とメリット
- 未圧縮の生のTTFやOTFファイルと比較して、Webフォントのファイルサイズを30%から50%削減します。
- 2011年以降にリリースされたすべてのデスクトップおよびモバイルWebブラウザ間での普遍的な後方互換性。
- フォントのライセンス、作者のクレジット、およびファウンドリの著作権情報用のオプションのXMLメタデータブロックが含まれています。
技術的な制限とデメリット
- Brotliアルゴリズムを使用して約30%小さく圧縮するWOFF2に取って代わられました。
- TTF/OTFに変換しない限り、デスクトップオペレーティングシステム(Windows/Mac)に直接インストールすることはできません。
- 古いzlib圧縮アルゴリズムは、最新のエントロピーエンコーダーほど効率的ではありません。
興味深い技術トリビア
- WOFF 1.0のマジックバイトは「wOFF」(0x77 0x4F 0x46 0x46)であり、WOFF 2.0は「wOF2」を使用します。
- タイプファウンドリは、WOFFの特化されたコンテナによってWebフォントが不正コピー可能なデスクトップフォントと区別されるようになったため、WOFFが作成された後に初めてWeb上でフォントを使用することに同意しました。
- WOFFは、公式のW3C勧告になる前の2010年に、Firefox 3.6に最初に実装されました。
よくある技術的な質問
WOFF と WOFF2 の違いは何ですか?
WOFF は zlib 圧縮を使用しますが、WOFF2 は Google の新しい Brotli アルゴリズムとテーブル変換を使用するため、WOFF よりもファイルサイズが約30%小さくなります。
デスクトップ用に WOFF フォントを TTF または OTF に変換するにはどうすればよいですか?
Webブラウザ上で File2File.app を直接使用すれば、数秒で WOFF ファイルをインストール可能なデスクトップ用の TTF または OTF フォントに変換できます。
現代のWebサイトでも WOFF 1.0 はまだ必要ですか?
いいえ。すべてのモダンブラウザが WOFF2 をネイティブサポートしています。WOFF 1.0 は、Internet Explorer などの古いレガシーブラウザに対応する必要がある場合にのみ必要です。