通过去除字形的小型化字体杂项文件(Downsizing an .OTF font by removi

2019-08-08 12:26发布

我不太相信这个问题尚未为OpenType字体特别要求,但没有人知道的一种方式,从这些字体删除字形?

我有一个非常大的文件大小(10MB差不多)的杂项文件,我需要把它缩小。 其原因有两个方面。

1)我试图为网络嵌入做准备,所以文件越小,客户端的更容易。

2)字体松鼠(用于制备简单的字体文件),拥有2MB的上传限制 - 我知道有替代品,但没有到目前为止已经成功。 为了节省浪费人民的时间,我已经试过了那些失败是http://fontface.codeandmore.com/和http://www.font2web.com/ 。 CodeAndMore.com似乎工作,但它吐出背出字体到一个我把它完全不同。

请注意,我不是一个字体的专家,这样下去容易的答案。

Answer 1:

创建一个账户,回答这个问题。 我知道这是一个老问题。 但最好是有一个迟到的回答比没有答案。

我刚刚碰到类似的问题。 显然,没有Googlable解决方案。 因此,我写了一个脚本Python2 fontforge库执行以下操作:

  • 接受一个源字体
  • 接受要使用的包含所有字符的文件。 它可以是一个翻译文件,字符串资源文件,HTML文件,等等。
  • 输出并未被删除该文件中示出为具有字符的字体

下面是代码:

#!/usr/bin/python2
import sys
import fontforge

if len(sys.argv) == 4:
    font = fontforge.open(sys.argv[1])

    f = open(sys.argv[2], "r")

    for i in f.read().decode("UTF-8"):
        font.selection[ord(i)] = True
    f.close()

    font.selection.invert()

    for i in font.selection.byGlyphs:
        font.removeGlyph(i)

    font.generate(sys.argv[3])
else:
    print "WARNING: Check the license of the source font\nbefore distributing the output font generated by this script.\nI'm not responsible for any legal issue caused by\ninappropriate use of this script!\n"
    print "Usage: {} [source font] [file with glyphs NOT to be removed] [output]".format(sys.argv[0])
    print "Example: {} /path/to/ukai.ttc chineseTranslation.txt ukaiStripped.ttf".format(sys.argv[0])

请注意,这可能不合法使用这个脚本在某些字体。 确保检出源字体的许可证。 我不负责因使用该脚本生成的任何字体的任何法律问题。



Answer 2:

FontTools有一个项目叫做pyftsubset,做它

https://github.com/behdad/fonttools

用法是这样的:

pyftsubset MyFont.otf --output-file=MyFontStripped.otf --unicodes-file=file-of-codes.txt

当文件的-codes.txt含有类似代码的列表:

U+09c78
U+09ce5
U+09ce7
U+09ce9
U+09ceb
U+09cec
U+09cf0
U+09cf3
U+09cf4
U+09cf6
...


Answer 3:

继最新评论:您可以同时使用移动和命令键都在同一个镜头左边的菜单(语言)选择好几套。 注意图像保持基本拉丁语(AZ AZ)。 一旦你在字形窗口中选择点击集和全选(CMD-A)。 这将需要一些时间,如果有很多的这种情况。 然后CMD-删除,并删除所有。 你只需要“类别”重复操作即可大功告成。 然后出口杂项文件



Answer 4:

10 MB OpenType字体是非常罕见的,因为它是非常沉重的重量,所以我认为这是一个内部的特定的字体,而不是商业。 对于删除字型,你可以在编辑字体FontForge (免费)或任何其他商业字体编辑器和后再生的杂项文件(也.TTF)

对于建设网络字体(我想你需要的.ttf,.SVG,.eot和.woff),你可以在本地使用多种免费工具: sfnt2woff , ttf2eot , 蜡染SVG与ttfautohint可以提高道路的字体看起来在屏幕使得转换之前。



Answer 5:

遇到了这个,因为今天我是要来挽救CTRL + A后的字体和设置宽度(不这样做,顺便说一句)。 我有一点更直接的Python脚本的方式去,因为我已经有字体,FontForge开放。

这是假设你有预期的字体通畅并有将其激活。 它还假设您只想要保留前128个字符(ASCII范围)。 它选择那么一切使用“少”标志从0-127取消选择的范围内。 看一看在FontForge Python脚本指南上,你可以操纵选择不同的方式一些更多的信息。

文件>执行脚本

font = fontforge.activeFont()
font.selection.all()
font.selection.select(("ranges","less"),0,127)
font.clear()


Answer 6:

fonttools目前已经通过谷歌: https://github.com/googlei18n/fonttools 。 我一直在使用它来降低字形数谷歌的字体诺托在嵌入式系统中使用。 作品一种享受!



文章来源: Downsizing an .OTF font by removing glyphs