3

CJK 字体文件压缩方案

 1 week ago
source link: https://ssshooter.com/font-optimization/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

CJK 字体文件压缩方案

2024/04/23 / 2 min read

人生苦短,我用 python

主方案我们用 python 的 fonttools 解决问题。

genSubset.sh
#!/bin/bash
fonttools subset "./src/assets/fonts/font.woff2" --text-file="./subset.txt" --output-file="./src/assets/fonts/subset-font.woff2"
fonttools ttLib.woff2 compress "./src/assets/fonts/subset-font.woff2" -o "./src/assets/fonts/min-subset-font.woff2"
rm -rf ./src/assets/fonts/subset-font.woff2

subset.txt 就是一个常用汉字子集,例子可以看这个 gist

  • 安装 python3
  • pip3 install fonttools
  • pip3 install brotli(压缩功能会用到)
  • 运行 genSubset.sh
  • 完结撒花,十分简单
  • 遇到反馈说某个字字体丢失,只要在 subset.txt 添加该字再重复以上步骤即可

如果你还是不想用 python,坚持 Node 的话,以下提供两个方案供参考。

方案 2:字蛛

当然,其实把所有常见汉字包进去其实是一种偷懒,但是不能否认这是十分高效的做法。

把字体文件极致压缩到只包含你的网站使用到字也是可能的,甚至在现在还简单一点,因为 SSR 又起来了(如果是 SSG,那就更是简单),以前 SPA CSR 是真的不方便。

这样的极致压缩方案其实早就有了,那就是八年前的“远古”项目字蛛。可惜现在的 Node 应该是不能正常运行了,得故意为压缩字体 nvm 一下。

方案 3:fontkit

其实用 py 主方案的时候我就觉得,这样的操作在 Node 应该也有替代方案,今天找了找,大概 fontkit 也是可行的。(没有实际使用过,仅提供信息)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK