Web開発において、適切なフォント形式を選択することはページの読み込み速度、ブラウザ間の互換性、およびユーザー体験に大きな影響を与えます。Fontelloはオープンソースのアイコンフォント生成ツールであり、複数のフォント形式を出力できます。この記事では、WOFF/WOFF2/TTF/OTFの4つの主要なフォント形式の技術特性を解説し、Fontelloの実際の使用例を交えて、最適なフォント形式を選択するためのガイドラインを提供します。
フォント形式の技術比較
1. WOFF2(Web Open Font Format 2.0)
WOFF2は現在のWeb環境で推奨される形式で、Googleによって開発されました。WOFFよりも圧縮率が向上しており(約30%小さくなります)。FontelloではデフォルトでWOFF2を優先的に読み込むように設定されています:
@font-face {
font-family: 'fontello';
src: url('font/fontello.woff2') format('woff2'), /* 最初にWOFF2を読み込む */
url('font/fontello.woff') format('woff');
}
コード出典:client/lib/embedded_fonts/fontface_fontello.css
主な利点:
- Brotli圧縮アルゴリズムを使用し、ファイルサイズが最小限になる
- TrueType/OpenTypeフォントのすべての機能をサポート
- 現代のブラウザ(Chrome 36+、Firefox 39+、Edge 14+)と互換性がある
2. WOFF(Web Open Font Format 1.0)
WOFFは最初にWeb向けに設計されたフォント形式で、メタデータの圧縮によりファイルサイズが削減され、WOFF2が普及する前に一般的な選択肢でした。FontelloではWOFF2の代替案としてWOFFを使用しています:
技術特性:
- zlib圧縮を使用し、TTFよりも約40%小さい
- 組み込みのメタデータフィールドがあり、著作権管理が容易
- 非常に高い互換性(IE 9+、すべての現代のブラウザ)
3. TTF/OTF(TrueType/OpenType Font)
TTFとOTFはデスクトップシステムの伝統的なフォント形式で、Fontelloではこれらの形式もサポートしています。主にローカル開発や特殊な状況で使用されます:
src: url('../font/icons.eot?87713699');
src: url('../font/icons.eot?87713699#iefix') format('embedded-opentype'),
url('../font/icons.woff?87713699') format('woff'),
url('../font/icons.ttf?87713699') format('truetype'), /* TTF形式 */
url('../font/icons.svg?87713699#icons') format('svg');
コード出典:client/lib/icons/src/css/icons.css
制約事項:
- 圧縮が組み込まれていないため、ファイルサイズが最大となる
- Web最適化機能が欠如し、読み込みパフォーマンスが低下する
- ローカルフォントインストールが必要な場合のみ使用することを推奨
実践的な選択ガイドライン
開発環境の設定
Fontelloプロジェクトでは、フォント設定ファイルを編集して出力形式を指定することをお勧めします:
- client/lib/embedded_fonts/config.ymlを編集する
- 「production」環境では「formats: ["woff2", "woff"]」、「development」環境では「formats: ["woff2", "woff", "ttf"]」を設定する
プロダクション環境のベストプラクティス
優先順位:
- WOFF2:95%以上の現代ブラウザに対応
- WOFF:IE9+などの古いブラウザをサポートする代替案
- TTF/OTF:ローカルフォントインストールが必要な場合のみ保持
よくある問題と解決策
1. ブラウザ間の互換性対処
FontelloはCSSハックを使用して全ブラウザでのサポートを実現します:
/* IE9-11の互換性対処 */
@font-face {
font-family: 'icons';
src: url('../font/icons.eot?87713699'); /* IE9 Compat Modes */
src: url('../font/icons.eot?87713699#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../font/icons.woff2?87713699') format('woff2'),
url('../font/icons.woff?87713699') format('woff');
}
コード出典:client/lib/icons/src/css/icons.css
2. パフォーマンス最適化戦略
- Fontelloのフォントサブセット機能を使用し、プロジェクトで必要なアイコンのみを含める
- Nginxのgzip/brotli圧縮を設定する:「gzip_types font/woff2 font/woff」
- 「font-display: swap」を使用してFOIT(Flash of Invisible Text)を防ぐ
選択ガイドラインのフローチャート
まとめ
Fontelloは専門的なアイコンフォントツールであり、柔軟なフォント形式の設定によりさまざまなシナリオに対応します。現代のWeb開発において、WOFF2+WOFFの組み合わせはパフォーマンスと互換性のバランスを取った最適な選択となります。特殊なシナリオ(IE8-のサポートやローカルフォントインストールが必要な場合など)では、TTF/OTF形式を追加することも可能です。この記事で紹介した技術選択ガイドラインとFontelloの設定方法を活用することで、効率的かつ互換性のあるアイコンフォントシステムを構築することができます。