前言

遇到需要自定义字体的需求时就需要向用户索要相关字体,然而从用户那里拿到的字体通常10m左右,假如用户的服务器带宽不够大,那么。。。。

于是参考网页中文字体压缩(woff2)、拆分、去繁体字库,提高加载速度 进行的字体"安排"

字体提取

为了便于以后更方便的提取,于是绝对将其安装在我得腾讯云无忧主机上,这样以后在提取直接上传到服务器即可。

字符集字数Unicode 编码
基本汉字20902字4E00-9FA5
基本汉字补充74字9FA6-9FEF
扩展A6582字3400-4DB5
扩展B42711字20000-2A6D6
扩展C4149字2A700-2B734
扩展D222字2B740-2B81D
扩展E5762字2B820-2CEA1
扩展F7473字2CEB0-2EBE0
扩展G4939字30000-3134A
康熙部首214字2F00-2FD5
部首扩展115字2E80-2EF3
兼容汉字477字F900-FAD9
兼容扩展542字2F800-2FA1D
PUA(GBK)部件81字E815-E86F
部件扩展452字E400-E5E8
PUA增补207字E600-E6CF
汉字笔画36字31C0-31E3
汉字结构12字2FF0-2FFB
汉语注音43字3105-312F
注音扩展22字31A0-31BA
1字3007

安装pyftsubset

pip3 install fonttools

小康的服务器自带了python3.6环境,因此省略的相关环境的安装。

安装完成后即可通过pyftsubset --help命令查询相关帮助。

为了方便操作这里直接套用了imaegoo整理的unicodes文件(备用地址)

此文件包含的文字范围:简体字,latin的区间和中文标点符号

工具使用方法

pyftsubset 字体文件 --unicodes-file=sc_unicode文件位置

示例:

pyftsubset NotoSansCJKsc-Regular.otf --unicodes-file=sc_unicode.txt

需要字体文件与sc_unicode.txt文件放在相同目录。

字体压缩

字体压缩用到了谷歌的项目woff2,此工具会将你的字体文件压缩成woff2格式的字体文件。

git clone --recursive https://github.com/google/woff2.git
cd woff2
make clean all

需要g++工具,但我的服务器居然自带了,因此相关环境安装过程也可以省略了。

编译安装完成后会在目录下出现三个文件woff2_decompresswoff2_compresswoff2_info,我们需要将woff2_compress文件进行软连接,这样只需要输入woff2_compress即可调用该程序。

ln -s 文件 /bin/
# 例如 ln -s /opt/woff2_compress /bin/

使用

完成上面操作后,以后压缩字体的过程大概就是如下几步:

  1. 上传字体

  2. 提取简体字

    pyftsubset 字体文件名 --unicodes-file=sc_unicode.txt
  3. 压缩字体

    woff2 字体文件名
  4. 取出压缩后的字体文件

参考