Rails - 使用CSS3的@ font-face

时间:2012-01-27 12:51:27

标签: ruby-on-rails-3 css3 font-face

global.css加载的application.html.erb文件中,我有以下几行:

@font-face {
  font-family: myfont;
  src: url(/lib/fonts/MyFont-AH.ttf) format("truetype"); /* For IE */
  src: local("MyFont-AH"), url(/lib/fonts/MyFont-AH.ttf) format("truetype"); /* Non-IE */ 

}

然后我在其他地方

h1 {
  font-family: myfont, helvetica, arial;
}

当我启动服务器时,h1使用的是Helvetica字体,我在日志ActionController::RoutingError (No route matches [GET] "/lib/fonts/MyFont-AH.ttf"):中收到错误。我想这意味着我需要编辑我的路由文件,所以我去添加了行get "/lib/fonts/MyFont-AH.ttf",但是当我重新加载页面时,我收到错误missing :controller,因为没有控制器绑定到这个动作。当我创建一个控制器并将get请求与它匹配时,它就需要一个模板。看起来它希望我像其他大多数请求一样设置控制器/动作,所以我不太清楚这里要做什么。有什么建议吗?

2 个答案:

答案 0 :(得分:8)

我升级到Rails 3.2并使用资产管道(来自Rails 3.1+),然后我将要显示的字体放在vendor/assets/fonts中。然后我将以下行添加到我的application.rb文件中:config.assets.paths << "#{Rails.root}/vendor/assets/fonts"。最后在我的CSS文件中,我使用了格式:

@font-face {
  font-family: myfont;
  src: url("/assets/myfont.ttf") format("truetype"); /* For IE */
  src: local("myfont"), url("/assets/myfont.ttf") format("truetype"); /* For non-IE */
}

我认为原始问题的一部分可能是我的文件存储了扩展名.TTF而不是.ttf,但我不确定。我所知道的是它现在正在运作。

答案 1 :(得分:1)

我自己没有这样做,但我认为你的字体应该存储在public或assets目录中(取决于你使用的rails版本)。 Lib不是一个可供用户下载的目录(除非你使用某种聪明的宝石来处理这个问题吗?)。

在pre Rails 3.1上我将我的字体放在

public/fonts

然后用

引用它们
url(../fonts/MyFont-AH.ttf)