爱意满满的作品展示区。
iqoo

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

  •  
  •   iqoo · Jun 30 · 806 views

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

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

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

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

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

    在线演示

    文档源码

    3 replies    2026-06-30 16:02:26 +08:00
    iOCZS
        1
    iOCZS  
       Jun 30
    这个只有比率有点高啊
    tool3d
        2
    tool3d  
       Jun 30
    老哥每次都发一些脑洞大开的项目,赞.
    iqoo
        3
    iqoo  
    OP
       Jun 30
    @iOCZS 压缩比相比原版 brotli 差了 1.5% 左右,比最好的 gzip 还是高不少的。当然实现和部署是复杂了点。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   958 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:45 · PVG 04:45 · LAX 13:45 · JFK 16:45
    ♥ Do have faith in what you're doing.