精简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

svg

相关推荐