Unicode 按特定字形划分字体子集

Unicode 按特定字形划分字体子集,unicode,fonts,font-face,webfonts,truetype,Unicode,Fonts,Font Face,Webfonts,Truetype,我有一个14MB的TTF,其中大部分是简体中文字符 我想通过创建一个只包含HTML页面中特定字符的子集来减小大小 因此,理想情况下,我希望向(Linux)程序传递一段文本,并让它根据包含的字符重新创建字体 例如 或 新字体将只显示这9个字符。您可以通过。这是可行的,尽管它可能会变得更聪明,或者封装在一个包含脚本中 #!/usr/bin/env fontforge Open($1); # first param SelectAll(); SelectFewer(0u41, 0u43, 0u31,

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

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

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

例如

新字体将只显示这9个字符。

您可以通过。这是可行的,尽管它可能会变得更聪明,或者封装在一个包含脚本中

#!/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_语言

FONTFORGE_LANGUAGE=ff ./squish source.ttf squished.ttf
用过

这正是我想要的

我是如何找到它的

包含一个工具。警察说

--string=:仅为指定字符串生成子集。有益于 创建菜单子集。通常,我们使用字体中的subset.pl 然而,这是一个优化程序

对字体优化器的搜索将我带到一个允许您测试脚本的窗口


还有一个更好的文档。

subset.pl在Font/Subsetter.pm第1496行的子例程条目中不断返回
宽字符。
有什么想法吗?最好的答案可能只是使用FontForge,因为这似乎是一个活的项目。然而,原始回购协议的github分支似乎已经修补好了以解决此问题,因此您应该能够使用它。我唯一要提醒的是,is仍然会抛出一些弃用错误,因此最终可能也会开始出错。@terence eden这个答案根本不起作用。请检查更新的文档:。还要注意
选择较少(0u41、0u43)是范围
[0u41,0u43]
,并且
选择较少(0u41,0u43,0u31,0u33)
是两个范围的并集,
[0u41,0u43]
[0u31,0u33]
(答案有点不清楚)。还有人可能希望通过命令
Reencode('compressed')压缩字体。顺便说一句,谢谢你的回答!
#!/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=ff ./squish source.ttf squished.ttf
./subset.pl --chars="ABC 123 水小长" input.ttf output.ttf