一、货物:
@font-face {
font-family: 'ludger_duvernayregular';
src: url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.eot');
src: url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.eot?#iefix') format('embedded-opentype'),
url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.woff') format('woff'),
url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.ttf') format('truetype'),
url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.svg#ludger_duvernayregular') format('svg');
font-weight: normal;
font-style: normal;
}
p.test {
font-family: 'ludger_duvernayregular', Arial, serif;
font-weight: 400;
color: blue;
}
请注意,我使用的字体是有目的的,很容易被视为有效。 (而且我无法访问网络字体中的 Gotham,所以......我什至不确定 Gotham 是否被许可以网络字体形式使用。如果您没有许可证或许可证没有请允许,请尊重这一点。)因此,您将不得不考虑一下字体文件的路径。
我所做的是咨询blog post AlienWebGuy linked to,这很好。时间不长,我就读了。归结为:
- 可能是字体文件的 MIME 类型配置错误。有关更多信息,请参见下文。还有一个说明 Apache 可能有这个问题,这似乎更像是一个 IIS 问题(根据文章)。
- 您可以欺骗 (?) IE9 使用 EOT 文件而不是 WOFF,这显然可以解决问题(根据文章)。
此外,顺便说一句,IE9 在显示带有jsFiddle demo 的字体时出现问题使用完全相同的 CSS。很奇怪。 IE7 和 8 运行良好,所以我知道它在某些方面工作。我不知道那是什么意思,但我将相同的标记和 CSS 保存到我网站上的一个文件中,它工作正常。
故障...
让我解释一下上面的 CSS 中发生了什么。我会遍历每一行。但是,请记住,我有以下文件格式的网络字体:
如果您不想支持旧版 iOS,您可能只需要 eot、ttf 和 woff。不过,SVG 翻译很难获得。
现在,首先为您的字体命名,以便您可以引用它:
font-family: 'ludger_duvernayregular';
IE9 兼容模式:
src: url('http://jfcoder.com/css/fonts/ludgerduvernay-fontsquirrel/ludgerduvernay.eot');
记住要验证您在此处使用的 URL 是否确实指向一个真实文件。把它放在地址栏中,看看会发生什么(它会下载吗?404?)。
不过,在下文中,我将删除完整的 URL,以便您可以看到整个语句,包括结尾。
IE6、7 和 8:
src: url('http://../ludgerduvernay.eot?#iefix') format('embedded-opentype'),
注意这部分:
.eot?#iefix <<< See below for an explanation.
进一步的 IE CSS 修复
在极少数情况下,IE 会失败,因为 @font-face 声明
字符太多。在大多数情况下,这可以通过以下方式解决
在“?”问号之后添加一个“#”井号。这给你买了一个
有点额外的空间。
- 来自 Font Spring 文章
我不知道为什么会这样,所以我相信他们的话。
现代浏览器:
url('http://../ludgerduvernay.woff') format('woff'),
Safari、Android、iOS:
url('http://../ludgerduvernay.ttf') format('truetype'),
旧版 iOS:
url('http://../ludgerduvernay.svg#ludger_duvernayregular') format('svg');
那就用吧:
p {
font-family: 'ludger_duvernayregular', Arial, serif;
}
我真的很惊讶这可以追溯到 IE6。无论如何,请注意我使用文件的完整路径,而不是相对路径。这通常是一个很好的起点。 检查以确保下载链接。我很重视这个,因为它很基础而且很容易搞砸。
因此,如果文件是使用 url 下载的,并且您已经让它在其他浏览器中运行,并且在 IE6、7 和/或 8 中,您可以查看另一种可能性:
在服务器端 (IIS) 修复 IE9
Microsoft 的 IIS 服务器将拒绝发送它不发送的资源
有一个 MIME 类型。我们开发的语法迫使 IE9 采用
WOFF 通过 EOT,但如果它在 IIS 上提供,它将失败。这是
因为 IE9 请求 WOFF 文件,但由于 WOFF 没有定义
IIS 中的 MIME 类型,返回 404 Not Found 错误。为了解决这个问题,
您必须将 MIME 类型为“application/x-font-woff”的“.woff”添加到您的
IIS 安装。
- 来自 Font Spring 文章
因此,您可能需要检查您的服务器是否运行正常。您还可以使用 Chrome 控制台或 Firebug NET 选项卡查看随文件发送的标头。
现在我在这里得到了一点帮助,我认为您应该考虑以下选项:
-
Google Web Fonts。不要成为英雄。他们托管字体,为您提供包含样式表标记,然后,您就开始做生意了。他们也有一些很酷的字体。有other web font services,如Typekit、Webtype、Fontdeck、Fonts Live。
-
Font Squirrel has a @Font-Face Generator,它可以为您提供您需要的所有文件(警告:只提交您知道已获得网络使用许可的字体。)。使用专家模式,它会给你一个包含很多很棒的东西的 ZIP 文件,包括一个演示。我收到的你可以在这里下载。有趣的是,生成的 CSS 与 Font Spring 相同,只是减去了 cmets。这可能不是巧合。
- 我在this Opera Dev page 上发现了这个很棒的工具。这也值得一读。
- 当然还有 Font Spring 上的 blog post AlienWebGuy linked to。
这些东西并不难,但您需要知道如何排除故障。始终检查文件是否正在下载;您可以使用 Chrome 控制台资源选项卡或 Firefox 的 Firebug 插件并观察 NET 选项卡以查看它是否下载。如果它真的不起作用,请将页面或代码发布到我们可以访问的地方,我们可以对其进行审查。
编码愉快。 :)
演示中使用的超酷字体是 Ludger Duvernay Regular。有关详细信息,请参阅Steve Cloutier/Cloutierfontes 站点。感谢您将其免费供个人使用。 :)