WOFF

Web Open Font Format——首个专为网页设计的字体格式。

.woff Web Open Font Format 1.0
类型压缩二进制
压缩zlib(deflate)
文件大小比 TTF 小约 40%
支持范围98%+ 浏览器
最适用于旧版浏览器的兜底方案
Bobcorn可选导出

什么是 WOFF?

WOFF 1.0 由 Mozilla、Opera 和 Microsoft 联合开发,是第一个从头为网页构建的字体格式。2012 年 12 月,它成为 W3C 推荐标准,标志着网页字体排版的重要里程碑。

WOFF 的核心是对现有 TrueType 或 OpenType 字体数据的封装。它应用 zlib 压缩来缩减文件大小,并包含可选的元数据字段用于授权和署名信息。在 WOFF 出现之前,网页开发者只能提供原始的 TTF 或 OTF 文件——体积大、未压缩,且缺乏嵌入授权信息的标准方式。

关键创新在于创建了一个专为网页设计的字体容器,同时解决了三个问题:通过压缩减小文件体积、为字体授权提供标准元数据块,以及为浏览器提供可轻松验证和沙箱化的安全格式。

工作原理

WOFF 容器将现有字体表(来自 TTF 或 OTF 源文件)与逐表的 zlib 压缩封装在一起。原始字体中的每张表——字形轮廓、字偶距数据、命名记录——均独立压缩,允许浏览器仅解压所需的表。

WOFF 文件头以四字节签名(wOFF)开头,随后是字体类型(指示封装数据是 TrueType 还是 CFF)、总压缩大小以及可选元数据块的指针。浏览器读取文件头,将各个表解压回原始形式,并将重建的字体数据交给文本渲染引擎。

从渲染引擎的角度来看,解压后的 WOFF 文件与原始 TTF 或 OTF 完全相同——压缩对渲染引擎完全透明。

典型 @font-face 用法
@font-face {
  font-family: 'MyIcons';
  src: url('icons.woff2') format('woff2'),
       url('icons.woff') format('woff');
}

浏览器按顺序尝试每条 src。现代浏览器会加载 WOFF2 文件(更小、更快);不支持 WOFF2 的旧版浏览器则回退到 WOFF。这种级联方式在最大兼容性的前提下实现了最优性能。

优缺点

    优点
  • 良好的压缩效果——比原始 TTF 小约 40%
  • 广泛支持,包括 IE 9+
  • W3C 推荐标准(官方网络标准)
  • 包含元数据和授权信息支持
  • 从 TTF 或 OTF 源转换简便
    缺点
  • 已被压缩更好的 WOFF2 取代
  • 比同等 WOFF2 文件大约 30%
  • zlib 压缩效率不如 Brotli

浏览器支持

WOFF 自 2010 年代初起就被所有主流浏览器支持,是网页字体最安全的兜底格式。它比 WOFF2 覆盖更广,因为它还支持旧版 Internet Explorer。

浏览器最低版本
Chrome6+
Firefox3.5+
Safari5.1+
Internet Explorer9+
Edge所有版本
Opera11.1+

凭借 98%+ 的全球浏览器覆盖率,WOFF 几乎被所有仍在使用的浏览器所理解。唯一明显的缺口是 IE 6-8,它们需要使用 EOT

WOFF 与 WOFF2 对比

WOFF2 是 WOFF 的继任者,在大多数实际情况下是严格意义上的改进。以下是两者的对比:

对比项WOFFWOFF2
压缩算法zlib (deflate)Brotli
压缩比比 TTF 小约 40%比 WOFF 小约 30%
预处理字形数据变换
解压速度更快
IE 支持IE 9+仅 Edge(不含 IE)
W3C 标准2012 年2018 年

WOFF2 凭借 Brotli 和专用预处理步骤,提供了约 30% 更好的压缩比,同时解压速度也更快。现代浏览器对 WOFF2 的支持同样广泛——唯一的缺口是支持 WOFF 但不支持 WOFF2 的 IE 9-11。

对于大多数面向 2024 年及之后浏览器的项目,仅 WOFF2 就已足够。WOFF 的唯一剩余优势是覆盖 IE 9-11。

何时使用 WOFF

尽管 WOFF2 已取而代之,仍有一些充分理由在字体栈中保留 WOFF:

  • 作为 WOFF2 的兜底格式——在 @font-face 声明中将 WOFF2 列在前,WOFF 列在后,让现代浏览器获得更小的文件,同时确保旧版浏览器仍能获取字体。
  • 需要支持 IE 11——IE 11 支持 WOFF 但不支持 WOFF2,因此 WOFF 是该浏览器可用的最佳压缩格式。
  • 不支持 Brotli 的环境——某些旧版构建工具、代理或 CDN 可能无法正确处理 WOFF2 的 Brotli 压缩;WOFF 的 zlib 压缩则被普遍支持。

如果以上情况均不适用于你的项目,可以安全地跳过 WOFF,只提供 WOFF2。

在 Bobcorn 中
在 Bobcorn 的导出对话框中,WOFF 是可选格式。如果项目需要支持 IE 11,请与始终包含的 WOFF2 一起启用。对于大多数现代项目,可以完全跳过 WOFF,仅依赖 WOFF2。