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

306
今天我更新了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类型是什么?


1
以下是在Apache中缓存woff2文件的方法:<IfModule mod_mime.c> AddType font/woff2 woff2和<IfModule mod_expires.c> ExpiresActive On ExpiresByType font/woff2 "access plus 1 month"。 (省略了结束标记和换行符。) - Chloe
4个回答

479
在IIS中,您可以通过将以下内容添加到项目的web.config来声明WOFF2字体文件的MIME类型:
<system.webServer>
  <staticContent>
    <remove fileExtension=".woff2" />
    <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
  </staticContent>
</system.webServer>

更新:根据最新的W3C编辑草案 WOFF2规范,mime类型可能会发生变化。请参见附录A:互联网媒体类型注册6.5节WOFF 2.0,其中指出最新的建议格式为font/woff2


6
IIS 10现在支持.woff2 MIME类型。使用IIS 10,您无需更改web.config中的任何内容。 - Kevin
7
这里的 <remove> 标记有什么作用?它似乎没有在 IIS 参考文档 (https://www.iis.net/configreference) 中记录。 - Pathogen
19
有时候当已经存在mimeMap时,IIS会报错。在添加之前先移除它可以解决这个错误。 - Allan
附录链接损坏了 - 请更新它 :) - PussInBoots

225

font/woff2

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

font/woff2 woff2;


旧回答

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

而且,如果您参考规范(http://dev.w3.org/webfonts/WOFF2/spec/),您会发现正在讨论font/woff2。我认为所有字体的最终MIME类型最终将是更合乎逻辑的font/*font/ttffont/woff2等)...

N.B. WOFF2仍处于“工作草案”状态 - 尚未正式采用。


41
已更新。规范非常清晰,Type 是字体,Subtype 是 woff2,这使它是字体/woff2。这也是 Google Fonts 自身使用的。 - Raivo Laanemets
我仍然在规范中看不到任何明确的东西。尽管他们谈论想要引入一个font/*顶级类型。为了提供完整的信息,我会将其添加到我的答案中。 - atwright147
@atwright147 MIME类型在附录A中有涉及,对于Woff2格式它在附录A的第6.5节中。 - Richard
3
更新于2016年3月:它现在是候选推荐,并且字体/woff2是MIME类型。https://www.w3.org/TR/WOFF2/#IMT - Chris F Carroll
当我对woff2文件进行gzip压缩时,文件会变得更大 - 而我的CSS和JS文件则会被大幅缩小 - 也许它已经被压缩了? - danday74
@danday74 是的,woff和woff2(以及EOT)已经被大量压缩(不像TTF和OTF),不应该进行任何额外的服务器端压缩。 woff2使用一种不同的压缩算法,据说具有更好的压缩比率。 - MrWhite

41

Apache

在 Apache 中,你可以按照这个链接所述,在 .htaccess 文件中添加 woff2 MIME 类型。

AddType  application/font-woff2  .woff2

IIS

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

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

application/x-font-woff2 是什么意思? - Nerdroid
1
嘿@Moes :) 实际上,application/x-font-woff2是在woff2非常新的时候使用的旧类型。 W3C规范现在建议使用application/font-woff2,因为它得到了广泛支持。如果您需要向后兼容,请随意包括x-font-woff2 - Fizzix
在IIS中,要小心删除以前在服务器的其他地方定义的扩展条目。如果遇到这种情况,将会给你带来非常令人困惑的错误! <remove fileExtension=".woff2" /> 然后按照上述方式进行定义 :) - jocull
请注意,建议使用并且最有可能被接受的是字体/woff2。 - Syakur Rahman
1
W3C推荐的WOFF文件格式2.0现在建议使用font/woff2作为MIME类型,但IANA官方媒体类型列表尚未包括WOFF2。 - Anthony Geoghegan

17

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

看起来W3C已将其更改为font/woff2

我注意到有一些关于适当MIME类型的讨论。 在链接中,我们可以阅读到:

本文档定义了一个顶层MIME类型“font”...

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

W3C WebFonts WG的成员认为使用“application”顶级类型并不理想。

稍后

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


1
我在那个页面上没有看到任何提示表明它已经被更改为 font/woff2,您可以澄清一下吗? - atwright147
1
很难想象这会被downvote。规范非常明确。类型是字体(font),子类型(subtype)是woff2,这使它成为字体/woff2。这也是Google Fonts自身使用的方式。 - Raivo Laanemets
同意,不明白为什么会被踩。虽然自提问/回答以来规范文档已经更新。 - atwright147
2
我最初点了赞并想能够从中发布一篇博客文章。但目前这篇文章与 WOFF2 规范相符,但该规范仍处于“工作草案”状态,尚未被转为“推荐状态”。这意味着在woff2得到批准之前,font/woff2是无效的,因此它实际上没有一个mime类型,而规范文件已经撤销了对 application/font-woff2 的认可,让我们没有官方的标准。因此,我认为此时我将使用application/font-woff2 - rtpHarry
2
@rtpHarry 我之前已经点赞了这个答案和你的评论。截至2017年2月,W3C发布了标准轨迹RFC 8081,将font/woff2作为官方媒体类型。请参见https://dev59.com/6XE85IYBdhLWcg3wPBB8#43321601。 - Anthony Geoghegan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接