私はRailsアプリにカスタムフォントを追加する方法を研究しています。アセットフォルダーにfonts
フォルダーを追加することで、これを行う方法に関する「公式」Rails方法が見つかりません。
はい、この問題に関するSOには多くの質問/回答がありますが、それらはすべて独自のハッキングに関するものです。しかし、そのような一般的な慣行は、Railsの有名な「設定より規約」の下に置かれるべきではありませんか?
または見逃した場合-Railsアプリでフォントを整理する方法に関するドキュメント参照はどこですか?
はい、与えられたリンクはそれをうまく説明しますが、別の詳細な説明が必要な場合はここにあります
まず、アプリでカスタムフォントを使用するには、フォントファイルをダウンロードする必要があります。 https://www.1001freefonts.com/ を試してフォントを探すことができます。
最も一般的なフォントファイル形式は、主に.otf(Open Type Format).ttf(True Type Format).woff(Web Open Font Format)です
ダウンロードしたフォントをapp/assets/fonts /の下のアプリフォルダーに移動できます。
ファイルをダウンロードした後、このようにCSSで使用するフォントを「宣言」する必要があります
@font-face {
font-family: "Kaushan Script Regular";
src: url(/assets/KaushanScript-Regular.otf) format("truetype");
}
最後に、このようにどこでも宣言したフォントファミリを使用できます。
#e-registration {
font-family: "Kaushan Script Regular";
}
お役に立てれば。
やったところです...
フォントファイル(eot、woff、woff2 ...)をassets/fonts /ディレクトリにダウンロードして保存します
これが行うことは、デフォルトで画像、スタイルシートなどで行うように、フォントフォルダをプリコンパイルします。
そして、この行がtrueconfig.assets.enabled = trueに設定されていることを確認してください
Sass/scssまたは<script>
タグとインライン
@font-face { font-family: 'Bariol Regular'; src:
font-url('Bariol_Regular_Webfont/bariol_regular-webfont.eot');
src:
font-url('Bariol_Regular_Webfont/bariol_regular-webfont.eot?iefix')
format('eot'),
font-url('Bariol_Regular_Webfont/bariol_regular-webfont.woff')
format('woff'),
font-url('Bariol_Regular_Webfont/bariol_regular-webfont.ttf')
format('truetype'),
font-url('Bariol_Regular_Webfont/bariol_regular-webfont.svg#webfont3AwWkQXK')
format('svg'); font-weight: normal; font-style: normal; }
Cssのurl
の代わりにfont-url
ヘルパーを使用して、アセットをプリコンパイルするときにRails
最後に、CSSファイルでfont-familyを設定します
body {
font-family: 'Bariol Regular', serif;
}
無料のヒント:これは言われていることですが、パフォーマンスの観点から最も良い方法は、これらのフォントが非同期にロードされるようにJSでこれを設定することです。このローダーを確認してください: https://github.com/typekit/webfontloader
上記のアプローチでは、プロダクションcssがコンパイル済みのttfフォントを指していないため、いくつかの問題が発生したため、 https://Gist.github.com/anotheruiguy/7379570から借用したこの代替アプローチを正常に使用しました。 :
すべてのフォントファイルをassets/stylesheets/fonts
に配置します。例えばassets/stylesheets/fonts/digital_7.ttf
。
使用する.scssファイルで定義しました:
@font-face {
font-family: 'Digital-7';
src: asset-url('fonts/digital_7.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
他の.scssファイルのカスタムフォントを活用しました。
.digital-font {
font-family: 'Digital-7', sans-serif;
font-size: 40px;
}
これは、フォント定義(この例ではdigital_7_mono.ttf)を別のサイトに配置することで、よりクリーンな方法を実現できるということです。
たとえば、my_path
というCloudfrontディレクトリでCloudfrontを使用している場合は、フォントファイルをアップロードし、cssファイルを定義します(例:digital_fonts.css
)
@font-face {
font-family: 'Digital-7-Mono';
font-weight: normal;
font-style: normal;
src: local('Digital 7 Mono'), local('Digital-7-Mono'), url('https://mycloudfront_site.com/my_path/digital_7_mono.ttf') format('truetype');
}
Htmlの<head>
タグ内に、次を追加します。
私のために働いた唯一の方法はこれでした:
@font-face {
font-family: 'Vorname';
src: asset-url('Vorname.otf') format('truetype'),
asset-url('Vorname.ttf') format('truetype');
}