我不喜欢当前最佳答案是 Python 脚本这一事实,而且似乎也有人说它不起作用。此外,目前的答案似乎都没有提到使用 zopfli 压缩算法编译 WOFF 转换器,该算法优于其他工具使用的标准 zlib 算法。由于这些原因,我决定走“正确”(即非脚本)路线并在此过程中添加我自己的答案。
注意: 以下两个实用程序的编译过程非常简单,只需复制并运行我在下面提供的代码的 sn-ps 即可变得更加容易,但是他们仍然需要一个工作的编译器。 如果您之前没有从源代码编译过软件,您可能需要先设置编译环境。如果您使用的是 Cygwin,可以关注the first part of my answer here 设置 MinGW-w64 交叉编译器。
WOFF CLI 转换器(带 ZOPFLI 压缩)
首先,编译并安装sfnt2woff1,将以下内容粘贴所有到终端并按Enter:
git clone https://github.com/bramstein/sfnt2woff-zopfli.git woff &&
cd woff &&
make &&
chmod 755 woff2sfnt-zopfli sfnt2woff-zopfli &&
mv woff2sfnt-zopfli sfnt2woff-zopfli /usr/local/bin &&
rm -rf ../woff
编译并安装该工具后,通过运行将 TTF 或 OTF 文件转换为 WOFF:
sfnt2woff-zopfli <inputfile>.ttf
您还可以使用-n 选项来增加程序运行的迭代次数,以牺牲转换时间为代价增加压缩(默认迭代次数为 15)。
将当前目录中的所有文件转换为WOFF:
for i in *; \
do sfnt2woff-zopfli.exe "$i"; \
done
WOFF2 CLI 转换器(带 Brotli 压缩)
首先,编译并安装Google's woff2 tools,将以下的全部粘贴到终端并按Enter:
git clone --recursive https://github.com/google/woff2.git &&
cd woff2 &&
make clean all &&
mv woff2_compress woff2_decompress woff2_info /usr/local/bin &&
rm -rf ../woff2
编译并安装该工具后,通过运行将单个 TTF 或 OTF 文件转换为 WOFF2:
woff2_compress.exe <inputfile>.ttf
将当前目录中的所有文件转换为WOFF2:
for i in *; \
do woff2_compress.exe "$i"; \
done
您甚至可以将 WOFF2 文件转换回 TTF 或 OTF:
woff2_decompress.exe <inputfile>.woff2
1注意这里的SFNT指的是SFNT表格式,TTF和OTF字体格式都是围绕构建的。