ChatGPT解决这个技术问题 Extra ChatGPT

OTF 字体的正确 MIME 类型

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

资源解释为字体但使用 MIME 类型 font/otf 传输

字体是 OTF。

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

字体/otf

应用程序/字体-otf

应用程序/字体

应用程序/otf

应用程序/八位字节流

应用程序/x-font-otf

application/x-font-TrueType (我知道它不是 truetype,但有一个消息来源为 OTF 引用了这个)

您实际上如何为此编写标题?我不确定该怎么做。为您可以提供的任何帮助而欢呼。
@Josh:如果您通过代码提供字体,您希望将“content-type”标头设置为“font/opentype”(如果您在我的问题中使用 OTF),但如果您只是指向物理字体文件,在 Web 服务器中设置 MIME 类型可能更容易。我不知道您使用的是什么网络服务器,因此请在 Google 上搜索 yourserver + mime 类型,或者在 SO 上提出一个新问题来描述您的问题。
标题是错误的。它应该是“如何使 Chrome 中的“资源解释为字体”警告静音
@djs:授予!你知道,如果我能找到一种方法让 Chrome 记住我希望我的控制台列出日志消息和错误,而不是警告,那么我很有可能一开始就不会问这个问题。
Chrome 警告我们它正在做我们要求的事情。如果您将@font-face 与.BMP 文件一起使用,我宁愿在它成功找出用于字形的位图时看到警告!

C
Community

在 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, 2013Webkit 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) trackerdocument 就最新的一组建议字体类型进行审批。

对于那些希望在 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

好的,谢谢。我收到了 .woff 的错误消息,这在我的 .htaccess 文件中修复了它。我用过AddType application/x-font-woff
application/x-font-opentype 和 application/x-font-ttf 非常适合 Linux Gnome Shell
ttf、otf 和 woff2 已过时。请参阅stackoverflow.com/a/20723357/1356047
s
spd

尝试使用“字体/opentype”。


@busticated,你是怎么决定这个的?它正在成为一种标准吗? (对我有用,我写了一个关于 fontsquirrel 的请求,以便在他们的字体生成器中使用它...... fontsquirrel.com/forum/discussion/361/mime-type-for-woff
适用于我的 Chrome 22 和 Firefox 15 (Mac),适用于 SVG 和 WOFF 内联字体。
我遇到了与上述问题相同的错误,但我不知道将 MIME 类型“font/opentype”放在哪里......这是否在 html 页面的标题中?
这个应该加在哪里?谢谢!
C
Community

忽略镀铬警告。 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


有趣的。你有任何支持这一点的参考资料吗?
没有 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 我相信 IANA 取代了 IETF。 IETF submits drafts to IANA,并且由于 IANA 报告 woff 是一种 MIME 类型,因此 IETF 在其有限列表中被覆盖。
@MikeKormendy,我不明白您的评论,但您可能指的是我的答案的先前版本,该版本仅针对 WOFF。我恢复了原版
@djsadinoff 这很奇怪,堆栈交换说您刚刚评论了“3 分钟前”。
C
Community

自 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中说更多。


@SteveEynon:基于 Presto 的 Opera 不会渲染带有图像 mime 类型的 ꜱᴠɢ 字体。
这与 Mozilla 为浏览器列出的 common MIME types 一致。
C
Community

作为计算领域 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

希望这是这个问题需要的最后一个答案。


安东尼,这是除了我的帖子之外的另一个很好的资源。感谢您在这里分享这个!
B
BGBRUNO

这是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


M
Marc J. Driftmeyer

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。


A
Aaron

我刚刚对 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”在短期内可能更安全/更兼容。


s
serge

从 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...


A
Arktype

以下内容可用于电子书空间:

application/vnd.ms-opentype

我想这对于网络是一样的。


c
citrin
C
Community

自 2017 年 2 月起,RFC 8081 添加了 font/* 媒体类型,它们也列在 IANA Media Types 列表中。 font/otf 在此列表中。


M
Michael Kennedy

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

application/octet-stream

所以我只是为所有 CSS 字体类型(.oet.svg.ttf.woff)添加了它,并且 IIS 开始为它们提供服务。 Chrome 开发工具也不会抱怨重新解释类型。

干杯,迈克尔


application/octet-stream 与其说是“已知类型”,不如说是“通用字节串”。 :) 浏览器抱怨服务于这种类型,因为它不包含有关如何解释这些内容的信息。
c
cardiff space man

从 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 版本,我认为这是值得添加的。