精简ttf,svg字体库文件,删除多余字体,保留用到字体
有一个Android项目使用少女字体, Android手机默认又没有, 一个少女字体大概3M多, APK打包下来6M多, 字体占了一半,于是想办法精简, 办法是找到了如下:
但应用了我提取字体后才发现,这个是行不通了,只提取strings.xml中包含的字体, 但用户输入的字和数据库中保存的字就没有包含, 程序显示部分字是少女字体,部分默认字体. 于是还是放弃了.
提取字体方法贡献出来,在其它很多地方都可以用到的.
1. 安装nodejs
下载: http://nodejs.org/download/
Current version: v0.10.35
Windows Installer (.msi)
2. 安装nodjs, next->next->....
3. git更新依赖库;
git clone https://github.com/qdsang/fonts-streamline
git clone https://github.com/nfroidure/svgfont2svgicons
git clone https://github.com/nfroidure/svgicons2svgfont
4. 安装依赖库
在D:\Program Files\nodejs目录下
npm install E:\source\Font\fonts-streamline-master
npm install E:\source\Font\fonts-streamline-master
npm install E:\source\Font\fonts-streamline-master
运行npm可能报错, 原因是是提示那个目录(如:C:\Users\wv\AppData\Roaming\npm)不存在,自己新建一个.
安装完成,在D:\Program Files\nodejs\node_modules目录下就有一个.bin文件夹,还有三个fonts-streamline,svgfont2svgicons,svgicons2svgfont
把.bin下所有东西copy到D:\Program Files\nodejs目录下,修改.cmd文件. 如:fonts-streamline.cmd(只修改刚安装那三个,参考:npm.cmd)
原来:
@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\fonts-streamline\bin\fonts-streamline.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\fonts-streamline\bin\fonts-streamline.js" %* )
修改后:
@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\.\node_modules\fonts-streamline\bin\fonts-streamline.js" %* ) ELSE ( node "%~dp0\.\node_modules\fonts-streamline\bin\fonts-streamline.js" %* )
不修改运行fonts-streamline时会报错, 一个就是找不到路径, 如果你没有就不用修改这三个文件.
5. 提取字体(只保留需要的)
fonts-streamline "一块钢板的艺术之旅40道工艺制程" ./DFPShaoNvW5.svg ./showNv_drawing_diet.ttf
注意:fonts-streamline只支持输入是.svg格式字体文件.
可以在线转一下ttf2svg: http://onlinefontconverter.com/font?id=p1
6. 附字体去重工具
http://my.oschina.net/vabright/blog/62372