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

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

  •  
  •   iqoo · Jun 30 · 1347 views
  •   You need to sign in to view this topic
    This topic created in 56 days ago, the information mentioned may be changed or developed.

    有些 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   ·   5982 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:08 · PVG 11:08 · LAX 20:08 · JFK 23:08
    ♥ Do have faith in what you're doing.