【问题标题】:@font-face in IE: Avoid always downloading font?IE 中的@font-face:避免总是下载字体?
【发布时间】:2012-03-23 01:21:10
【问题描述】:

当使用 IE 特定的字体声明时,如下所示:

@font-face{
    font-family:'Arial Narrow';
    font-style:normal;
    font-weight:normal;
    src:url('../fonts/ArialNarrow.eot');
    src:local('Arial Narrow'),
    local('ArialNarrow'),
    url('../fonts/ArialNarrow.eot') format('embedded-opentype'),
    url('../fonts/ArialNarrow.woff') format('woff');
}

据我所知,即使该字体作为系统字体存在,它也坚持每次都下载我的工作表建议的字体。为了提高效率,有没有办法只在IE中下载字体,如果有必要?

【问题讨论】:

    标签: css internet-explorer fonts font-face eot


    【解决方案1】:

    对于 IE6+ 的声明:

    @font-face{
        font-family:'Arial Narrow';
        font-style:normal;
        font-weight:normal;
        src:url('../fonts/ArialNarrow.eot');
        src:local('Arial Narrow'),
        local('ArialNarrow'),
        url('../fonts/ArialNarrow.eot') format('embedded-opentype'),
        url('../fonts/ArialNarrow.woff') format('woff');
    }
    

    FF/Opera/Chrome/Safari 的声明:

    @font-face{
        font-family:'Arial Narrow';
        font-style:normal;
        font-weight:normal;
        src:local('Arial Narrow'),
        local('ArialNarrow'),
        url('../fonts/ArialNarrow.ttf') format('truetype');
    }
    

    IE 6/7/8 及更低版本/IE9+ WITH 兼容模式开启:无论如何下载链接字体。

    Firefox/Opera/Chrome/Safari/IE9+ 兼容模式关闭:在可用时使用系统字体。系统字体不可用时下载链接字体。

    兼容模式被强制关闭:

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    

    好消息:字体在所有浏览器中都有缓存。它们只需下载一次。

    最终答案:在 IE 6/7/8 和 IE 9+ 兼容模式下,无法避免 @font-face 文件下载。

    【讨论】:

      【解决方案2】:

      如果您指定“Arial Narrow”,我建议不要完全使用 @font-face。这是一种非常非常常见的字体,绝大多数用户(Windows 和 Mac)都会安装它。我会简单地在你的普通字体堆栈中指定一个后备字体:

      body {
       font-family: "Arial Narrow", Arial, Helvetica, "sans-serif";
      }
      

      如果您使用的是不太常见的(即“非网络安全”)字体,那么您的 @font-face 将完全按照应有的方式设置。

      这里有一个很好的资源,可以了解特定字体在网络上的常见程度:

      http://www.speaking-in-styles.com/web-typography/Web-Safe-Fonts/

      Arial Narrow 得到一个“可能”。

      【讨论】:

      • 通常我想避免这种情况,但我意识到在 Windows XP 上没有 Office 2007 或更高版本的任何人都没有 Arial Narrow 字体。我以一种非常具体的方式使用这种字体在我公司的网站上显示定价,老板喜欢它。不幸的是,每月有 10 万以上的访问者,我必须非常小心。它只是每次下载的 IE 的怪癖吗?很棒的链接,顺便说一句!
      • 如果有人只有 Arial(常规),您的布局会完全崩溃吗?它可以变得更灵活,以便如果 Arial 加载,布局至少可以保持在一起?试图为访问者加载一种而且只有一种字体有点与网络的设计方式作斗争。这与“优雅降级”实际上是不同的方面——您为安装了字体的人(绝大多数用户)提供了最佳体验,但为没有安装字体的人提供了良好的体验。至于它的下载,我认为如果你在@font-face 中调用了一个文件,任何浏览器都会这样做。
      • 其实只有IE。我已经用字体声明和完全不同的字体(例如 Arial Narrow 的 Times New Roman)对 FF、Chrome、Opera 和 Safari 进行了试验。示例:我将 Narrow 作为系统字体,加载页面并显示 Arial Narrow。将其作为系统字体删除,它会显示 Times New Roman。 TLDR:IE 是愚蠢的。如果它使用 localname 属性,它不会是低效的。
      • 有趣 - 是的,我已经放弃在 IE 中寻找原因和逻辑了。感谢您提供信息 - 记住这种行为是件好事。您的大多数用户是否使用 IE(我猜是这样)?我想这是一个判断电话,然后 - 您是否强制每个 IE 用户下载字体并确保他们看到 Arial Narrow,或者不承受性能损失并依赖他们安装的内容?我个人更倾向于后一种方法。
      • ~61%,其中 60% 使用 IE8 或更低版本。我已经做了一些广泛的测试,我会发布我的结论作为答案。
      猜你喜欢
      • 1970-01-01
      • 2010-11-22
      • 2013-01-15
      • 2013-02-26
      • 1970-01-01
      • 2016-10-16
      • 2013-01-05
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多