在网上搜索时,我发现了很多关于字体的正确 MIME 类型的不同建议,但我还没有尝试任何能让我摆脱 Chrome 警告的 MIME 类型,如下所示:
资源解释为字体但使用 MIME 类型 font/otf 传输
字体是 OTF。
到目前为止,我已经尝试过以下 MIME 类型
字体/otf
应用程序/字体-otf
应用程序/字体
应用程序/otf
应用程序/八位字节流
应用程序/x-font-otf
application/x-font-TrueType (我知道它不是 truetype,但有一个消息来源为 OTF 引用了这个)
在 Apache 和 IIS 服务器上,可以为多种字体格式设置 MIME 类型。 I've traditionally had luck 具有以下内容:
svg as "image/svg+xml" (W3C: August 2011)
ttf as "application/x-font-ttf" (IANA: March 2013)
or "application/x-font-truetype"
otf as "application/x-font-opentype" (IANA: March 2013)
woff as "application/font-woff" (IANA: January 2013)
woff2 as "application/font-woff2" (W3C W./E.Draft: May 2014/March 2016)
eot as "application/vnd.ms-fontobject" (IANA: December 2005)
sfnt as "application/font-sfnt" (IANA: March 2013)
根据在此处维护有关多用途 Internet 邮件扩展(MIME 类型)的初始文档的 Internet 工程任务组:https://www.rfc-editor.org/rfc/rfc2045#section-5 ...它详细说明:
“预计对更大的支持类型集的添加通常可以通过创建这些初始类型的新子类型来完成。未来,更多的顶级类型可能仅通过对该标准的标准跟踪扩展来定义. 如果出于任何原因要使用其他顶级类型,则必须为其命名以“X-”开头,以表明其非标准状态,并避免与未来的正式名称发生潜在冲突。
事实上,随着时间的推移,随着标准的创建和接受,额外的 MIME 类型被添加,因此我们看到了供应商特定 MIME 类型的示例,例如 vnd.ms-fontobject 等。
2013 年 8 月 16 日更新: WOFF 是 formally registered at IANA on January 3, 2013 和 Webkit has been updated on March 5, 2013,并且在其最新版本中获取此更新的浏览器将开始发出有关具有旧 x-font-woff 的服务器 MIME 类型的警告宣言。由于警告只是烦人,我建议立即切换到批准的 MIME 类型。在理想的世界中,警告会及时解决。
2015 年 2 月 26 日更新: WOFF2 现在包含在 W3C 编辑草案中,并带有建议的 mime 类型。按照最近的进度时间表,它可能会在明年(可能在 2016 年底)提交给 IANA。与 SFNT 一样,Google Web Fonts with their sfntly java library 的主干表参考中使用的可缩放/样条容器字体格式已经是 registered as a mime type with IANA,也可以根据个人需要添加到此列表中。
2017 年 10 月 4 日更新:我们可以跟踪 WOFF2 格式的进展here,大多数现代浏览器都成功支持该格式。此外,我们可以按照 IETF 的“字体”顶级媒体类型征求意见 (RFC) tracker 和 document 就最新的一组建议字体类型进行审批。
对于那些希望在 CSS 中以正确顺序嵌入字体的人,请访问 this article。但是,我再次幸运地获得了以下订单:
@font-face {
font-family: 'my-web-font';
src: url('webfont.eot');
src: url('webfont.eot?#iefix') format('embedded-opentype'),
url('webfont.woff2') format('woff2'),
url('webfont.woff') format('woff'),
url('webfont.ttf') format('truetype'),
url('webfont.svg#webfont') format('svg');
font-weight: normal;
font-style: normal;
}
对于 Subversion 自动属性,这些可以列为:
# Font formats
svg = svn:mime-type=image/svg+xml
ttf = svn:mime-type=application/x-font-ttf
otf = svn:mime-type=application/x-font-opentype
woff = svn:mime-type=application/font-woff
woff2 = svn:mime-type=application/font-woff2
eot = svn:mime-type=application/vnd.ms-fontobject
sfnt = svn:mime-type=application/font-sfnt
尝试使用“字体/opentype”。
忽略镀铬警告。 OTF 字体没有标准的 MIME 类型。
font/opentype 可能会使警告静音,但这并不能使它成为“正确”的做法。
可以说,你最好编一个,例如使用“application/x-opentype”,因为至少“application”是注册的内容类型,而“font”不是。
更新:OTF 仍然是一个问题,但 WOFF 在 2013 年 1 月增加了 IANA MIME 类型的 application/font-woff。
更新 2:OTF 增加了一种 MIME 类型:application/font-sfnt 2013 年 3 月。这种类型也适用于 .ttf
自 2017 年 2 月起,RFC 8081 将字体的所有 MIME 类型分组到顶级 font
媒体类型下。我原始帖子中较旧的 MIME 类型现在被列为已弃用。
Font types as listed by IANA 现在是:
.otf -> 字体/otf
.sfnt -> 字体/sfnt
.ttf -> 字体/ttf
.woff -> 字体/woff
.woff2 -> 字体/woff2
其他非标准字体格式保持不变:
.eot -> application/vnd.ms-fontobject(从 2005 年 12 月开始)
.svg -> image/svg+xml(从 2011 年 8 月开始)
[过时的原始帖子]
由于网络上关于网络字体的 MIME 类型仍然存在很多混淆,我想我会给出一个最新的答案,包括生效日期,以及指向 IANA 和 W3C 的支持链接。
以下是 Web 字体的官方 MIME 类型:
.eot -> application/vnd.ms-fontobject(从 2005 年 12 月开始)
.otf -> application/font-sfnt(从 2013 年 3 月开始)
.svg -> image/svg+xml(从 2011 年 8 月开始)
.ttf -> application/font-sfnt(从 2013 年 3 月开始)
.woff -> application/font-woff(从 2013 年 1 月开始)
.woff2 -> font/woff2(由 W3C 于 2016 年 3 月提出)
请注意,W3C 在其 WOFF v2 提案中支持将上述所有内容更改为 font/XXX
的 MIME 类型。互联网工程任务组 (IETF) 在 The font Top Level Type 下对此进行了跟踪,并于 2017 年 2 月获得了 RFC 状态的批准(请参阅 RFC 8081),因此它可能会发生变化!
在关于 Web 服务器的主题中,值得一提的是,HTTP 响应可能会gzip
(或以其他方式压缩)除 .woff
& 之外的所有上述字体格式。 .woff2
已经被严重压缩。
我在MIME Types for Web Fonts with (Fantom) BedSheet中说更多。
作为计算领域 two hard things 之一的特定实例,有趣的是,自该问题最初发布以来,该问题的答案发生了怎样的变化。值得庆幸的是,那些为混乱带来秩序的力量:
今年 2 月(2017 年),W3C 发布了Standards TrackRFC 8081: The "font" Top-Level Media Type,它极大地简化了字体文件的适当媒体类型:
该备忘录用于注册和记录“字体”顶级媒体类型,在该媒体类型下可以注册字体表示格式的子类型。该文档还用作一组预期子类型的注册应用程序,这些子类型代表一些已经在使用的现有子类型,并且当前通过它们的单独注册在“应用程序”树下注册。
这是一个可读性很强的文档,它描述了导致媒体类型和子类型混淆的历史背景(“字体格式的注册”)。随着最近(相对)可下载网络字体的普及,W3C 认识到需要一种“直观的顶级字体类型”。他们想出的是……font
。
因此,IANA 已将其 official list of Media types 更新为 font
媒体类型及其当前识别的所有子类型:
collection font/collection
otf font/otf
sfnt font/sfnt
ttf font/ttf
woff font/woff
woff2 font/woff2
希望这是这个问题需要的最后一个答案。
这是NGINX解决方案
文件
/usr/local/nginx/conf/mime.types
添加
font/ttf ttf;
font/opentype otf;
application/font-woff woff2;
application/font-woff woff;
application/vnd.ms-fontobject eot;
消除
application/octet-stream eot;
感谢迈克富尔彻
http://drawingablank.me/blog/font-mime-types-in-nginx.html
FWIW 关于 Apache 2.2 VirtualHosting 和 mod_mime 在 Debian Linux 和 OS X Leopard 和 Snow Leopard 上测试:
如果您有一个 VirtualHost 配置,您将希望通过 AddType 指令添加类型,至少在配置的底部如下所示:
....
AddType font/opentype .otf
AddType font/ttf .ttf
</VirtualHost>
针对 Chrome Unstable/Trunk 和 Safari WebKit Nightly 进行了测试,消除了 ttf 和 otf 字体类型的 mime octet-stream 警告。
注意:.htaccess 在处理 VirtualHosting 时效果为零。如果您正在为多个站点进行开发,您将使用 VirtualHosting 开发,并且每个配置都需要添加这些 AddType。
我刚刚对 IANA official list 做了一些研究。我相信这里给出的答案 'font/xxx' 是不正确的,因为 MIME 标准中没有 'font' 类型。
根据 RFC 和 IANA,这似乎是截至 2013 年 5 月的当前状态:
这三个是官方的,由 IANA 分配:
svg 为“图像/svg+xml”
woff 作为“应用程序/字体-woff”
eot 作为“应用程序/vnd.ms-fontobject”
这些不是官方/分配的,因此必须使用“x-”语法:
ttf 作为“应用程序/x-font-ttf”
otf 作为“应用程序/x-font-opentype”
自 2013 年 1 月以来,application/font-woff 似乎是新的并且可能只是官方的。因此“application/x-font-woff”在短期内可能更安全/更兼容。
从 2013 年 3 月开始IANA.ORG recommends .otf:
application/font-sfnt
其他字体:
.eot -> application/vnd.ms-fontobject (as from December 2005)
.otf -> application/font-sfnt (as from March 2013)
.svg -> image/svg+xml (as from August 2011)
.ttf -> application/font-sfnt (as from March 2013)
.woff -> application/font-woff (as from January 2013)
请参阅more...
以下内容可用于电子书空间:
application/vnd.ms-opentype
我想这对于网络是一样的。
也许这会对某人有所帮助。我在 IIS 7 上看到 .ttf
已经是一种已知的 mime 类型。它配置为:
application/octet-stream
所以我只是为所有 CSS 字体类型(.oet
、.svg
、.ttf
、.woff
)添加了它,并且 IIS 开始为它们提供服务。 Chrome 开发工具也不会抱怨重新解释类型。
干杯,迈克尔
application/octet-stream
与其说是“已知类型”,不如说是“通用字节串”。 :) 浏览器抱怨服务于这种类型,因为它不包含有关如何解释这些内容的信息。
从 Chrome 中消除此警告的一种方法是更新 Chrome,然后确保您的 mime 类型是以下之一:
"font/ttf"
"font/opentype"
"application/font-woff"
"application/x-font-type1"
"application/x-font-ttf"
"application/x-truetype-font"
此列表根据在 Bug 111418 at webkit.org 找到的补丁。
同一个补丁将消息从“警告”降级为“日志”,因此只需将 Chrome 升级到 2013 年 3 月后的任何版本即可摆脱黄色三角形。
由于问题是关于消除 Chrome 警告,而且人们可能出于任何原因坚持使用旧的 Chrome 版本,我认为这是值得添加的。
AddType application/x-font-woff