【问题标题】:How can I convert TTF files to OTF format?如何将 TTF 文件转换为 OTF 格式?
【发布时间】:2011-08-08 09:30:48
【问题描述】:

我需要使用@font-face 功能并且我的字体是TrueType (TTF) 格式,那么如何将TTF 转换为OpenType (OTF) 格式。

【问题讨论】:

    标签: css browser font-face


    【解决方案1】:

    如果您在 Linux 上,则可以使用可以从 Python 编写脚本的 FontForge。

    #!/usr/bin/python
    import fontforge
    font = fontforge.open("STIXGeneral.otf")
    font.generate("STIXGeneral.ttf")
    

    这是一个较长的 python 脚本,它一次对整个目录执行此操作:

    http://fonts.fileformat.info/bin/otf2ttf.py

    【讨论】:

    • 我猜你需要 apt-get install fontforge python-fontforge 或者如果你在 OS X 上试试 stackoverflow.com/a/26313183/179581
    • 您应该披露该网站(大概)是您的。
    【解决方案2】:

    很难找到正确的方法。这是我如何让它在 OS X 上工作

    $ brew install fontforge
    $ fontforge  -c 'Open("my.ttf"); Generate("my.otf")'
    

    我一直在拼命寻找不存在的pip install fontforge,但我还没有让它与 python 一起工作——我想你需要用--enable-pyextension 或其他东西来编译它。

    【讨论】:

    • 对我来说是完美的答案,我也在 OS X 上,确实,pip install fontforge 不起作用。不过,我已经在使用 Homebrew,所以你的回答对我来说一针见血。 :-)
    • 这是最好的答案。所有在线转换器都一文不值,因为要么不工作,要么需要付费。
    • 如果其他人对此解决方案有疑问,请务必尝试:fontforge -c "f = fontforge.open(argv[1]); f.generate(argv[2])" ~/Downloads/logo.ttf ~/Downloads/logo1.otf
    • 添加导入后即可工作fontforge -c "import fontforge; from sys import argv; f = fontforge.open(argv[1]); f.generate(argv[2])" font.otf font.ttf
    • 这些年来情况发生了变化。请随意将其作为单独的答案提交并编辑此答案以供参考。
    【解决方案3】:

    您可以直接在 css 中使用 TTF 文件格式:

    @font-face { 
    font-family: Vinegar; 
    src: url(http://www.4bit.co.uk/testing/design01/vinegar.ttf); 
    }
    
    h3 {
    font-family: Vinegar, "Times New Roman", Times, serif;
    }
    

    它正在工作!

    Or you can use this link to generate your font face!

    【讨论】:

    • 这不会导致兼容性问题吗? 听说过类似的事情,但不确定...
    • @Tom 我从未见过这种语法的兼容性问题。它是一种古老的语法,自 2000 年以来就受到浏览器的支持!
    • 嗯,这是一篇文章randsco.com/index.php/2009/07/04/p680 ...向下滚动到来吧,真的那么简单吗?部分,你有它,IE只支持*.eot。或者这只是一个神话?
    • 您链接到的网站似乎没有转换为 OTF。
    • 你需要ttfeotwoff!看我的回答:stackoverflow.com/a/20386012/1106393
    【解决方案4】:

    在 Google 上快速搜索 ttf otf converter 给了我一些结果,例如:

    https://onlinefontconverter.com

    http://www.freefontconverter.com

    http://www.font2web.com

    不知道它们的效果如何,但你可以试试。

    【讨论】:

      【解决方案5】:

      正如其他人所提到的,fontforge 脚本已切换到 python。 我发现最简单的方法是从命令行调用 python。

      我可以通过这种方式在 Arch Linux 上将多种 ttf 字体转换为 otf,但通过使用您最喜欢的包管理器安装 fontforge,它应该可以在其他发行版上运行。

      [user@host]$ sudo pacman -S fontforge
      [user@host]$ cd /path/to/your/fonts/folder
      [user@host]$ python
      >>> import fontforge
      >>> import os
      >>> fonts = [f for f in os.listdir('.') if f.endswith('.ttf')]
      >>> for font in fonts:
      ...      f = fontforge.open(font)
      ...      f.generate(font[:-3] + 'otf')  # changes extension from ttf to otf
      ...
      >>> exit()
      

      【讨论】:

        【解决方案6】:

        对于跨浏览器/移动设备支持,您肯定需要至少三种格式:

        1. 嵌入式 OpenType:eot 用于 Internet Explorer 6-8。
          有命令行转换器:http://code.google.com/p/ttf2eot/

        2. Web 开放字体格式:woff W3C 推荐的 webfonts:http://www.w3.org/TR/WOFF/
          转换器可以在这里:http://people.mozilla.org/~jkew/woff/

        3. 和 TrueType:ttf 用于 Safari 和 Opera

        4. (您可以添加可缩放矢量图形:svg 以获得旧版 iOS 支持...)

        防弹@font-face 语法是这样的:

        @font-face {
          font-family: 'Vinegar';
          src: url('vinegar.eot?') format('embedded-opentype'),
               url('vinegar.woff') format('woff'),
               url('vinegar.ttf') format('truetype'),
               url('vinegar.svg#svgVinegar') format('svg');
        }
        

        更多资源:
        http://www.paulirish.com/2009/bulletproof-font-face-implementation-syntax/
        http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax

        您可能还想查看此工具:
        https://github.com/zoltan-dulac/css3FontConverter

        【讨论】:

        • IE 最新版本是 11。支持 IE 8 或更低版本是浪费时间,除非有大客户特别指示。因此,url('vinegar.eot?') format('embedded-opentype') 行可能会被删除。
        【解决方案7】:
        【解决方案8】:

        你也可以试试这个:

        http://www.freefontconverter.com/

        【讨论】:

          猜你喜欢
          • 2010-12-31
          • 1970-01-01
          • 2012-01-28
          • 2012-02-19
          • 1970-01-01
          • 2012-03-08
          • 2011-03-16
          • 2014-05-05
          • 2011-12-26
          相关资源
          最近更新 更多