清宫Q传有很多文本需要显示,同时为了效果也使用了很多种不同的字体,导致字体文件占据程序包很大比例的空间,搜索了一下,找到了一款工具fontmin可以有效减少字体大小。
fontmin简介
fontmin是一个纯 JavaScript 实现的字体子集化方案,提供了 ttf 子集化,eot/woff/svg格式转换,css 生成等功能。虽说是被设计用来提升网页体验的,但也可以通过减少字体体积从而减少iOS/Android程序包的大小;-)
官网提供了一个很好的示例,展示了其压缩字体前后的效果:
安装fontmin
$ npm install --save fontmin
测试是否安装成功:
$ fontmin
如果出现下面输出,则意为成功安装:
Provide at least one file to optimize
Example
fontmin font/* build
fontmin foo.ttf > foo-optimized.ttf
cat foo.ttf | fontmin > foo-optimized.ttf
Seefontmin --help
for more information.
使用fontmin优化字体
fonts
目录存放原始字体文件texts
目录存放每种字体需要显示的文字,例如daofeng.txt
的内容为:
要把谁打入冷宫
generate_fonts.py
的内容为:
#!/usr/bin/python
import os
def run():
font_dir = './fonts'
text_dir = './texts'
for d in os.listdir(text_dir):
with open(os.path.join(text_dir, d), 'r') as fp:
# read texts to be displayed
text = fp.read()
# get font path
fontname = os.path.splitext(d)[0] + '.ttf'
fontpath = os.path.join(font_dir, fontname)
# generate compressed font
cmd = 'fontmin -t "{text}" {font}'.format(text=text, font=fontpath)
os.system(cmd)
if __name__ == "__main__":
run()
执行python ./generate_fonts.py
之后,会产生一个build
目录,可以看到优化后的字体已经变得很小了: