利用fontmin给cocos2d-x游戏字体瘦身

清宫Q传有很多文本需要显示,同时为了效果也使用了很多种不同的字体,导致字体文件占据程序包很大比例的空间,搜索了一下,找到了一款工具fontmin可以有效减少字体大小。

fontmin简介

fontmin是一个纯 JavaScript 实现的字体子集化方案,提供了 ttf 子集化,eot/woff/svg格式转换,css 生成等功能。虽说是被设计用来提升网页体验的,但也可以通过减少字体体积从而减少iOS/Android程序包的大小;-)

官网提供了一个很好的示例,展示了其压缩字体前后的效果:
利用fontmin给cocos2d-x游戏字体瘦身_第1张图片

安装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
See fontmin --help for more information.

使用fontmin优化字体

利用fontmin给cocos2d-x游戏字体瘦身_第2张图片

  • 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目录,可以看到优化后的字体已经变得很小了:

利用fontmin给cocos2d-x游戏字体瘦身_第3张图片

你可能感兴趣的:(cocos2d-x,字体,游戏,iOS,lua,cocos2d-x,Android)