什么是字体文件的正确MIME类型?

时间:2012-09-30 10:03:31

标签: fonts mime-types mime true-type-fonts iana

我无法找到指示任何和/或每种类型文件格式的正确MIME类型的规范来源。我发现的所有来源似乎都相互矛盾和/或IANA MIME type RFCs and their associated list

虽然我对.otf(OpenType)和.ttf(TrueType)文件类型特别感兴趣,但理想的答案是提供用于确定MIME类型的规范资源广泛的字体文件格式,例如the Font file section of the Wikipedia page: List of file formats上列出的格式。但是,鉴于我找不到这样的资源,似乎完全有可能没有这样的规范参考。

我想进一步澄清我不是在寻找工作MIME类型,而是在寻找规范MIME类型。所选的Proper MIME type for fonts答案表明font/opentype可用于.otf文件。但是,作为最高投票答案(由@djsadinoff解释),font不是有效的IANA内容类型,而且不能是正确的 MIME类型。

5 个答案:

答案 0 :(得分:7)

对于您的问题,您可能不知道有关字体类型的事实。使用此链接Font MIME Types

roc reports on the Web Fonts战斗的简短版本是非IE浏览器是否应该支持字体的DRM格式。 (也许他们是否可以开箱即用地支持TrueType和OpenType。)我真的认为我们不应该支持字体的DRM格式。它似乎会在网络上树立一个不好的先例,如果他们不执行正确的事情,可能会让供应商承担责任,并使作者的事情变得复杂。

W3C创建了draft charter for an EOT Working Group; EOT(Embedded OpenType)是微软倡导的DRM格式。我不知道EOT如何引领网络发挥其全部潜力,但我们会看到它的结果。

除格式问题外,可能值得考虑为字体引入MIME类型。 (如果此时实现为时已晚,可能为时已晚。)好处是,任意文件(例如文本/ html文件)不会被解释为字体。缺点是它会让作者稍微努力,因为他们必须确保他们正确地标记它。 (在Web图像(SVG除外)和JavaScript上没有检查资源是否具有正确的MIME类型。对于图像,浏览器会嗅探图像签名,并且只是执行从脚本元素加载的内容(确实不太好) 。)

鉴于支持@ font-face将很快在Opera,Safari和Firefox中发布,这需要尽快决定。可能在通过IETF标准化相关MIME类型之前。另一个复杂因素是OpenType和TrueType可以携带otf和ttf作为扩展,操作系统处理它很好。虽然两个MIME类型都可能有效,但XHTML和SVG都可以使用text / xml。

答案 1 :(得分:4)

您的答案位于specs

  

4.5.1。 Octet-Stream子类型

     

“octet-stream”子类型用于指示正​​文包含   任意二进制数据。

同样在同一文件的第4页

(5)   application -- some other kind of data, typically
      either uninterpreted binary data or information to be
      processed by an application.  The subtype "octet-
      stream" is to be used in the case of uninterpreted
      binary data, in which case the simplest recommended
      action

我仍然不确定这个文件是否是二进制数据,所以我使用linux file()命令检查了mime-type。

    $ file --mime-type 
    Days-webfont.ttf: application/octet-stream

你去的是一个非常清晰的八分音符!

我仍有一些怀疑,所以我想要更多的资源。浏览器如何解释这个? Here is what Mozilla has to say...

  

注意:因为TrueType,OpenType没有定义的MIME类型,   和Web Open File Format(WOFF)字体,文件的MIME类型   指定不予考虑。

有趣的Mozilla说.ttf .otf或.woff 没有定义的MIME类型

Mozilla也有一些资源可以帮助您

determine the correct MIME type of your content

  

如何确定内容的正确MIME类型

     

您可以采取几个步骤来确定正确的步骤   要用于内容的MIME类型值。

     

如果您的内容是使用供应商的软件应用程序创建的,请阅读供应商的>文档,了解应针对不同媒体类型报告哪些MIME类型。

     

查看IANA | MIME媒体类型注册表,包含所有已注册的MIME类型。

     

如果使用Netscape Gecko中的插件显示媒体类型,请安装插件>然后查看帮助 - >关于插件菜单以查看与>相关联的MIME类型。媒体类型。

     

在FILExt或文件扩展名引用中搜索文件扩展名,以查看与该扩展程序相关联的MIME>类型。

我不建议你去FILExt页面或文件扩展名引用他们不做任何文件()在bash中不能做的事情。

通过文档搜索,我发现了几乎符合条件的各种应用程序子类型; vnd.ms-fontobject,但这仅适用于.eot个文件,font-tdpfr,但这仅适用于.pfr个文件。

因此看来规格未指定

我确信。 所以我猜你的规范资源会将file()的输出与规格中的内容进行比较。

答案 2 :(得分:2)

正如其中一条评论所述:

  

更好的mime类型是“application / x-font-opentype”或“application / octet-stream”。第一个基本上是“具有此名称的未注册的mimetype”,第二个只是“二进制数据”

其中任何一个在技术上都是正确的,因为第一个是非官方类型的可接受的MIME类型格式,第二个是没有更具体的官方MIME类型的二进制数据的通用MIME类型。我对RFC2046验证了这一说法,但它似乎有所成效。在一个人变为官方之前,最正确的方法是使用可接受的非官方类型格式,或使用泛型类型。

答案 3 :(得分:1)

目前,OpenType和TrueType似乎没有任何特定的“正确”MIME类型。

Web Open字体格式 - 可以用作两者的包装 - 但是,application/font-woff(由W3C注册)。 Embedded OpenType格式 - OpenType的紧凑版本 - 使用application/vnd.ms-fontobject(由Microsoft注册)。

如果您想回到过去,可以使用application/font-tdpfr获取TrueDoc便携式字体资源。这是Netscape Navigator 4本身支持的。☺

答案 4 :(得分:1)

缺少字体文件的特定媒体类型导致了 smartcaveman 上面描述的混乱,不断变化和矛盾的混乱。早在2012年,这个问题就无法真正得到解答,因为除了IANA清单之外,没有这样的规范参考确实存在。值得庆幸的是,这种情况已经得到纠正......

今年2月(2017年),W3C发布了 Standards Track RFC 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