Rails 3 web字体(woff)mime类型

时间:2012-09-28 17:06:12

标签: ruby-on-rails-3 mime-types webfonts woff

我们从静态资源提供一些网络字体(.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"

但它仍然无济于事。如何正确设置Web字体的mime类型?

2 个答案:

答案 0 :(得分:12)

在Rack将其MIME类型列表修复为正确的woff之前,临时黑客确实是您的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并重新启动服务器。

答案 1 :(得分:0)

虽然我也没有弄清楚它的一些黑客解决方案,但我几天前研究了这个(在运行WEBRick的我的rails 3.2 dev服务器上,供参考),它的Sprockets在响应上设置了错误的MIME类型,也许将选择委托给Rack,它对于字体传递的MIME类型有一个愚蠢的概念(截至this ravinggenious commit)。

我提交了一个(详细的)ticket on Sprockets和一个pull request on Rack,希望它能在最有意义的上游修复,但是还没有看到太多动作。我可能应该更加关注ttf和eof,但是已经很晚了,当时我没有想到它。

(评论两者都可能提高对这个问题的认识 - 一个问题没有问题,一堆人是一个值得修复的问题?: - )