【问题标题】:Correct Apache AddType directives for font MIME types更正字体 MIME 类型的 Apache AddType 指令
【发布时间】:2011-11-16 22:56:12
【问题描述】:

我正在使用 @font-face 嵌入字体(感谢 Paul Irish)。在尝试修复 Chrome 关于 woff 字体 MIME 类型错误的警告时,我发现了大量相互矛盾的建议。

似乎每个人都同意 .eot 字体(对于 IE 6-8?)应该使用

AddType application/vnd.ms-fontobject .eot

.ttf 字体(旧的非 IE 浏览器?)我见过

AddType application/x-font-ttf        .ttf
AddType application/octet-stream      .ttf
AddType font/truetype                 .ttf
AddType font/ttf                      .ttf

对于 .woff 字体(新标准?)我见过

AddType application/font-wof          .woff
AddType application/x-font-woff       .woff
AddType application/x-woff            .woff

我了解 woff 的 correct MIME type 将是 application/font-woff,但在标准正式发布之前,application/x-font-woff is understood by Chrome

我意识到我的问题回答了一半,但问题是:对于字体应该使用哪些 MIME 类型,是否有任何权威指导或进一步的建议?

更新(以防它对其他人有任何帮助):由于似乎没有任何权威性,我决定在我的 .htaccess 中使用以下字体 MIME 类型(这至少让 Chrome 满意):

AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf        .ttf
AddType application/x-font-woff       .woff

【问题讨论】:

  • +1 我试图把它放在一个框架中,所以即使浏览器可以处理application/octet-stream,我想用“正确”的方式来确保互操作性(例如允许用户为某些内容类型启用 gzip)
  • 感谢您更新对您有用的内容!

标签: apache fonts mime woff eot


【解决方案1】:

这里是在 apache 中缓存所有字体类型的示例(在 Google Page Speed 上测试):

AddType application/font-sfnt            otf ttf
AddType application/font-woff            woff
AddType application/font-woff2           woff2
AddType application/vnd.ms-fontobject    eot


ExpiresByType application/font-woff "access plus 1 month" 
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-sfnt "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

【讨论】:

    【解决方案2】:

    2019年你可以使用:

    AddType font/otf .otf
    AddType font/ttf .ttf
    AddType font/woff .woff
    AddType font/woff2 .woff2
    AddType application/vnd.ms-fontobject .eot
    

    【讨论】:

      【解决方案3】:

      我意识到这个问题已经过时了,但是对于任何想要快速复制/粘贴以将字体 MIME 类型添加到他们的 .htaccess 的人来说:

      <IfModule mod_mime.c>
          AddType application/vnd.ms-fontobject    .eot
          AddType application/x-font-opentype      .otf
          AddType image/svg+xml                    .svg
          AddType application/x-font-ttf           .ttf
          AddType application/font-woff            .woff
          AddType application/font-woff2           .woff2
      </IfModule>
      

      【讨论】:

      • @VivekVikranth 它应该能够安全地粘贴到 .htaccess 文件中的任何位置,但请确保不要将其粘贴到一组标签中,例如 &lt;IfModule&gt;。将它放在文件的第一行或最后一行都可以。
      • 可能还值得注意的是,Apache 的 mime.types 文件列出了所有这些。检查的一个好方法是查看服务器响应头,看看是否有内容类型。
      • @ChrisClower,为什么不应该进入标签内?我是否也应该移出其他行,例如 css、html、jpg 等的行?
      【解决方案4】:

      通常,MIME 类型来自 RFC。 IANA site 上有一个详尽的列表,但没有一个是指字体扩展名。 此外,document describing WOFF format 是草稿,并不是指要使用的 mime 类型。 目前似乎没有关于该主题的可靠参考。

      更新

      W3C 现已发布 WOFF 作为推荐,并在 Appendix B 中将 MIME 类型定义为 application/font-woff。它也已添加到您现在提到的IANA site-GKFX

      【讨论】:

      • 提示:application/font-woff mime 现在已被弃用。请改用font/woff。见IANA site
      【解决方案5】:

      我认为值得一提的是,从 2013 年 3 月起,IANA.otf.ttf 扩展赋予了application/font-sfnt 的MIME 类型。

      有关官方 MIME 类型的完整最新列表,请参阅我在 Proper MIME type for fonts 上的回答

      【讨论】:

      • 在 SO 上自动检测到重复的帖子,您可能会删除 两个 帖子。
      【解决方案6】:

      我刚刚对IANA official list 做了一些研究。这似乎是截至 2013 年 5 月的当前状态:

      这三个是官方的,由 IANA 分配:

      • svg as "image/svg+xml"
      • woff 为 "application/font-woff"
      • eot 为“application/vnd.ms-fontobject”

      这些不是官方/分配的,因此必须使用“x-”语法:

      • ttf as "application/x-font-ttf"
      • otf as "application/x-font-opentype"

      'font' 类型似乎不存在,所以任何时候你看到 'font/xxx' 的类型都是假的。可能允许使用“x-font/xxx”,但不确定。 IIS8 附带了几个这样的条目。不确定 MS 是否认为这些 'font/xxx' 是兼容性所必需的,或者他们只是不阅读 RFC :-)

      application/font-woff 似乎是新的,并且可能是自 2013 年 1 月以来才正式使用的。所以“application/x-font-woff”在短期内可能更安全/更兼容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-29
        • 2011-02-21
        • 1970-01-01
        • 2013-07-12
        • 2011-04-05
        相关资源
        最近更新 更多