7

我们从静态资源中提供一些网络字体 (.woff),我想设置正确的 mime 类型 ( application/x-font-woff)。我试图这样做,config/initializers/mime_types.rb但没有效果:

Mime::Type.register "application/x-font-woff", :woff

返回的 mime 类型仍然保留application/octet-stream。我什至尝试添加这一行(因为它是 rails 源中我可以找到字符串的唯一其他位置"woff"):

Rack::Mime::MIME_TYPES[".woff"] = "application/x-font-woff"

但它仍然没有帮助。如何正确设置网络字体的 mime 类型?

4

2 回答 2

12

在 Rack 将其 MIME 类型列表修复为正确之前woff,临时 hack 确实是您的config/initializers/mime_types.rb行:

# tell Rack (and Sprockets) about modern font MIME types:
Rack::Mime::MIME_TYPES['.woff'] = 'application/x-font-woff'

但是,要使其真正生效,您必须擦除tmp/cache并重新启动服务器。

于 2012-10-02T20:28:14.250 回答
0

虽然我也没有想出一些黑客解决方案,但我几天前研究了这个(在我运行 WEBRick 的 Rails 3.2 开发服务器上,供参考),它是 Sprockets 在响应中设置了错误的 MIME 类型,可能是通过将选择权委托给 Rack,它对要为字体传递什么 MIME 类型有一个愚蠢的概念(从这个 ravinggenious commit 开始)。

我在 Sprockets 上提交了一张(详细的)票证,并在 Rack上提交了一个拉取请求,希望它能够在上游得到修复,这是最有意义的地方,但还没有看到太多的行动。我大概也应该多关注一下ttf和eof,但是来晚了,当时没有想到。

(对其中任何一个发表评论可能会提高对问题的认识——一个问题不是问题,一堆人是值得解决的问题吗?:-)

于 2012-09-29T20:34:40.800 回答