.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/ttf
、font/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 中,小心删除任何以前定义的扩展条目,以防它们在服务器的其他地方定义。如果您遇到它,这会给您非常令人困惑的错误! <remove fileExtension=".woff2" />
然后定义如上:)
请注意,建议并且最有可能被接受的是 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 中的任何内容。<remove>
标签在这里有什么作用? 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错误
WinServer-IIS-svg/woff/woff2字体 404错误