原理是重构字体文件, 从字体文件中截取实际用到的字体, 抛弃其它没有用到的空闲字体, 从而极大减小字体文件大小, 进而提高字体加载速度.

当然局限性很明显, 要想修改文字内容就要重新子集化

推荐GitHub上的工具 fonttools(https://github.com/fonttools/fonttools), 也提供对字体进行各种操作(子集化只是其中一个附带功能)

pip install fonttools

pyftsubset <字体文件> --text=<需要的字形> --output-file=<输出>

( 注意<需要字形>这个直接把目标字写一串就好)
示例: pyftsubset C:\fonts\方正楷体.ttf --text=AerospacePig --output-file=C:\fonts\方正楷体.ttf

输出: 一个只包含" SpacePig "仅仅几kb的字体文件

另外, 我这个博客的标题" SpacePig "这几个字, 以及下面的一排艺术字, 就是用的子集化文件, 没有子集化之前一个3MB左右, 另一个1MB左右, GitHub Page没有加速手段情况下, 加载完成要 5分钟 以上, 子集化之后一个8KB, 一个3KB, 加载 0.5s 左右.


另外,将.ttf转为专为web优化的.woff2体积还能再压缩20%~40%.

添加新评论