需求

之前一直用小濑字体作为博客全局字体,我很喜欢这款字体,因为它不仅可爱而且字库完善,对简体、繁体和日文都有良好的支持,这在开源字体中是很难得的。但是这款字体毕竟是类似于手写体的风格,作为博客文章正文时辨识度不如系统默认的黑体,阅读起来有些吃力。为了文章的阅读体验能更好些我还是妥协了,只把小濑字体用于 Title。不过这样又有个问题,用作 Title 显示只会用到数量很少的字,但仍然需要加载整个字体。字体子集就是用来解决这个问题的,把要用的那些字提取出来单独打包,这样可以得到一个非常小的字体文件,显示效果和之前是完全一样的。

工具

有很多工具可以实现。不过大部分是 web 开发中的一些配套解决方案,经过一番搜索,我找到了一个以客户端形式运行的子集化工具:FontSmaller(该软件目前只有 Windows 版本)

使用

这款软件非常易用,只需要选择源字体文件,输入需要包含的字符就可以输出对应的字符子集了。不过它只支持 ttf 格式
输入需要的字符

转换格式

作为网页字体,woff2 是目前最好的字体格式,具有很好的压缩比,主流浏览器都支持(具体支持情况见 Mozilla 的文档),所以在@font-face里定义字体只提供一个 woff2 就足够了。

推荐一个很好用的在线文件格式转换网站:cloudconvert,它 ttf 转换为 woff2 的页面在这里
目前看来字体转换貌似是没有什么限制,不需要登录,几十兆的中文字体它都能转换。

其实子集化之后的字体已经足够小,没有必要转换为 woff2。但强迫症犯了不转成 woff2 不舒服