我有一个14MB的TTF,主要包含简体中文字符。
我想通过创建一个仅包含HTML页面中特定字符的子集来缩小大小。
因此,理想情况下,我想将(Linux)程序传递给一个文本块,并根据所包含的字符重新创建字体。
E.g。
./magic-font-squisher input.tff "ABC123水小长"
或
./magic-font-squisher input.tff /path/to/test.html
新字体只会出现9个字符。
答案 0 :(得分:7)
您可以scripting 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
答案 1 :(得分:5)
使用了https://bitbucket.org/philip/font-optimizer/src
./subset.pl --chars="ABC 123 水小长" input.ttf output.ttf
这正是我想要的。
我是如何找到的
Google Font Directory包含subset工具。 README说
- string =:仅为指定的字符串生成子集。对...有用 创建菜单子集。通常我们使用Font的subset.pl 然而,优化器就是这样。
搜索Font Optimizer后,我转到demo site,可以让您测试脚本。
还有一个forked GitHub repo,它有更好的文档。