减小.ttf字体大小的方法?

Posted

技术标签:

【中文标题】减小.ttf字体大小的方法?【英文标题】:Way to reduce size of .ttf fonts? 【发布时间】:2011-02-07 18:57:45 【问题描述】:

有没有办法减小 .ttf 字体的大小?即,如果我们想删除一些我们不使用的 glyp。

【问题讨论】:

【参考方案1】:

这个应用程序是什么?大多数字体相对较轻。 TTF 存储矢量数据而不是位图数据,因此描述每个字形的形状需要相对较少的字节。即使是非常繁忙的字体也可以保持在 100kb 以下。许多现代字体都带有 ClearType 提示,但即使这样也会增加很少的文件大小。

如果您真的想从字体中去除某些字形,那么您将需要一个字体编辑工具(Macromedia 有一个名为 Fontographer 的工具,现在归 FontLab 所有)。但是你最好选择一个更轻的字体。例如,OCR A Std 只有 30kb,包括 ClearType 提示以及所有美国 ASCII 字符。尽量避免使用 Unicode 字体,因为完整的 Unicode 支持需要大量字形。但大多数字体不提供完整的 Unicode 支持。

最后,如果您决定修改字体,请确保将其命名为其他名称。命名冲突可能会给用户带来一些非常恼人的惊喜。

【讨论】:

复杂的 .ttf 字体可以轻松达到 1MB 或更多。 @Mark:也许是 Big5 或 GB 字体或其他具有大字符集的字体,但这些都是边缘情况。否则,即使是非常精细的西方字体也很少会超过 500KB,而 500KB 的少数是可以优化的鲸鱼。 但您要求申请。 :) 我现在正在处理确切的问题。 中文字体,例如,定期运行8-12MB。它们包含 20K-40K 个单独的字形。【参考方案2】:

你可以使用 fontforge 来减小文件大小

这在http://www.cnx-software.com/2010/02/19/reducing-truetype-font-file-size-for-embedded-systems/进行了解释

【讨论】:

【参考方案3】:

使用Google Web Fonts,您可以限制字符集,如:

//fonts.googleapis.com/css?family=FontName&text=Lorem%20Ipsum

如果 Google 有像 Font Awesome 这样的图标字体,这将特别有用

【讨论】:

绝招,不知道。您也可以在参数中请求某些权重。 (例如,只有粗体,没有斜体或正常) 这并没有解决如何减少您已经拥有的 truetype 字体的文件大小的实际问题,特别是通过删除您不使用的字形。它解决了一个不同的问题“如何从 Google Web 字体中删除所有多余的字形?”谷歌字体不是 woff2 格式,不是 ttf,如果你已经有了想要使用的字体,就不能使用这种方法。【参考方案4】:

我使用fontmin 来从 ttf 字体中删除字形。

它成功地将 Noto Sans(重量=中等)从 20MB 减少到不到 10 个,但仍能覆盖常见的中文/日文字符。

【讨论】:

【参考方案5】:

我执行以下操作以从字体中删除所有西里尔字形(字母),从而将文件大小减半,因为我只需要拉丁字母。

    获取 FontForge (https://fontforge.github.io/en-US/) 启动 FontForge 并打开您的 ttf 字体文件 转到编辑 -> 选择 -> 按脚本选择 在弹出的选择窗口中,从下拉菜单中选择 Cyrillic。您可能已经猜到,这只会标记西里尔字母。 转到编码 -> 分离和删除字形,确认问题。看看西里尔字母是如何消失的? 转至编码 -> 压缩以更好地了解剩余字母,从而更轻松地选择更多删除候选者。 (但我不敢手动删除/删除它们。) 转到文件 -> 生成字体,不要忘记选择 ttf 作为输出格式。

请考虑到我不是这方面的专家。但我需要一个快速的解决方案。

您可以在此处阅读有关此主题的更多信息:http://wiki.unity3d.com/index.php?title=Create_a_new_TrueType_font_using_a_subset_of_characters_from_an_existing_TrueType_font

【讨论】:

【参考方案6】:

FontSquirrel 的Webfont generator 可以很容易地减小字体的文件大小。

上传您的字体 选择专家... 选择要包含的字形 按 下载您的套件

我能够将 263kb 的字体缩小到 34kb。

【讨论】:

单击 Custom Subsetting... 单选框以进一步减小文件大小。【参考方案7】:

您可以使用fonttools 从字体中删除不需要的字形。

pip install fonttools
pyftsubset myFont.ttf --output-file=mySmallerFont.ttf --unicodes=U+0020-007E

mySmallerFont.ttf 将仅包含从 U+0020 到 U+007E(基本拉丁文)的 unicode 字符。

完整文档可通过here获取。

unicode字符列表可以查看Wikipedia。

【讨论】:

以上是关于减小.ttf字体大小的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何减小字体真棒图标的大小?

SDL ttf 与 opengl,字体大小问题

font-spider 抽字体,出现错误,只抽出ttf文件,而且,大小还是原来的大小

减小 UITableViewRowAction 的字体大小

如何减小网站的整体字体大小?

冲积地块中的小值,其中减小字体大小似乎不是解决方案