.woff2 字体的正确 MIME 类型

Posted

技术标签:

【中文标题】.woff2 字体的正确 MIME 类型【英文标题】:Proper MIME type for .woff2 fonts 【发布时间】:2015-03-29 21:48:33 【问题描述】:

今天我将Font Awesome 包更新为4.3.0,并注意到添加了woff2 字体。该文件在 CSS 中链接,因此我需要配置 nginx 以正确提供 woff2 文件。

目前我在 nginx 配置中有这个块用于字体:

location ~* \.(otf|eot|woff|ttf)$ 
    types     font/opentype otf;
    types     application/vnd.ms-fontobject eot;
    types     font/truetype ttf;
    types     application/font-woff woff;

woff2 字体的正确 mime 类型是什么?

【问题讨论】:

在 Apache 中缓存 woff2 文件的方法如下:<IfModule mod_mime.c> AddType font/woff2 woff2<IfModule mod_expires.c> ExpiresActive On ExpiresByType font/woff2 "access plus 1 month"。 (省略了结束标签和换行符。) 【参考方案1】:

font/woff2

对于 nginx,将以下内容添加到 mime.types 文件中:

font/woff2 woff2;


旧答案

WOFF2 字体的 mime 类型(有时写为 mimetype)已提议application/font-woff2

此外,如果您参考规范 (http://dev.w3.org/webfonts/WOFF2/spec/),您会看到正在讨论 font/woff2。我怀疑所有字体的filal mime 类型最终会更符合逻辑font/*font/ttffont/woff2 等)...

注意WOFF2 仍处于“工作草案”状态——尚未正式通过。

【讨论】:

已更新。规范说得很清楚。类型是字体,子类型是 woff2,即字体/woff2。这也是谷歌字体本身使用的。 我仍然看不到规范中的任何确定性内容。尽管他们确实谈到想要引入font/* ***类型。我认为为了获得完整信息,我会将其添加到我的答案中。 @atwright147 mime 类型包含在附录 A 中,对于 Woff2,它是附录 A 的第 6.5 节。 2016 年 3 月更新:现在是候选推荐,font/woff2 是 mimetype w3.org/TR/WOFF2/#IMT 当我 gzip woff2 文件变大 - 不像我的 CSS 和 JS 文件被大量缩小 - 也许它已经压缩了?【参考方案2】:

阿帕奇

在 Apache 中,您可以通过 .htaccess 文件添加 woff2 mime 类型,如 this link 所述。

AddType  application/font-woff2  .woff2

IIS

在 IIS 中,只需将以下 mimeMap 标记添加到 web.config 文件中的 staticContent 标记内。

<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />

【讨论】:

application/x-font-woff2怎么样 嘿@Moes :) 实际上,application/x-font-woff2 是 woff2 非常新时的旧类型。 W3C Spec 现在建议使用 application/font-woff2,因为它得到了广泛支持。如果您追求向后兼容性,请随时添加 x-font-woff2 在 IIS 中,小心删除任何以前定义的扩展条目,以防它们在服务器的其他地方定义。如果您遇到它,这会给您非常令人困惑的错误! &lt;remove fileExtension=".woff2" /&gt; 然后定义如上:) 请注意,建议并且最有可能被接受的是 font/woff2 W3C Recommendation for WOFF File Format 2.0 现在建议使用font/woff2 作为 MIME 类型,但IANA list of official media types 不(还)包括 WOFF2。【参考方案3】:

在 IIS 中,您可以通过将以下内容添加到项目的 web.config 来声明 WOFF2 字体文件的 mime 类型:

<system.webServer>
  <staticContent>
    <remove fileExtension=".woff2" />
    <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
  </staticContent>
</system.webServer>

更新: 根据最新的W3C Editor's Draft WOFF2 规范,mime 类型可能会发生变化。请参阅Appendix A: Internet Media Type Registration 6.5 节。 WOFF 2.0 声明了最新的建议格式是font/woff2

【讨论】:

现在 IIS 10 中的 MIME 类型支持 .woff2。使用 IIS 10,您无需更改 web.config 中的任何内容。 &lt;remove&gt; 标签在这里有什么作用? IIS 参考 (iis.net/configreference) 中似乎没有记录它 @Pathogen 如果 mimeMap 已经存在,有时 IIS 会抛出错误。在添加之前删除它可以修复该错误。【参考方案4】:

http://dev.w3.org/webfonts/WOFF2/spec/#IMT

好像w3c改成font/woff2

我看到有一些关于正确的 mime 类型的讨论。 在我们阅读的链接中:

本文档定义了一个*** MIME类型“字体”...

...官方定义的 IANA 子类型,例如“application/font-woff”...

W3C WebFonts WG 的成员认为使用“应用程序”***类型并不理想。

以后

6.5. WOFF 2.0

    Type name:

        font
    Subtype name:

        woff2

所以来自 W3C 的提议与 IANA 不同。

我们可以看到它也不同于 woff 类型: http://dev.w3.org/webfonts/WOFF/spec/#IMT 我们在哪里读到:

Type name:

    application
Subtype name:

    font-woff

这是

application/font-woff

http://www.w3.org/TR/WOFF/#appendix-b

【讨论】:

我在该页面上没有看到任何表明它已更改为 font/woff2 的内容,请问您可以调整一下吗? 也许我误会了。我的意思是附录 A,'6.5。 WOFF 2.0' 无法想象这被否决了。规范说得很清楚。类型是字体,子类型是 woff2,即字体/woff2。这也是 Google 字体本身使用的。 我最初对此表示赞同,但我认为我可以从中获得一篇博文。就目前而言,这篇文章符合 WOFF2 规范,但这仍然是一个工作草案,还没有移至推荐状态。这意味着 woff2 在技术上没有 mime,因为 font/woff2 在获得批准之前是无效的,但是规范文档已经撤销了对 application/font-woff2 的认可,让我们没有正式的认可。因此我认为此时我将使用application/font-woff2 @rtpHarry 我之前对这个答案和你的评论都投了赞成票。截至 2017 年 2 月,W3C 发布了 Standards Track RFC 8081,使 font/woff2 成为官方媒体类型。见***.com/a/43321601/1640661

以上是关于.woff2 字体的正确 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章

解决Web部署 svg/woff/woff2字体 404错误

解决IIS Web部署 svg/woff/woff2字体 404错误

解决 svg/woff/woff2字体 错误

WinServer-IIS-svg/woff/woff2字体 404错误

解决Web部署 svg/woff/woff2字体 404错误

在IIS服务器上部署svg/woff/woff2字体