【问题标题】:Custom web font not working in IE9自定义网页字体在 IE9 中不起作用
【发布时间】:2012-09-03 20:17:07
【问题描述】:

我下载了一个自定义字体 (Gotham-Light.eot),但它在 Internet Explorer 9 上不起作用。

@font-face {
    font-family: Gotham-Light;
    src: url('Gotham-Light.eot');
}

这不起作用。我正在使用 ASP MVC3 重建,使用自定义工具,仍然没有。

【问题讨论】:

  • 我的代码是一样的。还是不行。我在内容文件夹中有我的
  • @AlienWebguy - 窃取您的链接以获得答案(或多或少)。好东西。
  • 我在回答中对您的问题进行了相当详尽的论述(我花了太多时间在上面,但无论如何)。我希望这会有所帮助。我还调整了您的标签以包含 ASP.NET。

标签: asp.net css asp.net-mvc-3 internet-explorer-9 webfonts


【解决方案1】:

一、货物:

@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,这很好。时间不长,我就读了。归结为:

  1. 可能是字体文件的 MIME 类型配置错误。有关更多信息,请参见下文。还有一个说明 Apache 可能有这个问题,这似乎更像是一个 IIS 问题(根据文章)。
  2. 您可以欺骗 (?) IE9 使用 EOT 文件而不是 WOFF,这显然可以解决问题(根据文章)。

此外,顺便说一句,IE9 在显示带有jsFiddle demo 的字体时出现问题使用完全相同的 CSS。很奇怪。 IE7 和 8 运行良好,所以我知道它在某些方面工作。我不知道那是什么意思,但我将相同的标记和 CSS 保存到我网站上的一个文件中,它工作正常。

故障...

让我解释一下上面的 CSS 中发生了什么。我会遍历每一行。但是,请记住,我有以下文件格式的网络字体:

  • ttf
  • svg

如果您不想支持旧版 iOS,您可能只需要 eotttfwoff。不过,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 选项卡查看随文件发送的标头。

现在我在这里得到了一点帮助,我认为您应该考虑以下选项:

  1. Google Web Fonts。不要成为英雄。他们托管字体,为您提供包含样式表标记,然后,您就开始做生意了。他们也有一些很酷的字体。有other web font services,如Typekit、Webtype、Fontdeck、Fonts Live。
  2. Font Squirrel has a @Font-Face Generator,它可以为您提供您需要的所有文件(警告:只提交您知道已获得网络使用许可的字体)。使用专家模式,它会给你一个包含很多很棒的东西的 ZIP 文件,包括一个演示。我收到的你可以在这里下载。有趣的是,生成的 CSS 与 Font Spring 相同,只是减去了 cmets。这可能不是巧合。
  3. 我在this Opera Dev page 上发现了这个很棒的工具。这也值得一读。
  4. 当然还有 Font Spring 上的 blog post AlienWebGuy linked to

这些东西并不难,但您需要知道如何排除故障。始终检查文件是否正在下载;您可以使用 Chrome 控制台资源选项卡或 Firefox 的 Firebug 插件并观察 NET 选项卡以查看它是否下载。如果它真的不起作用,请将页面或代码发布到我们可以访问的地方,我们可以对其进行审查。

编码愉快。 :)


演示中使用的超酷字体是 Ludger Duvernay Regular。有关详细信息,请参阅Steve Cloutier/Cloutierfontes 站点。感谢您将其免费供个人使用。 :)

【讨论】:

  • 谢谢它通过将其转换为 woff 文件来工作,应该早点尝试。非常感谢
  • @shinratensei:你好,我已经按照这个答案的每一步。尽管如此,该字体从未出现在 Firefox 或 IE 中。检查 Chrome 以查看字体。访问此处查看网站:www.tryst-iitd.com/13/beta
【解决方案2】:

对于 googlers:我遇到了长字体名称或与已安装字体冲突的问题。无论如何,IE 是唯一有问题的浏览器。

我变了

font-family: 'HelveticaLTUltraCompressedRegular';

font-family: 'HelveticaLTUCR';

解决了我的问题。

【讨论】:

    【解决方案3】:

    Gotham 是一个商业产品,如果你刚刚从某个地方下载了它,它可能是非法复制品或伪造品,而且很可能在技术上也被破坏了。

    考虑使用类似设计的免费字体,例如Cicle

    【讨论】:

    • 查看添加到问题中的jsfiddle.net/d8w2K 时,IE 9 在开发人员工具 (F12) 中的控制台部分显示一条错误消息 CSS3114,告知 @font-face 未通过OpenType 嵌入的使用权测试。
    【解决方案4】:

    如果您遵循此处列出的说明 -- http://www.fontspring.com/blog/fixing-ie9-font-face-problems -- 那么很可能是您调用字体的方式。

    确保您从样式表中指向正确的位置 - 上面的代码仅在字体文件与样式表位于同一目录中时才有效。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2014-07-22
      • 1970-01-01
      相关资源
      最近更新 更多