【问题标题】:IE11 embedded font won't work - tried all the usual approachesIE11 嵌入字体不起作用 - 尝试了所有常用方法
【发布时间】:2015-09-21 23:10:34
【问题描述】:

我有一组在 Firefox、Chrome、Safari 中运行良好的嵌入式字体 - 但是,令人惊讶的是,在 IE 中却不行(v11,但在 10 中尝试过,但也没有用)。

我可以在 IE 中加载一些内容,但不能加载其他内容。 CSS示例:

/* working */
@font-face {
    font-family: 'FoundersGroteskWeb-Semibold';
    src: url(./fonts/FoundersGroteskWeb-Semibold.eot);
    src: url(./fonts/FoundersGroteskWeb-Semibold.eot?#iefix) format('embedded-opentype'),
        url(./fonts/FoundersGroteskWeb-Semibold.woff) format('woff');
    font-style: normal;
    font-weight: normal;
            }

/* not working */    
@font-face {
    font-family: 'FoundersGroteskX-CondensedWeb-Bold';
    src: url(./fonts/FoundersGroteskX-CondensedWeb-Bold.eot);
    src: url(./fonts/FoundersGroteskX-CondensedWeb-Bold.eot?#iefix) format('embedded-opentype'),
        url(./fonts/FoundersGroteskX-CondensedWeb-Bold.woff) format('woff');
    font-style: normal;
    font-weight: normal;
}

提供了字体,所有字体都正确命名,等等。我注意到的一个区别是所有其他浏览器都在加载 woff 文件,而 IE 使用的是(第一个,非 #iefix)eot 文件。所以我尝试删除所有对eot文件的引用,迫使IE11使用woff。再次,它加载第一个很好,但没有使用第二个(所有其他浏览器都加载没有问题)。

当我在 IE 上检查网络选项卡时,我可以看到第一个字体的 200 响应,但第二个字体什么都没有,看起来它可能会在解析 css 时窒息。但是,鉴于这两个声明除了字体名称之外是相同的,我不明白为什么会这样。

有没有人知道我还能尝试什么,因为我已经用完了可以抓住的稻草?

【问题讨论】:

    标签: html css internet-explorer fonts


    【解决方案1】:

    检查字体下载安全,应该可以加载字体图标。

    导航到:

    IE>Internet 选项>Intranet>自定义级别>下载>字体下载

    【讨论】:

      【解决方案2】:

      根据您之前的建议,我还尝试最小化字体名称,但这在最新的 IE 中仍然不起作用:

      </style>
      <style type="text/css">
      
      @font-face { 
        font-family:"Avenir"; 
        src: url("./Fonts/Avenir.eot");
        src: url("./Fonts/Avenir.eot?#iefix") format("embedded-opentype"),  
             url("./Fonts/Avenir.woff") format("woff"); 
      } 
      
      </style>
      

      你认为 IE 不再接受 woff 字体了吗?

      【讨论】:

      • 我认为 woff 格式不是问题。字体是否在其他浏览器中加载?你用的是哪个版本的IE?其他 woff 字体会在 IE 中加载吗?
      【解决方案3】:

      IE 9(我认为 10 和 11 也是如此)对字体名称声明有 31 个字符的限制。请尝试将您的字体名称重命名为“FoundersGroteskX-CndWeb-Bld”;这是 30 个字符,为了安全起见(因为 31 个字符的限制包括引号和分号。

      【讨论】:

      • 成功了 - 非常感谢,我快疯了!
      • IE 万岁,它的怪癖。您会惊讶地发现 IE7/IE8 中没有此限制:D
      • Windows API 的字体名称长度一直最多为 30 个字符。例如,请参阅msdn.microsoft.com/en-us/library/2ek64h34.aspx。我觉得奇怪的是更长的名字似乎在 IE7 和 8 中工作!等等,如果这是 IE7 和 8 中的一个错误,它涉及缓冲区溢出,并且该错误最终在 IE9 中得到修复。
      • 我不能 100% 确定这一点,但已经有一段时间了,但 IE7 和 8 可能没有遵循 MS 规范
      猜你喜欢
      • 1970-01-01
      • 2019-06-22
      • 2015-01-19
      • 1970-01-01
      • 2012-10-21
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多