我该如何将OTF/TTF文件转换为EOT格式?

51

我需要使用@font-face特性,而我的字体是OTF/TTF格式的,Microsoft浏览器仅支持EOT格式。我尝试使用Microsoft工具WEFT,但它没能正常工作或者我没有理解它的工作原理。有没有其他方法可以将我的字体转换为EOT格式?


1
你应该联系原始铸造厂。他们会提供你所需的文件。通常情况下,你不被允许转换字体文件。大多数最终用户许可协议都禁止这样做。 - John
6个回答

66

使用Font Squirrel生成器 - 这将不仅生成EOT格式,还会生成SVG和WOFF格式,并且可以一次转换多个字体文件,并将所有内容与相关CSS一起打包到单个存档文件中。


3
这是一个非常棒的小工具。 - matt lohkamp
12
除非你的字体被列入黑名单。 - Sam Rueby
显然,黑名单只包括Adobe字体,因为其中一些会导致生成器崩溃。 (该链接还提供了一些替代方案的答案选择。) - Peter Boughton
2
也无法在大字体上工作(如果它们包含中文字符,则会出现此问题) - Derek Dysart

57

这是一种快速的方法,可以一步生成ttf和eot格式的字体文件,当然,如果你不需要全部的内容,可以挑选出相关部分。请注意,要将otf格式转换为eot格式,您必须进行otf->ttf->eot的转换。

安装fontforge和ttf2eot。它们在MacPorts中可用,其他平台则不确定。

将以下内容保存为名为otf2ttf2eot.sh的脚本文件:

(此脚本已更新以适用于新的fontforge版本;原始脚本在帖子末尾):

#!/bin/sh
otfFont="$1.otf"
ttfFont="$1.ttf"
eotFont="$1.eot"
fontforge -c '
import fontforge
font = fontforge.open("'$otfFont'")
font.generate("'$ttfFont'")
'
ttf2eot "$ttfFont" >"$eotFont"

假设你有一个名为FontName.otf的字体文件,请运行以下命令:

sh otf2ttf2eot.sh FontName

旧版本Fontforge的原始脚本:

#!/bin/sh
# Convert an OTF font into TTF an EOT formats.
otfFont="$1.otf"
ttfFont="$1.ttf"
eotFont="$1.eot"
fontforge -c '
    Open("'$otfFont'");
    Generate("'$ttfFont'");
    Quit(0);'
ttf2eot $ttfFont > $eotFont

4
我不确定这是否合格为“快速方式”或“一步完成”。虽然它确实有效,但大多数人可能没有耐心去学习如何在他们的系统上编译和安装Fontforge和Ttfeot,并运行一堆命令行操作。 - matt lohkamp
21
因为对你并不完美方便且包含“一堆命令行内容”,一个完全可行的解决方案被投下反对票?真的吗?我给它点个赞来平衡一下。 - Pekka
17
如果一个编程网站的问题符合主题,下载和编译都是合理的选项。 - bmargulies
3
如果我找到了一个更容易的方法来做这件事,我会选择采用更容易的方式。但是实际情况是,我找不到更容易的方法(至少在我当时进行操作时)。然而,如果你需要在你的应用程序中涉及这三种类型,那么这是一种正确、简单的方法来达到目的。 - apinstein
1
当然,在挣扎了一个多小时后,我发帖几分钟内就自己找到了解决方案。在运行脚本之前,您必须先输入“export FONTFORGE_LANGUAGE=ff”。 - Adam
显示剩余8条评论

8
在Ubuntu中,安装mkeot
sudo apt-get install eot-utils

然后:

mkeot fontfilename.otf > fontfilename.eot

1
你也可以使用Homebrew在Mac上获取这个工具。 - mozillalives

5

使用http://www.font2web.com/ - 这将生成不仅是EOT,还有SVG和WOFF格式,并且可以同时转换多个字体文件,并在单个存档中提供所有内容以及相关的CSS。


0

0

该网站在您需要付费之前有较低的文件大小限制。 - Savage
我担心使用此方法转换的文件始终比使用简单开源方法转换的同一文件要大。它是否嵌入了什么奇怪的东西?你如何判断? - user9645

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