利用fontmin給cocos2d-x遊戲字體瘦身

清宮Q傳有很多文本需要顯示,同時爲了效果也使用了很多種不同的字體,導致字體文件佔據程序包很大比例的空間,搜索了一下,找到了一款工具fontmin可以有效減少字體大小。

fontmin簡介

fontmin是一個純 JavaScript 實現的字體子集化方案,提供了 ttf 子集化,eot/woff/svg格式轉換,css 生成等功能。雖說是被設計用來提升網頁體驗的,但也可以通過減少字體體積從而減少iOS/Android程序包的大小;-)

官網提供了一個很好的示例,展示了其壓縮字體前後的效果:
fontmin官網示例

安裝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優化字體

  • 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目錄,可以看到優化後的字體已經變得很小了:

優化後的字體

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章