Font-Face не работает с Rails 3.1

Я только что обновился до Rails 3.1 и Asset Pipeline и не могу понять, почему мой шрифт больше не читается. Я пробовал ответы в этом сообщении (безуспешно): Использование @font-face с приложением Rails 3.1?

В настоящее время я пробую выбранное решение. У меня есть папка шрифтов в app/assets. Имя файла правильное и существует в каталоге шрифтов.

В моем Application.rb

config.assets.paths << "#{Rails.root}/app/assets/fonts"

Я также пробовал из руководства по Rails (http://guides.rubyonrails.org/asset_pipeline.html ):

config.assets.paths << Rails.root.join("app", "assets", "fonts")

С этим кодом путь сопоставляется с этим при запуске кода src: url('/assets/League_Gothic-webfont.eot

В моем CSS:

@font-face {
  font-family: "League_Gothic";
  src: url('<%= asset_path('League_Gothic-webfont.eot') %>');
  font-weight: normal;
  font-style: normal;
}

Когда я пробую другое решение, по существу, жестко кодируя путь:

src: url(/assets/fonts/League_Gothic-webfont.eot);

Я получаю эту ошибку, когда я нажимаю на ссылку в исходном коде страницы:

No route matches [GET] "/assets/fonts/League_Gothic-webfont.eot"   

person yellowreign    schedule 10.03.2012    source источник


Ответы (2)


Добавьте это в application.rb

# Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/vendor/assets/fonts"
# Precompile additional assets
config.assets.precompile += %w( .svg .eot .woff .ttf )

Затем добавьте это в css или scss перед использованием шрифта.

@font-face {
  font-family: 'Museo300Regular';
  src:  font-url('Museo300-Regular-webfont.eot');
  src:  local('Museo300Regular'),
        font-url('Museo300-Regular-webfont.eot?#iefix') format("embedded-opentype"),
        font-url('Museo300-Regular-webfont.woff') format("woff"),
        font-url('Museo300-Regular-webfont.ttf') format("truetype"),
        font-url('Museo300-Regular-webfont.svg#Museo300Regular') format("svg") ;
  font-weight: normal;
  font-style: normal;
}
person Dean    schedule 11.06.2012
comment
Работал как шарм! Спасибо. - person Jignesh Gohel; 22.02.2013

Вам не нужно вносить эти изменения в application.rb.

Но, вероятно, ваша проблема заключается в том, что вы делаете «assets/fonts/myfont.eof», когда вы должны делать «assets/myfont.eof». Не обращайтесь к именам каталогов шрифтов, изображений и т. д., если они являются активами, просто вызывайте их из assets/

Возможно, вам придется избавиться от того, что вы изменили в application.rb, чтобы это работало. Не знаю, попробуй с ним и без.


Кроме того, из моего файла CSS в проекте, над которым я работаю:

@font-face
{
  font-family: ubuntu;
  src: url("/assets/Ubuntu-R.ttf");
}

Это может помочь.

person varatis    schedule 10.03.2012
comment
Вы правы, но не совсем. В моем проекте Rails 3.2 я просто сделал src: url(league_gothic-webfont.eot); без ассетов или ассетов/шрифтов, и это просто сработало, хотя путь ассета - vendor/assets/fonts/league_gothic-webfont.eot - person idrinkpabst; 21.08.2013
comment
@idrinkpabst Я думаю, что это было для Rails 3.1, и это не то же самое для проектов Rails 3.2, как вы заметили. - person varatis; 04.09.2013