【问题标题】:How to convert WOFF to TTF/OTF via command line?如何通过命令行将 WOFF 转换为 TTF/OTF?
【发布时间】:2012-02-19 12:50:10
【问题描述】:

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

【问题讨论】:

  • 看标题,WOFF(Web Open Font Format)的命名如此不一致。 W3C 应该选择“Web Truetype Font”。

标签: command-line fonts truetype woff


【解决方案1】:

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

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

真的很好

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

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

【讨论】:

  • 是的,我一直在用这个。但是,我正在专门寻找一种离线工作的方法。
【解决方案2】:

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

https://github.com/hanikesn/woff2otf

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

【讨论】:

  • 伟大的工作人员。 Shebang 在 osx 上不起作用,已通过将其输入解释器来修复。
  • Windows 说它输出的每个 OTF 都是“不是有效的字体文件”
  • 不工作 - @Supuhstar 我的经验也是如此(Win7ultimate,py3.4.3)
  • 您能解释一下它的工作原理,以便我为自己构建一个吗? :)
  • @barethon:由于源代码很短,您是否介意将其包含在您的答案中,以便将来保留?
【解决方案3】:

EverythingFonts has an online tool 似乎运行良好。

如果您想离线执行,请按照Erik Tjernlund's answer on Super User,您可以downloaded the source 并编译woff2sfntsfnt2woff 的可执行文件。

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

【讨论】:

    【解决方案4】:

    我使用了上面链接的python脚本 barethononline javascript converter of WOFF to OTF

    【讨论】:

    • 您能解释一下它背后的理念,以便我自己构建一个吗?
    • 另外,有没有办法创建ttf 文件而不是otfpako_inflate.js 有必要吗?那是节点,不是香草,对吧?
    • 我无法解释。我将 Python 直接翻译成 Javascript。
    • 不了解发生了什么?转换是如何工作的,是简单地调整容器的元数据还是?
    • 是的,没有大体理解,至少没有留下这样理解的痕迹。反正已经五年了。
    【解决方案5】:

    我意识到这个线程已经闲置了一段时间,但是在一些 stackoverflow 用户的帮助下,我能够使用上面提到的 python 脚本 [woff2otf.py by @hanikesn] 创建一个允许批处理的工作流woff 文件的转换。

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

    Modify Python Script to Batch Convert all "WOFF" Files in Directory

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

    祝你好运!

    【讨论】:

      【解决方案6】:

      这里是制作WOFF文件的参考代码:http://people.mozilla.org/~jkew/woff/我有镜像:https://github.com/samboy/WOFF

      要编译和安装,请确保您已安装 zlib 开发库(例如,在 CentOS6 中 yum -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 网络字体文件。将“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
      

      【讨论】:

      • WOFF 码有 woff2sfnt 和 WOFF2 码有 woff2_decompress。从道德的角度来看,最好通过突出显示文本,右键单击“检查元素”,转到“字体”,查看字体名称,然后使用搜索引擎在 Mozilla 中查找并购买字体来获取字体名称。题。如果字体是开源的,这绝对是最好的方法,因为网页上的 WOFF/WOFF2 文件可能被子集化或以其他方式残缺。
      【解决方案7】:

      我不喜欢当前最佳答案是 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字体格式都是围绕构建的。

      【讨论】:

      • 据我所知,这些工具从 OTF/TTF 转换为 WOFF,而不是相反。我的问题是专门寻找从 WOFF 转换回 OTF/TTF 的工具。
      • 注意在 Ubuntu 18.04 上,你应该使用 woff2_compress 而不是 woff2_compress.exe。其他命令也是如此。
      • @JonasLekevicius 这就是woff2_decompress 所做的,如上一个示例所示。 Google 的 WOFF2 CLI 包有两个可执行文件:woff2_compress 用于从 OTF/TTF 转换为 WOFF2,woft2_decompress 用于从 WOFF2 转换为 OTF/TTF。
      猜你喜欢
      • 2017-05-05
      • 2012-10-16
      • 2011-08-08
      • 2010-12-31
      • 2013-04-28
      • 2016-08-05
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多