6

在我的 rails 4 项目中,css 使用字体文件。所以他们需要额外预编译。

我通过向 config/environments/production.rb 添加以下行来实现这一点

  # Add the fonts path
  config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts','fonts')
  #
  # # Precompile additional assets
  config.assets.precompile += %w( *.svg *.eot *.woff *.ttf )

并运行 rake assets:precompile 在生产中。

但是,结果如下:

I, [2013-10-10T19:27:51.931963 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-ab2f6984951c07fd89e6afdefabd93c7.eot
I, [2013-10-10T19:27:51.940615 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-24dfb40c91db789b8b8faba6886ac1ef.svg
I, [2013-10-10T19:27:51.950685 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-4b2130768da98222338d1519f9179528.ttf
I, [2013-10-10T19:27:51.983230 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-7a07f26f72466361ac9671de2d33fd1c.woff

和 css 文件是指没有此 md5 指纹的字体文件。

我如何预编译资产,以便在没有 md5 指纹的情况下生成它们?或者在这种情况下我应该把它们放到 public/fonts/ 文件夹中吗?

4

1 回答 1

2

按着这些次序

  • 您的字体必须在app/assets/fonts
  • 将您的字体添加到资产路径(就像您所做的那样),但更喜欢config/application.rb
  • 用 à 在你的 CSS 中声明你的字体@font-face。你会在这里找到一些帮助
  • 如果你不使用 SCSS,你必须嵌入 css likeapplication.css.erb并使用asset_path()helper 在你的 font-face 声明中实现你的字体路径。

一个没有 SCSS 的例子:

@font-face {
  font-family: 'MyFont';
  src:url('<%= asset_path("myfont.eot")%>');
  src:url('<%= asset_path("myfont.eot?#iefix")%>') format('embedded-opentype'),
    url('<%= asset_path("myfont.svg#myfont")%>') format('svg'),
    url('<%= asset_path("myfont.woff")%>') format('woff'),
    url('<%= asset_path("myfont.ttf")%>') format('truetype');
  font-weight: normal;
  font-style: normal;
}
于 2013-11-17T10:49:55.873 回答