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

Posted

技术标签:

【中文标题】如何将 OTF/TTF 文件转换为 EOT 格式?【英文标题】:How can I convert OTF/TTF files to EOT format? 【发布时间】:2010-12-31 02:12:00 【问题描述】:

我需要使用@font-face 功能,我的字体是 OTF/TTF 格式,微软浏览器只支持 EOT 格式。我尝试使用 Microsoft 工具 WEFT,但它不起作用或者我不明白它是如何工作的。有没有其他方法可以将我的字体转换为 EOT 格式?

【问题讨论】:

您应该联系原始代工厂。他们将为您提供必要的文件。一般来说,您不允许转换字体文件。大多数 EULA(许可协议)都禁止这样做。 【参考方案1】:

使用Font Squirrel Generator - 这不仅会生成 EOT,还会生成 SVG 和 WOFF 格式,一次转换多个字体文件,并在一个存档中提供所有内容以及相关的 CSS。

【讨论】:

这是一个很棒的小工具。 除非你的字体被列入黑名单 显然黑名单是only Adobe fonts, due to some of them crashing the generator。 (该链接还提供了一些可供选择的答案。) 也不适用于大字体(如果它们包含中文字形,它们将是)【参考方案2】:

这是一种从 otf 一步构建 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 字体名称

旧版本 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

【讨论】:

我不确定这是否属于“一种快速方法”或“一步到位”。它确实有效,但大多数人不会有耐心弄清楚如何在他们的系统上编译和安装 fontforge 和 ttfeot,然后运行一堆命令行的东西。 @matt 一个完美可行的解决方案获得了 downvote 因为它对您来说不是很方便并且包含“一堆命令行的东西”?严重地? +1 以平局。 如果问题是关于 programming 网站的主题,下载和编译是公平的游戏。 如果我找到了一种更简单的方法来做到这一点,我会用简单的方法来做。事实是,我找不到更简单的方法(至少在我这样做的时候)。但是,如果您的应用程序需要所有这三种类型,这是一种正确、直接的方法。 当然,经过一个多小时的努力,我在发布后的几分钟内就发现了自己的污点。您必须在运行脚本之前“导出 FONTFORGE_LANGUAGE=ff”【参考方案3】:

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

【讨论】:

【参考方案4】:

还值得检查的是所有字体字体转换器。这也有 woff2 和 EOT 支持。

https://everythingfonts.com/font-face

如果您只想进行 eot 转换,他们也有。

https://everythingfonts.com/otf-to-eot

【讨论】:

该网站的文件大小限制较低,您必须付费 我担心生成的文件总是比使用简单的开源方法转换的相同文件大。它是否嵌入了一些鬼鬼祟祟的东西?你怎么知道?【参考方案5】:

在 Ubuntu 中,安装 mkeot:

sudo apt-get install eot-utils

然后:

mkeot fontfilename.otf > fontfilename.eot

【讨论】:

你也可以在 Mac 上使用 homebrew 获得这个工具【参考方案6】:

http://www.flaticon.com/font-face

对我来说,它在一个压缩文件中返回了所有字体类型

【讨论】:

以上是关于如何将 OTF/TTF 文件转换为 EOT 格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 OTF、TTF 文件中查找字体版本

使用 NodeJS 将 OpenType / TrueType 格式转换为 png 图像

为IIS增加svg和woff等字体格式的MIME(20032008)

将 MIME 类型转换为文件扩展名 PHP

将 Webfonts 转换为 ttf / otf 格式 - 有可能吗?

网站优化之字体