GoForum🌐 V2EX

将任意数据塞进 WOFF2 字体里,实现 Brotli 压缩

iqoo · 2026-06-30 15:18 · 0 次点赞 · 0 条回复

有些 CDN 不支持 Brotli ,但有时想要对大文件实现更高压缩率,自己实现解码器又不划算。

好在 Firefox 和 Safari 的 DecompressionStream API 现已支持 brotli 解压,目前只有 Chrome 不支持。

事实上 Brotli 最初是为 WOFF2 格式的字体设计的。于是想到一个奇技淫巧:将原始数据编码成 PNG 图片,然后嵌入到字体的 CBDT 彩色字形表中(类似 emoji ),再将字体打包成 WOFF2 格式。这样就白嫖了 Brotli 压缩。

(出于优化,PNG 的压缩率设为 0 ,即仅存储不压缩,冗余保留给最终的 Brotli 压缩)

解码也很简单,前端使用该字体在 canvas 上渲染字符,然后读取像素即可,几百字节就能实现。

在线演示

文档源码

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: iqoo
发布: 2026-06-30
点赞: 0
回复: 0