次の使用に問題があります@font-face
宣言で動作するRails 3.1 app。フォントをimages
とstylesheets
の横にある "Fonts"という独自のフォルダーのアセットパイプラインに配置しますおよびjavascripts
これが私が使用した宣言です(Font Squirrelによって生成されます)。
@font-face {
font-family: 'ChunkFiveRegular';
src: url('Chunkfive-webfont.eot');
src: url('Chunkfive-webfont.eot?#iefix') format('embedded-opentype'),
url('Chunkfive-webfont.woff') format('woff'),
url('Chunkfive-webfont.ttf') format('truetype'),
url('Chunkfive-webfont.svg#ChunkFiveRegular') format('svg');
font-weight: normal;
font-style: normal;
}
だれでも、Rails 3.1アプリで@ font-faceをうまく利用していますか?
更新
私はこのスレッドを読んだだけです http://spin.atomicobject.com/2011/09/26/serving-fonts-in-Rails-3-1/ 変更すると言われましたurl
font-url
宣言内。残念ながらそれもうまくいかなかったようです。
フォルダーをアセットパス(ファイルconfig/application.rb
へ)に追加する必要があります。 Railsガイド を参照してください
config.assets.paths << "#{Rails.root}/app/assets/fonts"
また、asset_path
ヘルパーを使用する必要があります。
src: url('<%= asset_path('Chunkfive-webfont.eot') %>');
これは古い質問ですが、Rails 3.2でこの問題に出くわしました。以前投稿されたドキュメントへのリンクを読んだ後は、application.rbを編集する必要はありませんでした。私がする必要があるすべては私のスタイルシートで(sassを使って)次のことをすることでした
@font-face {
font: {
family: 'Junction';
weight: 'normal';
style: 'normal';
}
src: asset-url('Junction-webfont.eot', font);
src: asset-url('Junction-webfont.eot', font) format('embedded-opentype'),
asset-url('Junction-webfont.woff', font) format('woff'),
asset-url('Junction-webfont.ttf', font) format('truetype'),
asset-url('Junction-webfont.svg#JunctionRegular', font) format('svg')
}
したがって、URLを使用する代わりに、ファイルとアセットクラス(この場合は「フォント」)の2つの引数を取る汎用のアセットURLを使用しました。
Rails 3.1以降では、font-url
を直接呼び出すことができます。このように:
@font-face {
font-family: 'ChunkFiveRegular';
src: font-url('Chunkfive-webfont.eot');
src: font-url('Chunkfive-webfont.eot?#iefix') format('embedded-opentype'),
font-url('Chunkfive-webfont.woff') format('woff'),
font-url('Chunkfive-webfont.ttf') format('truetype'),
font-url('Chunkfive-webfont.svg#ChunkFiveRegular') format('svg');
font-weight: normal;
font-style: normal;
}
最終的なCSSがそのようになることを期待してください:
@font-face {
font-family: 'ChunkFiveRegular';
src: url(/assets/Chunkfive-webfont.eot);
src: url(/assets/Chunkfive-webfont.eot?#iefix) format('embedded-opentype'),
url(/assets/Chunkfive-webfont.woff) format('woff'),
url(/assets/Chunkfive-webfont.ttf) format('truetype'),
url(/assets/Chunkfive-webfont.svg#ChunkFiveRegular) format('svg');
font-weight: normal;
font-style: normal;
}
通常は動作します:)
Rails 4.0(これが4に固有であるかどうかは不明ですが、とにかく))を使用して、url(font_path('font-name.ttf'))
でのみ機能させることができました。フォントパスをアセットパスも必要ありませんでした()。config.assets.paths << "#{Rails.root}/app/assets/fonts"
だから、私にはこれがうまくいきました:
@font-face {
font-family: 'ChunkFiveRegular';
src: url(font_path('Chunkfive-webfont.eot'));
src: url(font_path('Chunkfive-webfont.eot?#iefix')) format('embedded-opentype'),
url(font_path('Chunkfive-webfont.woff')) format('woff'),
url(font_path('Chunkfive-webfont.ttf')) format('truetype'),
url(font_path('Chunkfive-webfont.svg#ChunkFiveRegular')) format('svg');
font-weight: normal;
font-style: normal;
}
Atomic ObjectのSpinブログの記事を更新しました。これがCSS変換です(あなたはSass構文を見ていました)
@font-face {
font-family: "Merriweather";
src: url(/assets/merriweather-black-webfont.eot);
src: local("Merriweather Heavy"), local("Merriweather-Heavy"), url(/assets/merriweather-black-webfont.eot?#iefix) format("embedded-opentype"), url(/assets/merriweather-black-webfont.woff) format("woff"), url(/assets/merriweather-black-webfont.ttf) format("truetype"), url(/assets/merriweather-black-webfont.svg#MerriweatherHeavy) format("svg");
font-weight: 900;
font-style: normal;
}
これは遅いですが、コンパスの+font-face
この問題をすべて回避するためのミックスイン。ミックスインはあなたの人生をより簡単にするのに役立ちます
従来のフォントフェイスのデクレレーションのひどい警告を覚えていない
内部でurl_helperとフォーマット宣言を処理します
覚えるのがはるかに簡単です
それは次のように宣言されています。
+font-face("#{$font-name}",
font-files("#{$font-name}.woff", woff,
"#{$fontFileName}.ttf", ttf,
"#{$fontFileName}.svg", svg), "#{$fontFileName}.eot", normal, normal);
私は3.1.1を使用しており、フォントはvendor/assets/store(Spree実装)にあります。ここで与えられた解決策は私にとってはうまくいきませんでした、そして私は結局私の解決策となったものを試しました-必要はありませんでした
EOTのsrc属性の例を次に示します。
src: url('1617A5_4.eot');
私はこれに少し混乱していますが、アセットがコンパイルされると、アセットはすべて親フォルダー(assets/store /)にコピーされ、その時点でスタイルシートはそれらを取得できます。