我有一个 14MB 的 TTF,其中大部分是简体中文字符。
我想通过创建一个仅包含 HTML 页面中特定字符的子集来减小大小。
因此,理想情况下,我想向(Linux)程序传递一段文本,并让它根据包含的字符重新创建字体。
例如
./magic-font-squisher input.tff "ABC123水小长"
或者
./magic-font-squisher input.tff /path/to/test.html
新字体将只存在这 9 个字符。
您可以通过编写 FontForge 脚本来实现。这可行,尽管它可能会变得更聪明或包含在包含脚本中。
#!/usr/bin/env fontforge
Open($1); # first param
SelectAll();
SelectFewer(0u41, 0u43, 0u31, 0u33); # a range
SelectFewer(0u6c34); # or a single codepoint
SelectFewer(0u5c0f);
SelectFewer(0u957f);
DetachAndRemoveGlyphs();
Save($2); # second param
Quit(0);
我必须FONTFORGE_LANGUAGE
在运行它之前定义:
FONTFORGE_LANGUAGE=ff ./squish source.ttf squished.ttf
使用过https://bitbucket.org/philip/font-optimizer/src
./subset.pl --chars="ABC 123 水小长" input.ttf output.ttf
这正是我想要的。
我是如何找到它的
Google Font Directory包含一个子集工具。自述文件说
--string=:只为指定的字符串生成子集。对于创建菜单子集很有用。但是,通常我们为此使用 Font Optimizer 中的 subset.pl。
搜索 Font Optimizer 将我带到一个演示站点,该站点允许您测试脚本。
还有一个分叉的 GitHub 存储库,它有更好的文档。