she*_*nan 23 fonts glyph font-face
我不太相信这个问题没有专门针对OpenType字体,但有没有人知道从这些字体中删除字形的方法?
我有一个非常大的文件大小(几乎10MB)的.OTF,我需要缩小它.原因有两个.
1)我正在尝试为网页嵌入做准备,因此文件越小,客户端就越容易.
2)Font Squirrel(用于轻松准备字体文件)有2MB上传限制 - 我知道有其他选择,但到目前为止都没有成功.为了节省浪费时间,我尝试失败的那些是http://fontface.codeandmore.com/和http://www.font2web.com/.CodeAndMore.com似乎有效,但它吐出的字体与我给它的字体完全不同.
请注意我不是字体专家,所以请轻松回答.
Sad*_*Net 18
创建了一个回答此问题的帐户.我知道这是一个老问题.但是得到一个迟到的答案比没有答案更好.
我刚遇到类似的问题.显然,没有Googlable解决方案.因此,我用fontforge库编写了一个Python2脚本,执行以下操作:
这是代码:
#!/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])
Run Code Online (Sandbox Code Playgroud)
请注意,在某些字体上使用此脚本可能不合法.确保签出源字体的许可证.对于因使用此脚本生成的任何字体而导致的任何法律问题,我概不负责.
Wiv*_*aro 10
FontTools有一个名为pyftsubset的程序
https://github.com/behdad/fonttools
使用类似这样的东西:
pyftsubset MyFont.otf --output-file=MyFontStripped.otf --unicodes-file=file-of-codes.txt
Run Code Online (Sandbox Code Playgroud)
其中file-of-codes.txt包含以下代码列表:
U+09c78
U+09ce5
U+09ce7
U+09ce9
U+09ceb
U+09cec
U+09cf0
U+09cf3
U+09cf4
U+09cf6
...
Run Code Online (Sandbox Code Playgroud)
10 MB Opentype 字体非常罕见,因为它的重量很大,所以我认为它是内部特定字体而不是商业字体。要删除字形,您可以在FontForge (免费)或任何其他商业字体编辑器中编辑字体,然后重新生成 .otf(也为 .ttf)
为了构建网络字体(我猜你需要 .ttf、.svg、.eot 和 .woff),你可以在本地使用几个免费工具:sfnt2woff、ttf2eot、Batik SVG,并且使用ttfautohint你可以改进字体在进行转换之前的屏幕。