EOT
Embedded OpenType——微软专有的网页字体格式,仅用于 Internet Explorer 的旧版兼容支持。
什么是 EOT?
EOT 由微软于 1997 年创建,是史上第一种网页字体格式。它曾被提交至 W3C 申请标准化,但最终未获通过——主要原因是其专有压缩算法(MTX)和内置 DRM 功能遭到其他浏览器厂商的抵制。
该格式包含 URL 绑定机制,限制字体只能在特定域名下加载,同时支持字体子集化——通过剔除未使用的字形来减小文件体积。这些功能在 20 世纪 90 年代末算是前瞻之举,但由于格式的专有性,EOT 始终只在 Internet Explorer 中得到实现。
近十年间——从 IE 4 直到 2000 年代中期——EOT 是在网页上使用自定义字体的唯一方式。直到 2010 年 WOFF 出现,才有了跨浏览器的替代方案。如今,EOT 已成历史遗迹,仅对必须支持 IE 8 或更早版本的极少数项目有用。
工作原理
EOT 文件将 TrueType 字体数据与微软的 MTX 压缩及专有文件头封装在一起。文件头包含 URL 绑定信息(允许加载该字体的域名列表)、授权标志以及字体元数据(如字族名称和样式)。
当 Internet Explorer 在样式表中遇到 EOT 字体时,会读取文件头,验证当前页面的来源 URL 是否与允许域名匹配,只有验证通过才会解压并渲染字体。若 URL 检查失败,字体将被静默拒绝——这是一种基本的防盗链保护机制。
包含 EOT 的经典"防弹"@font-face 语法如下:
@font-face {
font-family: 'MyIcons';
src: url('icons.eot'); /* IE9 兼容 */
src: url('icons.eot?#iefix') format('embedded-opentype'),
url('icons.woff2') format('woff2'),
url('icons.woff') format('woff'),
url('icons.ttf') format('truetype');
}
?#iefix 查询字符串是一个绕过 IE 9 解析器漏洞的技巧。IE 9 无法正确处理单个声明中的多条 src——它会尝试将整个字符串(包括 format() 提示)作为单个 URL 加载,从而导致失败。在 EOT URL 后添加 ?#iefix,可以让 IE 9 将其识别为有效的独立 URL,在解析器卡壳之前终止路径。现代浏览器会完全忽略该查询字符串。
优缺点
- IE 6-8 唯一支持的字体格式
- MTX 压缩带来较小的文件体积
- URL 绑定提供基本的防盗链保护
- 微软专有格式,从未被 W3C 标准化
- 仅在 Internet Explorer 中有效
- 复杂的 DRM/URL 绑定可能导致部署问题
- 所有现代浏览器均不支持
- 已废弃的技术,不再有任何发展
何时使用 EOT
仅当你必须支持 IE 8 或更早版本时。这些老旧浏览器不支持 WOFF、WOFF2,甚至无法通过 @font-face 使用原始 TTF——EOT 是它们的唯一选择。
对于 IE 9-11,WOFF 是更好的选择:它是开放标准,工具支持更广泛,也没有 DRM 和 URL 绑定的历史包袱。如果你的数据分析显示 IE 8 流量为零——在 2024 年及之后这几乎是必然的——请完全跳过 EOT。
在将 EOT 纳入构建之前,请检查你的实际浏览器数据。IE 8 及以下版本的全球市场份额实际上已为 0%。除非你的目标是被锁定在古老 IE 版本的特定企业内网或政府系统,否则 EOT 只会增加构建复杂度而毫无实际收益。
ttf2eot 库从 TTF 进行转换,无需手动操作——只需在导出对话框中切换该选项,.eot 文件便会与其他字体格式一并生成。