44

我知道Online Font Converter 之类的服务,但我对离线解决方案感兴趣,最好是通过命令行。有谁知道如何离线将 WOFF 转换为 OTF/TTF 的工具或工作流程?

4

7 回答 7

65

我为此写了一个简单的工具:

https://github.com/hanikesn/woff2otf

目前仅使用 ttf 文件进行测试。

于 2012-04-29T18:08:10.377 回答
8

以下是制作 WOFF 文件的参考代码:http: //people.mozilla.org/~jkew/woff/我有一面镜子:https ://github.com/samboy/WOFF

要编译和安装,请确保您已安装 zlib 开发库(例如在 CentOS6yum -y install zlib-devel中以 root 身份安装),然后

git clone https://github.com/samboy/WOFF
cd WOFF
make

然后,作为根:

cp sfnt2woff /usr/local/bin

完成此操作后,要制作网络字体,请进入包含 .ttf 文件的目录,然后运行 ​​sfnt2woff

sfnt2woff Chortle2014f.ttf

这将创建一个 Chortle2014f.woff webfont 文件。将“Chortle2014f.ttf”替换为要转换的实际网络字体的名称。

我提供的第一个链接有 Windows 和 MacOS 二进制文件,供不想安装编译器的人使用。

以下是制作 WOFF2 文件的参考代码:https ://github.com/google/woff2请注意,此代码不会在 CentOS6 中安装,但在 CentOS7 中编译安装正常:

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

woff2 字体生成类似:

woff2_compress Chortle2014f.ttf
于 2016-05-08T16:19:39.363 回答
5

我不喜欢当前最佳答案是 Python 脚本这一事实,而且似乎也有人说它不起作用。此外,目前的答案似乎都没有提到使用zopfli压缩算法编译 WOFF 转换器,这优于zlib其他工具使用的标准算法。由于这些原因,我决定走“正确”(即非脚本)路线并在此过程中添加我自己的答案。

注意: 以下两个实用程序的编译过程都非常简单,只需复制和运行我在下面提供的代码片段就更容易了,但它们仍然需要一个工作编译器。如果您之前没有从源代码编译过软件,您可能需要先设置编译器环境。如果您使用的是 Cygwin,您可以按照我在此处回答的第一部分来设置 MinGW-w64 交叉编译器

WOFF CLI 转换器(带 ZOPFLI 压缩)

首先,通过将以下所有内容粘贴到终端并按 来编译和安装sfnt2woff 1Enter

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 的 woff2 工具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 指的是 TTF 和 OTF 字体格式都围绕构建的 SFNT 表格式。

于 2019-09-17T14:48:06.253 回答
3

我也一直在找这个,但是很抱歉,我找不到离线的,但我找到了这个:

http://orionevent.comxa.com/woff2otf.html - 不再可用

真的很棒

编辑:找到一个命令行工具

https://superuser.com/questions/192146/converting-from-woffweb-open-font-format

于 2012-02-03T16:06:32.330 回答
2

EverythingFonts 有一个运行良好的在线工具

如果您希望离线执行此操作,请按照Erik Tjernlund 在 Super User 上的回答,您可以下载源代码并编译 and 的woff2sfnt可执行文件sfnt2woff

撰写本文时的最新版本来自 2009/09/09。不幸的是,我发现它似乎不适用于所有 WOFF 文件,有时会抱怨签名错误,有时只是给出损坏的 OTF 文件。

于 2013-09-19T13:00:32.900 回答
2

我使用上面由 barethon链接的 python 脚本编写了一个WOFF 到 OTF 的在线 javascript 转换器

于 2014-11-21T22:03:09.673 回答
2

我意识到这个线程已经有一段时间不活动了,但是在一些 stackoverflow 用户的帮助下,我能够使用上面提到的 python 脚本 [ @hanikesnwoff2otf.py ] 创建一个允许批量转换 woff 文件的工作流.

如果不是为了原始海报的使用,那么对于遇到此线程以寻找相同内容的其他人,请查看我的线程以获取有关如何执行此操作的详细信息:

修改 Python 脚本以批量转换目录中的所有“WOFF”文件

即使您不需要批量转换,onlinefontconverter.com 也会产生不可靠的结果,并且everythingfonts.com 的转换限制为 0.4 MB,除非您升级到付费帐户,而且与离线解决方案相比,两者都非常耗时。

祝你好运!

于 2015-12-28T18:43:02.803 回答