关于CSS:如何将TTF文件转换为OTF格式?

How can I convert TTF files to OTF format?

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


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

1
2
3
4
#!/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
  • 您应该披露该网站(大概是您的)。


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

1
2
$ 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])" ~Downloadslogo.ttf ~Downloadslogo1.otf
  • 添加导入fontforge -c"import fontforge; from sys import argv; f = fontforge.open(argv[1]); f.generate(argv[2])" font.otf font.ttf后使其正常工作
  • 多年来,情况发生了变化。随时将其作为单独的答案提交,并编辑此答案以供参考。


Google对ttf otf converter的快速搜索为我提供了许多结果,例如:

https://onlinefontconverter.com

http://www.freefontconverter.com

http://www.font2web.com

不知道它们的效果如何,但是您可以尝试一下。


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

1
2
3
4
5
6
7
8
@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;
}

这是工作!

或者,您可以使用此链接生成字体!

  • 这会导致兼容性问题吗?听到过这样的话,但不能肯定...
  • @Tom我从未见过此语法的兼容性问题。它是一种古老的语法,自2000年以来一直受浏览器支持!
  • 好吧,这里有一篇文章randsco.com/index.php/2009/07/04/p680 ...向下滚动到Cmon,真的那么简单吗?部分,您已经拥有了,IE仅支持*.eot。或那只是一个神话?
  • 您链接到的站点似乎没有转换为OTF。
  • 您需要ttfeotwoff!见我的答案:stackoverflow.com/a/20386012/1106393


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

  • 嵌入式OpenType:Internet Explorer 6-8的eot
    有一个命令行转换器:http://code.google.com/p/ttf2eot/

  • Web开放字体格式:woff Web字体的W3C建议:http://www.w3.org/TR/WOFF/
    可以在这里喜欢转换器:http://people.mozilla.org/~jkew/woff/

  • 和TrueType:ttf(用于Safari和Opera)

  • (您可以添加可伸缩矢量图形:svg,以获得较旧的iOS支持...)

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

    1
    2
    3
    4
    5
    6
    7
    @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
    http://webfonts.info/

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

    • IE的最新版本为11。支持IE 8或更低版本是浪费时间,除非得到主要客户的特别指示。这样,可以删除url(vinegar.eot?) format(embedded-opentype)行。


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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [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()

    您也可以尝试以下方法:

    http://www.freefontconverter.com/


    使用字体松鼠@font-face生成器。