字体的正确MIME类型


249

在网上搜索时,我发现了很多关于字体的正确MIME类型的不同建议,但是我还没有尝试过使我摆脱Chrome警告的任何MIME类型,例如:

资源被解释为字体,但以MIME类型font / otf传输

字体是OTF。

到目前为止,我已经尝试了以下MIME类型

  • 字体/ otf
  • 应用程序/字体-otf
  • 应用程序/字体
  • 应用程序/ OTF
  • 应用/八位字节流
  • 应用程序/ x-font-otf
  • application / x-font-TrueType(我知道它不是truetype,但是有一个消息来源引用了OTF)

3
您实际上如何为此编写标题?我不太确定该怎么办。为您能提供的任何帮助加油。
乔什·史密斯

1
@Josh:如果您通过代码提供字体,则要将“ content-type”标头设置为“ font / opentype”(如果您在我的问题中使用的是OTF),但是如果您只是指向物理字体文件,可能更容易在Web服务器中设置MIME类型。我不知道您使用的是哪种网络服务器,所以Google会搜索您的服务器+ MIME类型,或者在SO上开始一个新的问题来描述您的问题。
David Hedlund 2010年

2
标题错误。应该是Chrome中的“我如何使“将资源解释为字体”静音”警告
djsadinoff 2011年

2
@djs:授予!您知道,如果我能找到一种让Chrome记住我想让我的控制台列出日志消息和错误而不是警告的方法,那么很有可能我永远不会问这个问题。
David Hedlund

Chrome浏览器警告我们,它正在按照要求执行操作。如果您将@ font-face与.BMP文件一起使用,当它成功找出要用于字形的位图时,我宁愿看到一条警告!
卡迪夫太空人

Answers:


137

尝试使用“字体/ opentype”。


51
但是,这是非法的模仿类型:正式的模仿类型中没有“ font /”。更好的mime类型是“ application / x-font-opentype”或“ application / octet-stream”。第一个基本上是“使用此名称的未注册
模仿

它在Chrome 16上对我不起作用。起作用的一个是:application / vnd.oasis.opendocument.formula-template。
jayarjo 2012年

16
看起来当前的赢家是:application / x-font-woff-希望对您有所帮助!
狂奔

7
@忙碌地将其更改为application / font-woff,参见w3.org/TR/WOFF/#appendix-b
Holger


209

在Apache和IIS服务器上,可以设置多种字体格式的MIME类型。传统上,我在以下方面很幸运

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工程任务组(Internet Engineering Task Force)维护的有关此处的有关多用途Internet邮件扩展(MIME类型)的初始文档:http : //tools.ietf.org/html/rfc2045#section-5 ...具体说:

预计通常可以通过创建这些初始类型的新子类型来完成对更多支持类型的添加。将来,更多的顶级类型可能仅通过对该标准的标准跟踪扩展来定义。如果出于任何原因要使用其他顶级类型,则必须给它一个以“ X-”开头的名称,以指示其非标准状态,并避免与将来的正式名称冲突。

过去,随着时间的流逝,随着创建和接受标准而添加了其他MIME类型,因此,我们看到了供应商特定的MIME类型的示例,例如vnd.ms-fontobject等。

UPDATE 2013年8月16日: WOFF是正式的IANA于2013年1月3日,注册Webkit的已更新2013年3月5日和在其最新版本采购此更新的浏览器将开始发行有关服务器的MIME类型的警告与老x-font-woff声明。由于警告很烦人,我建议立即切换到批准的MIME类型。在理想的世界中,警告会及时解决。

2015年2月26日更新: WOFF2现在已列入W3C编辑器草案中,并带有拟议的mime类型。遵循更新进度时间表,应在明年(可能在2016年底之前)将其提交给IANA。和SFNT一样,Google Web Fonts的主干表引用中使用的可伸缩/样条容器字体格式及其sfntly java库,已经在IANA中注册为mime类型,可以根据个人需要添加到此列表中。

2017年10月4日更新:我们可以在这里跟踪WOFF2格式的进展,大多数现代浏览器都成功支持该格式。同样,我们可以遵循IETF的“字体”顶级媒体类型注释(RFC)跟踪器文档,以获取最新的建议字体类型集以供批准。


对于那些希望以适当的顺序将字体嵌入CSS的用户,请访问本文。但是再次,我很幸运地获得了以下命令:

@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

好的,谢谢。我收到了有关.woff的错误消息,并将其修复在我的.htaccess文件中。我用过AddType application/x-font-woff
丹尼·英格兰

application / x-font-opentype和application / x-font-ttf非常适合Linux Gnome Shell
Schmoove

1
ttf,otf和woff2已过时。请参阅stackoverflow.com/a/20723357/1356047
乔纳斯·柏林

126

忽略镀铬警告。OTF字体没有标准的MIME类型。

font / opentype可能会使警告消失,但这并没有使它成为“正确”的事情。

可以说,最好用“ application / x-opentype”来弥补,因为至少“ application”是注册的内容类型,而“ font”不是。

更新:OTF仍然是一个问题,但是WOFF 在2013年1月增加了IANA MIME类型的应用程序/字体-woff

更新2:OTF 在2013年3月增加了MIME类型: application / font-sfnt。此类型也适用于.ttf


2
有趣。您是否有任何引用来支持这一点?
卡扎伊2011年

18
没有mime类型:“注意:因为没有为TrueType,OpenType和WOFF字体定义MIME类型,所以不考虑指定文件的MIME类型。” developer.mozilla.org/en/css/@font-face 。不要编造新的顶级mime类型,请改用x-:tools.ietf.org/html/rfc2045#section-5 – djsadinoff 3分钟前编辑
djsadinoff 2011年

@djsadinoff,我相信IANA会取代IETF。IETF 向IANA提交了草稿,并且由于IANA报告woff是MIME类型,因此IETF在其有限列表中被覆盖。
Mike Kormendy 2014年

@MikeKormendy,我不理解您的评论,但您可能一直在指我的答案的先前版本,该版本仅解决WOFF问题。我已经恢复了原来的
djsadinoff

@djsadinoff奇怪的是,堆栈交换说您刚刚在“ 3分钟前”评论过。
Mike Kormendy 2014年

84

自2017年2月以来,RFC 8081将顶级font媒体类型下的字体的所有MIME类型分组。我原来的帖子中的旧MIME类型现在列为已弃用。

IANA列出的字体类型现在为:

其他非标准字体格式保持不变:


[过时的原始帖子]

由于Web上对于Web字体的MIME类型仍然存在很多困惑,我想我会给出一个当前答案,包括有效日期,并支持指向IANA和W3C的链接。

这是Web字体的官方MIME类型:

请注意,有一项动作可以将以上所有内容更改为MIME类型font/XXX,这一点得到了W3C在其WOFF v2提案中的支持。Internet工程任务组(IETF)正在“顶级类型”字体下对此进行跟踪,并于2017年2月批准了RFC状态(请参阅RFC 8081),因此可能全部更改了!

在谈到Web服务器时,值得一提的是HTTP响应可以gzip(或以其他方式压缩)上述所有字体格式(.woff&和除外),.woff2而这些字体已经被大量压缩。

我在(Fantom)BedSheet的Web字体的MIME类型中说了更多。


2
在SO上会自动检测到重复的帖子,因此您可能会删除两个帖子。如果您有有用的信息要发布,那么您应该考虑提出和回答自己的问题。
Borodin

阿克!我被抓了!是的,我很懒。:/我已经更新了另一个答案,所以它与相关问题更相关。我相信这仍然很适合此页面。
史蒂夫·艾农

有大量可疑的答案需要评估。我会尝试对我标记的内容发表评论,但最常见的是您的答案就会消失。请尽量保持话题性。
Borodin

@SteveEynon:基于Presto的Opera不会渲染带有图像mime类型的ꜱᴠɢ字体。
user2284570

12

作为计算中两个难题之一的特定实例,很有趣的是,自从最初发布此问题以来,该问题的答案已发生了怎样的变化。值得庆幸的是,已经使混乱变得混乱的力量:


在今年2月(2017年),W3C发布了Standards Track RFC 8081:“字体”顶级媒体类型,极大地简化了字体文件的适当媒体类型:

该备忘录用于注册和记录“字体”顶级媒体类型,在该媒体类型下可以注册字体表示格式的子类型。该文档还可以用作一组预期子类型的注册申请,这些子类型代表一些已经使用的现有子类型,并且当前通过单独的注册在“应用”树下进行了注册。

这是一个易于阅读的文档,它描述了历史背景(缺乏 “字体格式注册”),这引起了媒体类型和子类型的混淆。随着(相对)最近可下载Web字体的流行,W3C认识到需要“直观的顶级字体类型”。他们想出的是…… font

因此,IANA自此更新了其 使用font其当前识别的媒体类型及其所有子类型来媒体类型正式列表

collection  font/collection
otf     font/otf
sfnt    font/sfnt
ttf     font/ttf
woff    font/woff
woff2   font/woff2

希望这是此问题所需的最后答案。


2
安东尼,这是除了我的帖子之外的又一重要资源。感谢您在这里分享!
Mike Kormendy


6

有关在Debian Linux和OS X Leopard和Snow Leopard上测试过的关于Apache 2.2 VirtualHosting和mod_mime的FWIW:

如果您具有VirtualHost配置,则至少要在配置的底部,通过AddType指令添加类型,如下所示:

....
   AddType font/opentype .otf
   AddType font/ttf .ttf
</VirtualHost>

经过针对Chrome不稳定/中继和Safari WebKit Nightly的测试,消除了ttf和otf字体类型的哑剧八位字节流警告。

注意:.htaccess在处理VirtualHosting时无效。如果要为多个站点进行开发,则将使用VirtualHosting开发,并且每个配置都需要这些AddType添加项。


6

我只是在IANA官方名单上做了一些研究。我认为此处给出的答案“字体/ xxx”是错误的,因为MIME标准中没有“字体”类型。

根据RFC和IANA,这似乎是截至2013年5月的当前状态:

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

  • svg为“ image / svg + xml”
  • woff作为“应用程序/字体-woff”
  • 作为“ application / vnd.ms-fontobject”

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

  • ttf为“ application / x-font-ttf”
  • otf作为“ application / x-font-opentype”

application / font-woff似乎是新的,可能自2013年1月起才正式发布。因此,短期内“ application / x-font-woff”可能更安全/兼容。


5

从2013年3月开始,IANA.ORG建议使用.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)

查看更多


2

在电子书空间中可以使用以下内容:

application/vnd.ms-opentype

我可以想象对于网络来说也是一样。


2

woff的application / font-woff:http://www.iana.org/assignments/media-types/application/font-woff



1

也许这会帮助某人。我看到IIS 7 .ttf上已经是一种已知的mime类型。它配置为:

application/octet-stream

所以,我只是说,对于所有的CSS字体类型(.oet.svg.ttf.woff)和IIS服务开始他们。Chrome开发人员工具也不会抱怨重新解释类型。

干杯,迈克尔


1
application/octet-stream较少是“已知类型”,而更多是“通用字节组”。:)浏览器抱怨这种类型的服务,因为它不包含有关如何解释这些内容的信息。
cHao 2013年

-1

从Chrome中消除此警告的一种方法是更新Chrome,然后确保您的哑剧类型为以下类型之一:

 "font/ttf"
 "font/opentype"
 "application/font-woff"
 "application/x-font-type1"
 "application/x-font-ttf"
 "application/x-truetype-font"

此列表是根据在webkit.org的Bug 111418中找到的修补程序得出的。

相同的补丁将消息从“警告”降级为“日志”,因此仅将Chrome升级到2013年3月之后的任何版本都将摆脱黄色三角形。

由于问题是关于取消Chrome浏览器警告,并且人们可能出于任何原因都坚持使用旧的Chrome版本,因此我认为值得补充。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.