如何将TTF文件转换为OTF格式?

18

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

8个回答

14
如果您使用Linux,可以使用FontForge,它可以从Python脚本化。
#!/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,请尝试访问https://dev59.com/F2025IYBdhLWcg3w76lq#26313183。 - Andrei
你应该披露这个网站(大概)是你的。 - jhpratt

11

找出正确的方法非常困难。以下是我在 OS X 上成功实现的方法。

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

我绝望地寻找pip install fontforge,但它不存在,而且我也没有将其与Python配合使用 - 我猜您需要使用--enable-pyextension或类似选项进行编译。


1
对我来说是完美的答案,我也在使用OS X,确实,pip install fontforge没有起作用。不过我已经在使用Homebrew了,所以你的答案对我来说非常准确。 :-) - Frerich Raabe
1
这是最好的答案。所有在线转换器都不值得使用,因为要么无法工作,要么需要付费。 - Zefir
4
如果其他人对这个解决方案有问题,确保你尝试一下这个: fontforge -c“f = fontforge.open(argv [1]); f.generate(argv [2])”~/Downloads/logo.ttf ~/Downloads/logo1.otf - alez007
4
在添加导入fontforge-c"import fontforge; from sys import argv; f = fontforge.open(argv[1]); f.generate(argv[2])"后,我设法让它工作了。原文的意思是将字体文件"font.otf"转换为"font.ttf"格式。 - nojhan
1
多年来,事情已经发生了变化。请随意将其作为单独的答案提交,并编辑此答案以引用它。 - Andrei

5
你可以直接在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;
}

它正在发挥作用!

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


这会不会引起兼容性问题?我听说过类似的事情,但不确定... - tomsseisums
@Tom 我从未见过这种语法的兼容性问题。这是一种旧的语法,自2000年以来就被浏览器支持! - Farzin Zaker
好的,这里有一篇文章http://randsco.com/index.php/2009/07/04/p680...向下滚动到**来吧,难道真的那么简单吗?**部分,你就会发现,IE只支持`*.eot`。或者这只是一个谣言? - tomsseisums
你链接的网站似乎无法将文件转换为OTF格式。 - Eirinn
你需要 ttfeotwoff!请参考我的答案:https://dev59.com/F2025IYBdhLWcg3w76lq#20386012 - AvL

5

3
为了实现跨浏览器/移动设备支持,您至少需要三种格式:
  1. 嵌入式开放字体:Internet Explorer 6-8使用 eot 格式。
    有一个命令行转换器:http://code.google.com/p/ttf2eot/

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

  3. 和 TrueType:Safari 和 Opera 使用 ttf 格式。

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

无懈可击的 @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')这一行。 - Agi Hammerthief

2
如其他人所述,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()


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接