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

iqoo 2026-06-30 15:14 1

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


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


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


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



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


在线演示


文档源码

最新回复 (3)
  • iOCZS 06-30 15:31
    1
    这个只有比率有点高啊
  • tool3d 06-30 15:52
    2
    老哥每次都发一些脑洞大开的项目,赞.
  • iqoo 楼主 06-30 16:02
    3
    @iOCZS 压缩比相比原版 brotli 差了 1.5% 左右,比最好的 gzip 还是高不少的。当然实现和部署是复杂了点。
* 帖子来源V2EX
返回