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