我正在尝试使用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
的输出(自images
以来assets/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
它不会在任何地方捡到它。有什么想法吗?
答案 0 :(得分:6)
您是否明确声明应该预编译字体文件?
config.assets.precompile + =%w(.js .css * .css.scss .svg .eot .woff .ttf)
这是开发,升级,生产,以上所有问题吗?
是否加载了@ font-face规则的样式表?
答案 1 :(得分:0)
你应该告诉asset_path你'资产'一种字体,这将修复你的目录问题:
url('<%= asset_path('museosans_500_italic_webfont.eot', font) %>');
如果这不起作用,application.css的浏览器输出是什么(我假设包含fonts.css)?
答案 2 :(得分:0)
如果您将字体粘贴在assets / images目录中,然后使用rake assets:precompile
,rails会自动编译图像目录中的所有内容。
所以你所要做的就是在你的css中拨打正确的电话:
如果*.css.scss
:
font-url('museosans_500_italic_webfont.eot') format('eot')
注意:您可以使用font-url
(参考rails guides)
问题#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