9

我有一个 14MB 的 TTF,其中大部分是简体中文字符。

我想通过创建一个仅包含 HTML 页面中特定字符的子集来减小大小。

因此,理想情况下,我想向(Linux)程序传递一段文本,并让它根据包含的字符重新创建字体。

例如

 ./magic-font-squisher input.tff "ABC123水小长"

或者

 ./magic-font-squisher input.tff /path/to/test.html

新字体将只存在这 9 个字符。

4

2 回答 2

8

您可以通过编写 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
于 2013-05-21T15:54:22.237 回答
5

使用过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 存储库,它有更好的文档。

于 2013-05-21T19:45:49.267 回答