4

我正在尝试使用 Rails 3.1 Asset Pipeline 来存储我在多个应用程序中使用的一些字体。我已经尝试了几乎所有存储位置的组合,但我似乎无法让管道实际拾取我的字体文件。public/assets当我跑步时它们会出现,rake assets:precompile但任何asset_path助手都无法使用它们,我无法弄清楚原因。

示例来自fonts.css.erb

@font-face {
    font-family: 'MuseoSans';
    src: url('<%= asset_path('museosans_500_italic_webfont.eot') %>');
    src: url('<%= asset_path('museosans_500_italic_webfont.eot?#iefix') %>') format('eot'),
         url('<%= asset_path('museosans_500_italic_webfont.woff') %>') format('woff'),
         url('<%= asset_path('museosans_500_italic_webfont.ttf') %>') format('truetype'),
         url('<%= asset_path('museosans_500_italic_webfont.svg#webfontcWw5DXpH') %>') format('svg');
    font-weight: normal;
    font-style: italic;

 }

的输出(因为没有工作,所以一直ls app/assets/images卡在里面,但两次都没有工作):imagesassets/fonts

museosans_100_italic_webfont.eot  museosans_500_webfont.eot
museosans_100_italic_webfont.svg  museosans_500_webfont.svg
museosans_100_italic_webfont.ttf  museosans_500_webfont.ttf
museosans_100_italic_webfont.woff museosans_500_webfont.woff
museosans_100_webfont.eot         museosans_700_italic_webfont.eot
museosans_100_webfont.svg         museosans_700_italic_webfont.svg
museosans_100_webfont.ttf         museosans_700_italic_webfont.ttf
museosans_100_webfont.woff        museosans_700_italic_webfont.woff
museosans_300_italic_webfont.eot  museosans_700_webfont.eot
museosans_300_italic_webfont.svg  museosans_700_webfont.svg
museosans_300_italic_webfont.ttf  museosans_700_webfont.ttf
museosans_300_italic_webfont.woff museosans_700_webfont.woff
museosans_300_webfont.eot         museosans_900_italic_webfont.eot
museosans_300_webfont.svg         museosans_900_italic_webfont.svg
museosans_300_webfont.ttf         museosans_900_italic_webfont.ttf
museosans_300_webfont.woff        museosans_900_italic_webfont.woff
museosans_500_italic_webfont.eot  museosans_900_webfont.eot
museosans_500_italic_webfont.svg  museosans_900_webfont.svg
museosans_500_italic_webfont.ttf  museosans_900_webfont.ttf
museosans_500_italic_webfont.woff museosans_900_webfont.woff

我尝试从以下位置访问:

  • /assets/museosans_500_italic_webfont.svg
  • /assets/images/museosans_500_italic_webfont.svg
  • /images/museosans_500_italic_webfont.svg

它不会在任何地方捡起它。有什么想法吗?

4

4 回答 4

6

您是否明确声明应预编译字体文件?

config.assets.precompile += %w( .js .css *.css.scss .svg .eot .woff .ttf)

这是开发、登台、生产中的所有问题吗?

是否加载了带有 @font-face 规则的样式表?

于 2011-08-27T20:09:36.227 回答
0

您应该告诉asset_path 您正在“资产化”一种字体,这将解决您的目录问题:

url('<%= asset_path('museosans_500_italic_webfont.eot', font) %>');

如果这不起作用,application.css 的浏览器输出是什么(我假设包括 fonts.css)?

于 2011-08-29T03:45:18.317 回答
0

如果将字体粘贴在 assets/images 目录中,然后使用rake assets:precompile,rails 会自动编译 images 目录中的所有内容。

所以你所要做的就是在你的css中做出正确的调用:

如果*.css.scss

font-url('museosans_500_italic_webfont.eot') format('eot')

注意:您可以使用font-url(参考导轨指南

问题 #1:添加您想要提供的 css 文件(仅在 stylesheet_link_tag 中实际调用的文件)config.assets.precompile += %w( application.css.scss application.js.coffee ect.css.sass)

问题 #2:您需要指定摘要才能使其工作:

# Generate digests for assets URLs
config.assets.digest = true
于 2011-10-18T14:58:06.070 回答
0

文档说:

资产助手。使用资产管道时,必须重写资产路径。引用资产时,请使用以下资产助手(在 Ruby 中加下划线,在 Sass 中连字符):

◦   asset_path($relative-asset-path, $asset-class) - Returns a string to the asset. For example: asset-path("rails.png", image) becomes "/assets/rails.png"
◦   asset_url($relative-asset-path, $asset-class) - Returns url reference to the asset.

例如:assets-url("rails.png", image) 变成 url(/assets/rails.png)

为方便起见,对于以下每个资产类,都有对应的 -path 和 -url 助手:图像、字体、视频、音频、javascript、样式表。例如:image-url("rails.png") 变成 url(/assets/rails.png) 和 image-path("rails.png") 变成 "/assets/rails.png"。

例子:

@font-face
  font-family: HelveticaInseratCom
  src: font-url('HelveticaInseratCom.ttf')

但是,对于我的 rails3.1 应用程序,我不能这样做。我不得不将字体直接放在公用文件夹中:

/public/HelveticaInseratCom.ttf

在我使用的 css.scss.erb 文件中:

@font-face
  font-family: HelveticaInseratCom
  src: url('/HelveticaInseratCom.ttf')    

然后这起作用了,并且在运行时rake assets:precompile没有抛出此错误:

rake aborted!
HelveticaInseratCom.ttf isn't precompiled
于 2011-09-05T06:37:09.630 回答