我不太相信这个问题尚未为OpenType字体特别要求,但没有人知道的一种方式,从这些字体删除字形?
我有一个非常大的文件大小(10MB差不多)的杂项文件,我需要把它缩小。 其原因有两个方面。
1)我试图为网络嵌入做准备,所以文件越小,客户端的更容易。
2)字体松鼠(用于制备简单的字体文件),拥有2MB的上传限制 - 我知道有替代品,但没有到目前为止已经成功。 为了节省浪费人民的时间,我已经试过了那些失败是http://fontface.codeandmore.com/和http://www.font2web.com/ 。 CodeAndMore.com似乎工作,但它吐出背出字体到一个我把它完全不同。
请注意,我不是一个字体的专家,这样下去容易的答案。
创建一个账户,回答这个问题。 我知道这是一个老问题。 但最好是有一个迟到的回答比没有答案。
我刚刚碰到类似的问题。 显然,没有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])
请注意,这可能不合法使用这个脚本在某些字体。 确保检出源字体的许可证。 我不负责因使用该脚本生成的任何字体的任何法律问题。
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
...
继最新评论:您可以同时使用移动和命令键都在同一个镜头左边的菜单(语言)选择好几套。 注意图像保持基本拉丁语(AZ AZ)。 一旦你在字形窗口中选择点击集和全选(CMD-A)。 这将需要一些时间,如果有很多的这种情况。 然后CMD-删除,并删除所有。 你只需要“类别”重复操作即可大功告成。 然后出口杂项文件
10 MB OpenType字体是非常罕见的,因为它是非常沉重的重量,所以我认为这是一个内部的特定的字体,而不是商业。 对于删除字型,你可以在编辑字体FontForge (免费)或任何其他商业字体编辑器和后再生的杂项文件(也.TTF)
对于建设网络字体(我想你需要的.ttf,.SVG,.eot和.woff),你可以在本地使用多种免费工具: sfnt2woff , ttf2eot , 蜡染SVG与ttfautohint可以提高道路的字体看起来在屏幕使得转换之前。
遇到了这个,因为今天我是要来挽救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()
fonttools
目前已经通过谷歌: https://github.com/googlei18n/fonttools 。 我一直在使用它来降低字形数谷歌的字体诺托在嵌入式系统中使用。 作品一种享受!