资产管道,指南针font-face和eot?iefix调用字体

时间:2011-10-08 20:41:50

标签: ruby-on-rails-3.1 font-face compass-sass asset-pipeline sprockets

我正在尝试使用Compass font-face mixin,其中包含了 * .eot?iefix

我的app / assets / fonts包含所需的所有字体类型,包括.eot。

当我尝试运行资产时:预编译任务失败,说: webfont.eot?iefix未预编译

您是否知道此问题的可能解决方案?

如果我有config.assets.compile = true,它运行时没有错误,但正如我所知,最好不要在生产中使用它。

3 个答案:

答案 0 :(得分:10)

您也可以使用纯 Scss

@font-face {
  font-family: 'DroidSans';
  src: url(font-path('DroidSans-webfont.eot'));
  src: url(font-path('DroidSans-webfont.eot') + '?#iefix') format('embedded-opentype'),
       url(font-path('DroidSans-webfont.woff')) format('woff'),
       url(font-path('DroidSans-webfont.ttf')) format('truetype'),
       url(font-path('DroidSans-webfont.svg') + '#DroidSansRegular') format('svg');
  font-weight: normal;
  font-style: normal;
}

答案 1 :(得分:4)

我刚刚用一点(支持)黑客解决了这个问题。

我创建了一个新的css文件font.css.erb,并将@import "font"放在@font-face声明的位置。

@font-face {
    font-family: 'SketchBlockBold';
    src: font_url('font/sketch_block-webfont.eot');
    src: url('<%= asset_path('font/sketch_block-webfont.eot')+"?#iefix" %>') format('embedded-opentype'),
         font_url('font/sketch_block-webfont.woff') format('woff'),
         font_url('font/sketch_block-webfont.ttf') format('truetype'),
         url('<%= asset_path('font/sketch_block-webfont.svg')+"#SketchBlockBold" %>') format('svg');
    font-weight: normal;
    font-style: normal;
}

请注意资产路径的使用以及特殊文件结尾的连接。

答案 2 :(得分:1)

似乎是一个已知问题https://github.com/rails/rails/issues/3045 现在使用config.assets.compile = true。