7

我一直无法找到一个规范的来源,它表明任何和/或每种文件格式的正确 MIME 类型。我发现的所有来源似乎相互矛盾和/或IANA MIME 类型 RFC 及其相关列表

虽然我对.otf(OpenType) 和.ttf(TrueType) 文件类型特别感兴趣,但理想的答案将提供一个规范资源,用于确定各种字体文件格式的 MIME 类型,例如维基百科字体文件部分中列出的那些页面:文件格式列表。但是,鉴于我找不到这样的资源,似乎完全有可能不存在这样的规范参考。

我想进一步澄清一下,我不是在寻找有效的 MIME 类型,而是寻找规范的 MIME 类型。对可用于文件的字体状态的正确 MIME 类型的选定答案 。但是,正如投票率最高的答案(@djsadinoff)所解释的那样,它不是有效的 IANA 内容类型,也不是正确的MIME 类型。font/opentype.otffont

4

5 回答 5

7

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

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

W3C为 EOT 工作组制定了章程草案;EOT(嵌入式 OpenType)是微软提倡的 DRM 格式。我不知道 EOT 是如何引导 Web 发挥其全部潜力的,但我们会看到它的结果。

除了格式问题,可能值得考虑为字体引入 MIME 类型。(如果这对于此时的实现来说为时已晚,则可能为时已晚。)好处是任意文件(例如,文本/html 文件)不会被解释为字体。不利的一面是,这使作者的工作变得更加困难,因为他们必须确保正确标记它。(在 Web 图像(SVG 除外)和 JavaScript 上,不会检查资源是否具有正确的 MIME 类型。对于图像,浏览器会嗅探图像签名并简单地执行从脚本元素加载的内容(确实不太好) .)

鉴于支持 @font-face 将很快在 Opera、Safari 和 Firefox 中发布,因此需要尽快做出决定。可能在相关 MIME 类型通过 IETF 标准化之前。另一个复杂之处是 OpenType 和 TrueType 可以携带 otf 和 ttf 作为扩展名,操作系统可以很好地处理它。不过,两者都使用单一的 MIME 类型可能会起作用,就像 XHTML 和 SVG 都可以使用 text/xml 一样。

于 2012-10-09T12:36:46.063 回答
4

您的答案在规格中。

4.5.1。八位流子类型

“八位字节流”子类型用于指示主体包含任意二进制数据。

也在同一文件的第 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 类型。

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

你去吧,它是一个非常清晰的八位字节流!

不过,我仍然有些怀疑,所以我想要更多资源。浏览器将如何解释这一点?这是Mozilla不得不说的……

注意:由于没有为 TrueType、OpenType 和 Web 开放文件格式 (WOFF) 字体定义 MIME 类型,因此不考虑指定文件的 MIME 类型。

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

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

确定内容的正确 MIME 类型

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

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

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

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

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

在 FILExt 或文件扩展名参考中搜索文件扩展名,以查看哪些 MIME > 类型与该扩展名相关联。

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

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

所以看起来规格没有指定

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

于 2012-10-03T00:37:04.940 回答
4
于 2017-04-10T11:33:51.200 回答
2

正如其中一条评论所说:

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

其中任何一个在技术上都是正确的,因为第一个是非官方类型的公认 MIME 类型格式,第二个是二进制数据的通用 MIME 类型,没有更具体的官方 MIME 类型。我根据RFC2046验证了这个声明,它似乎成立了。在正式成为官方之前,最正确的方法是对非官方类型使用公认的格式,或者使用泛型类型。

于 2012-10-02T21:40:40.167 回答
1

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

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

如果你想回到过去,你可以使用application/font-tdpfrTrueDoc Portable Font Resource。Netscape Navigator 4 原生支持此功能。☺</p>

于 2012-10-08T19:52:01.260 回答