在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的版本号
进入终端, 输入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
4.基本使用
我们需要使用的是其中的 pyftsubset 命令,在命令行下的基本操作为:
pyftsubset {源字体文件位置} --text={需要的字符} --output-file={输出字体文件位置}
只要给出网站所需要的字符,就能轻松生成精简后的字体,可以超大幅度地减小字体体积,这里拿DottedSongtiSquareRegular像素字为例,我们项目中不需要中文字体显示,只需要大小写英文字母和数字,那么就可以:
pyftsubset "/Users/wanghaoyu/Desktop/DottedSongtiSquareRegular.ttf" --text="AaBbCcDdEeFfGgHhIiGgKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789-" --output-file="/Users/wanghaoyu/Desktop/simple.ttf"
大功告成,放一下精简前后的对比图