Appearance
字体压缩指南
通常的字体格式(如 TTF、OTF)体积较大,为了优化网页性能,可以将其转换为更小体积的字体文件格式(WOFF2)。字体压缩主要分为两步:取子集和压缩。
安装 fonttools
首先,我们需要安装 Python 的 fonttools
库。使用最新版 Python 的 pip 命令安装:
sh
$ pip install fonttools
取子集
中文汉字数量很多,以思源宋体为例,包含 8105 个规范字。常用汉字数量大约为 3500 个,如果文本相对固定,可以删减掉其他不常用的汉字。更极端的方法是只保留文本中出现的字符,其他全部删除。不过,建议折中保留 3500 个汉字,以便未来修改文本时不必重新压缩字体。
这种删减字符的方法称为“取子集”。我们需要定义一个纯文本文件,里面包含所有要保留的字符。例如,可以使用“现代汉语常用 3500 字.txt”。
取子集命令
使用以下命令对字体文件取子集:
sh
$ fonttools subset "$input_file" --text-file="$text_file" --output-file="$output_file"
$input_file
:输入的字体文件。$text_file
:定义保留字符的纯文本文件路径。$output_file
:输出的字体文件路径。
示例:对思源宋体取完子集后,文件体积从 25.4MB 减少到 2.5MB。
压缩
取完子集后,需要将字体文件压缩成 WOFF2 格式。
压缩命令
使用以下命令进行压缩:
sh
$ fonttools ttLib.woff2 compress "$input_file" -o "$output_file"
$input_file
:输入的字体文件。$output_file
:输出的字体文件路径。
示例:对取完子集的字体进行压缩后,体积从 2.5MB 减少到 1.9MB,减少了约 70%。
总结
通过取子集和压缩两步,可以显著减少字体文件的体积,提高网页加载速度和性能。以下是完整的命令示例:
sh
# 安装 fonttools
$ pip install fonttools
# 取子集
$ fonttools subset "input_font.ttf" --text-file="3500_characters.txt" --output-file="subset_font.ttf"
# 压缩成 WOFF2 格式
$ fonttools ttLib.woff2 compress "subset_font.ttf" -o "compressed_font.woff2"
这样处理后的字体文件可以大大减少网页的加载时间,提升用户体验。