安装包太大?使用fontTools给字体文件瘦个身

2,697 阅读2分钟

在App系统字体无法满足我们的需求的时候,我们需要使用到个性化字体,但是下载之后才发现,字体文件体积巨大,尤其是中文字体,动不动就可能有几十 MB,难道只能放弃吗。当然不!!!这里就分享给大家我的方案:

使用Python中的fontTools库将字体文件中需要的字保留,其余的剔除掉。Mac自带Python,但一般版本比较旧,所以我们先升级一下Python,拿我这款M1的MacBook为例:

1.更新python

~ python -V

显示的版本是:

Python 2.7.10

然后下载 Python,下载完成后是一个pkg 的安装包, 安装后默认路径是

:/Library/Frameworks/Python.framework/Versions/3.10

此时可以使用mac中的前往验证一下路径是否正确,记得将路径中的版本号替换为你所下载Python的版本号

12534171-286404310091e7f8.png

进入终端, 输入open .bash_profile, 添加如下环境变量:

alias python=/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10

记得检查版本号,修改完成后保存退出, 并在终端执行

source ~/.bash_profile

作用使设置立即生效,这时候再查看python的版本 python -V

Python 3.10

2.下载pip

pip是python的包管理工具,类似Cocoapods和iOS的关系,在终端中运行命令如下

curl https://bootstrap.pypa.io/get-pip.py | python3

安装后检查版本

pip --version

3. 安装 fontTools

运行命令

pip install fontTools

12534171-67f93fe229a2a548.png

4.基本使用

我们需要使用的是其中的 pyftsubset 命令,在命令行下的基本操作为:

pyftsubset {源字体文件位置} --text={需要的字符} --output-file={输出字体文件位置}

只要给出网站所需要的字符,就能轻松生成精简后的字体,可以超大幅度地减小字体体积,这里拿DottedSongtiSquareRegular像素字为例,我们项目中不需要中文字体显示,只需要大小写英文字母和数字,那么就可以:

pyftsubset "/Users/wanghaoyu/Desktop/DottedSongtiSquareRegular.ttf" --text="AaBbCcDdEeFfGgHhIiGgKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789-" --output-file="/Users/wanghaoyu/Desktop/simple.ttf"

大功告成,放一下精简前后的对比图

WechatIMG72.png

WechatIMG73.png