定义
网页开放字体格式是一种用于在网页上提供和使用字体的开放封装格式,其英文名称为 Web Open Font Format,通常缩写为 WOFF[4]。它的作用是让网页设计者能够引用并下载未安装在访问者设备上的字体,从而由浏览器按照设计意图渲染文字[2]。
该格式本质上是对既有字体的重新打包:它把基于 SFNT 表结构的字体数据(例如 TrueType、OpenType 或开放字体格式)压缩后装入一个容器,并额外加入元数据和私有数据结构,其中的预定义字段可供字库厂商与供应商填写授权许可信息[3]。WOFF 不包含加密,也不受数字著作权管理机制的限制[1]。
该格式存在两个版本,即 WOFF 与 WOFF2,两者的主要差别在于所采用的压缩算法,在 CSS 的 @font-face 规则中分别以 woff 和 woff2 两个格式描述符标识[3]。
原理
从整体结构看,WOFF 文件是对 SFNT 字体的一次无损重新封装。编码工具先把原始字体的各张表压缩,再按表目录记录每张表的原始长度、压缩后长度与校验和;浏览器等用户代理读取文件后解开压缩,重建原始字体数据,从而准确显示字形[5]。由于字体中通常包含大量重复与冗余的数据,先做针对性整理再进行熵编码,可以比直接压缩整个字体文件取得更高的压缩率[2]。
WOFF 1.0 使用 zlib 进行压缩,生成的文件通常比对应的 TTF 文件小约 40%[1]。WOFF2 则改用在字型预处理基础上叠加的 Brotli 熵编码:编码器先对 glyf、loca、hmtx 等表施加变换,例如把字形轮廓数据按同类内容拆分成多条子流,把可根据轮廓坐标推算的包围盒等冗余信息去除,再统一压缩为一个数据流[6][7]。
这一方案要求解码必须是单次遍历即可完成,即压缩过程可以较慢,但解压速度必须足够快,以保证在移动设备上也能迅速还原字体[8]。经此改进,WOFF2 的压缩率比 WOFF 1.0 提高约 20% 至 30%[9]。
使用该格式时,网页通过 CSS 的 @font-face 规则指向字体文件并声明其使用位置,其工作方式与 OpenType、TrueType 字体一致,只是由于涉及压缩而能更高效地完成下载[3]。对于尚不支持该格式的浏览器,样式表会依次回退到列表中下一个可用字体,因此不会导致文本无法显示[4]。
发展历程
网页字体的构想远早于本格式。万维网联盟在 1994 年成立后不久便开始考虑 Web 字体技术,1997 年其字体工作组发布首个 Web 字体公开草案,标准化了在页面中引用字体的 @font-face 方法,使字体无需本地安装即可调用,但当时未规定字体格式,也未解决授权许可问题[10]。1998 年,CSS 工作组把 @font-face 纳入 CSS2 规范,但此后十余年间,围绕授权、加密与把字体绑定到特定网站的做法,业界争论激烈,网页字体并未广泛使用[10]。
2009 年 7 月,来自 Mozilla 的 Jonathan Kew 提出了采用成熟 zlib 压缩、不含加密机制的 ZOT 格式;同期,字体设计师 Tal Leming 与 Erik van Blokland 提出了 .webfont 格式,该格式在列出允许使用字体的域名之外,还嵌入指向许可证和字体厂商的链接[10]。同年 8 月,两种方案的提出者宣布合作,将其合并为一种新格式 WebOTF,后更名为 WOFF[10]。
2010 年 4 月 8 日,Mozilla 基金会、Opera 软件公司和微软向万维网联盟提交 WOFF 文件格式 1.0 规范[1][11]。为此,万维网联盟于 2010 年 3 月成立工作组着手制定规范,2010 年 7 月 27 日发布 WOFF 1.0 首个公开工作草案[10]。2012 年,W3C 发布 WOFF 1.0 正式推荐标准,浏览器随之提供明确一致的支持,许多主要字体厂商也开始采用该格式[5][2]。
为进一步提升压缩效率,2012 年 3 月 Raph Levien 提出先做字体预处理、再做更高效熵压缩的两阶段方案[10]。工作组先选用 Monotype 贡献的 MicroType Express 预处理技术,随后采用 Google 团队开发的 Brotli 熵编码,两项技术均附全球免版税许可[10]。2018 年 3 月 1 日,W3C 发布 WOFF 文件格式 2.0 正式推荐标准[2]。
应用
该格式最直接的用途是在网页中引入自定义字体。网页字体使设计者能够使用访问者设备上并未安装的字体,因而被广泛用于品牌一致性维护、多语言排版与视觉效果呈现[2]。与之配套的工具包括可在 WOFF 与 OpenType 之间互相转换的 sfnt2woff 与 woff2sfnt,以及支持该格式的字体编辑器[3]。
采用该格式带来的收益不止于体积。由于页面中使用的是真实文本而非文字图片,文本可以被朗读软件读出,也更容易被搜索引擎检索,同时能表示更多语言的字符[4]。
从部署情况看,WOFF 与 WOFF2 已获得各类主流浏览器的支持[12]。其中 WOFF2 的支持情况为:Google Chrome 自第 36 版本起、Microsoft Edge 自第 14 版本起、Opera 自第 26 版本起、Firefox 自第 35 版本起、Safari 自第 10 版本起[1]。使用率方面,2010 年该格式刚开始被采用时,使用网页字体的网站仅占万分之一,2014 年开始使用 WOFF2 时升至 35%,此后已达到 70%[2]。
局限
该格式并不打算取代 TrueType、OpenType、开放字体格式或 SVG 字体,而是提供一种替代选择;部分字库厂商会同时提供用于桌面与印刷的 OpenType 版本和用于网页的 WOFF 版本,并分别适用不同的许可[4]。这意味着它只是字体交付链条中的一环,字体的设计与字形能力仍取决于底层字体本身。
在压缩收益上,不同版本的差距明显。WOFF2 的内部压缩使用 Brotli,压缩效果相比 WOFF 最多提升约 30%,但采用 WOFF2 时通常需要为旧版浏览器准备 WOFF 作为后备,否则在只支持旧格式的环境下字体下载反而更慢[9]。
格式本身也未解决字体授权问题。它将许可信息等元数据放入文件,但授权与否仍由字库厂商决定,商业字体的许可费用由内容提供方支付,阅读者无需为此付费[4][3]。此外,WOFF2 标准中部分可选的预处理步骤(例如 CFF 轮廓的去子程序化)被视为编码前的外部环节,不在规范覆盖范围之内[6]。
参见
参考资料
- 维基百科,自由的百科全书 - Web开放字型格式[编辑] [引用日期2026-10-14]
- W3C发布WOFF 2.0正式推荐标准 [引用日期2026-10-14]
- Web 开放字体格式 (WOFF) [引用日期2026-10-14]
- WOFF Frequently Asked Questions [引用日期2026-10-14]
- WOFF File Format 1.0成为W3C推荐规范 [引用日期2026-10-14]
- w3.org 上的网页 [引用日期2026-10-14]
- 20140912_WOFF_File_Format_2_0 [引用日期2026-10-14]
- Web Fonts then and now (and what WOFF2 has to do with it) [引用日期2026-10-14]
- 缩减网页字体大小 [引用日期2026-10-14]
- WOFF 1.0:W3C在Web字体发展史上的重要里程碑 [引用日期2026-10-14]
- meet-woff-the-standard-web-font-format [引用日期2026-10-14]
- WOFF [引用日期2026-10-14]