我有几个链接到各种图标字体(如FontAwesome和Glyphicons)的网络项目。这些字体很棒,但其中包含许多我从未使用过的字形。~65KB 对于你只使用 4% 的东西来说是一个相对较大的下载。
可以对字体进行子集化,即仅包含您使用的字符。您可以通过Font Squirrel(可能还有其他公司)完成此操作,同时将 .OTF 转换为您的网络字体(用于不同浏览器的一组 EOT、WOFF2、WOFF、TTF 和 SVG)。这很好用。
我通常在项目结束时这样做……一次……但是如果你的角色范围发生变化,你必须重新经历整个过程。而且它完全是手动的。而且乏味。
我可以生成我需要的字符列表,所以我需要的只是可以对字体进行子集化的东西(然后为了奖励积分,生成 webfonts pack)。我怀疑所有事情都可以通过 Fontforge(它有脚本 API)实现,但我没有这方面的经验。
这比我原先想象的要大。要完成整个工作,我们需要一些额外的工具,有些工具没有为 Ubuntu 很好地打包。我正在执行自定义安装
~/src/
——您可能需要创建自定义安装——而不是安装到系统,因为这足以完成工作。下一步是找出我们需要的 unicode 字符。我们将构建一个十六进制格式的字符列表
0x####
。识别这些只是通过我的.less
文件选择我用于 Font Awesome 的函数的一个例子,但你可以做类似的事情来寻找原始content: "..."
组:现在我们有了列表,我们可以告诉 FontForge 子集
FontAwesome.otf
:这将创建一个新
.otf
字体。然后我们可以将其重新调整为一组网络字体:结果是一组小得多的字体。这是并排比较: