我无法找到指示任何和/或每种类型文件格式的正确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类型。
答案 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类型。
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