特定字形的子集字体

时间:2013-05-21 15:11:22

标签: unicode fonts font-face webfonts true-type-fonts

我有一个14MB的TTF,主要包含简体中文字符。

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

因此,理想情况下,我想将(Linux)程序传递给一个文本块,并根据所包含的字符重新创建字体。

E.g。

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

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

新字体只会出现9个字符。

2 个答案:

答案 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,它有更好的文档。