| この記事の要点 |
|
概要
EOT(Embedded OpenType、エンベデッドオープンタイプ)は、Microsoft が 1996 年頃に策定した Internet Explorer 専用の Web フォント形式です。IE4.0(1997 年)から実装され、IE5・IE6・IE7・IE8・IE9・IE10・IE11 と、IE シリーズすべてでサポートされた一方、他社ブラウザは一度も対応しませんでした。拡張子は .eot。実体は TrueType / OpenType(SFNT)に Microsoft の MTX 圧縮 と ドメインロック(rootstring)機能を追加した独自ラッパーです。
EOT が生まれた背景には、1990 年代後半の Web フォント事情があります。当時、フォントは Microsoft や Adobe のような専門ベンダから高額で買うのが普通で、それをそのまま Web に置くと不正コピーされる懸念がありました。Microsoft はこれを解決するために「EOT は指定された URL からしか読み込めない」というドメインロック機能を埋め込み、フォントベンダに「Web 配信しても安全ですよ」と訴求しました。しかしこの仕組みは Microsoft 独自 であり、Mozilla・Apple・Opera・Google といった他社ブラウザベンダはセキュリティ・プライバシー・標準化の観点から採用を拒否しました。
結果として EOT は IE 専用のまま 15 年以上孤立し、2009 年に Mozilla 主導で WOFF が登場すると一気に存在意義を失います。WOFF は EOT のような独自ドメインロックを持たず、CORS とライセンス契約で配信を制御するという「標準化されたやり方」で同じ問題を解決し、2012 年に W3C 勧告となりました。Microsoft 自身も EOT を W3C にメンバー提出(2008 年)しましたが標準化されず、最終的に Microsoft は WOFF / WOFF2 への移行を選びました。
2018 年には Microsoft が公式に「EOT は時代遅れであり、WOFF / WOFF2 を使うべき」と表明し、2022 年 6 月の IE 完全引退によって EOT の実用的な役目は終わりました。2026 年現在、新規サイトで EOT を配信する理由はまったくありません。古いイントラネット(Windows 7 / Windows 8 + IE11 のままの社内システム)の保守作業や、歴史的資料調査の際にだけ目にするレガシー形式として扱うのが適切です。
内部構造
| セクション | 役割 |
|---|---|
| EOT ヘッダ | マジック値、SFNT 全体サイズ、フォント名、ファミリ名 (UTF-16LE) |
| RootString | ドメインロック用 URL リスト(https://example.com 等) |
| MTX 圧縮データ | Microsoft 独自の MicroType Express 圧縮で埋め込まれた TTF/OTF 本体 |
| フラグ | サブセット化済みかどうか、暗号化されているか 等 |
RootString が設定された EOT は、その URL 以外のページから参照されると IE が拒絶します。これがドメインロックの核ですが、IE 以外はそもそも EOT を読まないので、ブラウザシェアの変化とともに意味を失いました。
主な用途(歴史的)と CSS 設定
EOT を @font-face で読み込む古典的な CSS(IE6〜8 を支える「Bulletproof @font-face syntax」)は次のような形でした。Paul Irish が 2009〜2011 年に提案したテクニックで、当時の Web フォント実装者にとっての必修知識でした。
@font-face {
font-family: "MyFont";
/* IE9 以降の互換モード用:?#iefix で IE6-8 の解釈を欺く */
src: url("myfont.eot");
src: url("myfont.eot?#iefix") format("embedded-opentype"),
url("myfont.woff2") format("woff2"),
url("myfont.woff") format("woff"),
url("myfont.ttf") format("truetype");
}
この記法は「IE9 が src リスト全体をひとつの URL として誤解釈してしまうバグ」を逆手に取った職人芸でした。2026 年現在では完全に不要であり、新規 CSS にこのような形を書く必要はありません。
関連形式との比較
| 項目 | EOT | WOFF / WOFF2 |
|---|---|---|
| 策定元 | Microsoft 独自 | W3C 勧告 |
| 圧縮 | MTX(独自) | zlib / Brotli |
| ドメインロック | ○(RootString) | × (CORS / EULA で制御) |
| 対応ブラウザ | IE のみ | 主要全ブラウザ |
| 標準化 | 提出されたが不採択 | 勧告済み |
| 2026 年の立ち位置 | 廃止扱い | 主流(WOFF2) |
編集ツール
- WEFT(Microsoft Web Embedding Fonts Tool、無料):Microsoft 公式の EOT 生成ツール。Windows XP 時代まで配布。現代では入手も実行も困難。
- ttf2eot(OSS、C 実装):TTF を EOT に変換する CLI。Linux でも動く。レガシーサイト保守用。
- FontSquirrel / Transfonter(Web、現役):今でも EOT 出力を選べるが、デフォルトでは外されつつある。
注意点・落とし穴
- 新規プロジェクトで EOT を出力する必要はない:IE が完全に死んだ 2022 年以降、EOT 配信は純粋に容量の無駄。
- ドメインロックは強くない:RootString は単純に URL を見るだけで、暗号学的保護はない。ファイルをコピーして自前のサーバに置けば回避できる。あくまで「お手軽な不正利用抑止」程度の効果しかなかった。
- ライセンス上の根拠:当時の市販フォントの Web 配信権限は「EOT を使う場合のみ可」と限定されていることがあった。新しい EULA は WOFF / WOFF2 でもカバーされているはずなので、契約書を確認する。
- 過去サイトの保守:「IE11 でだけ崩れる」と言われたら EOT の
?#iefix構文を疑う前に、まずブラウザ要件そのものを更新できないか提案するのが現代的。 - 歴史的価値:EOT は「ブラウザベンダ独自規格が標準化に勝てず消えた」典型例として、Web 標準史を語るうえで重要な題材。
関連リンク
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15