Program Tip

Rails : Font Awesome 사용

programtip 2020. 12. 13. 10:26
반응형

Rails : Font Awesome 사용


내 웹 디자이너가 멋진 글꼴에 추가 된 업데이트 된 글꼴 / 아이콘을 제공했습니다. 그는 이것을 로컬 글꼴 폴더에 넣었습니다. font-awesome.css 파일도 받았습니다.

fonts 폴더를 내 자산에 직접 복사하고 font-awesome.css를 자산 / 스타일 시트에 넣었습니다.

CSS가 내 코드에서 올바르게 참조되지만 글꼴 폴더의 아이콘이로드되지 않습니다.

모든 것이 올바르게로드되고 / 또는 글꼴 폴더가 참조되는지 확인하기 위해해야 ​​할 일이 있습니까?


먼저 : 자산 경로 (config / application.rb)에 app / assets / fonts 추가

config.assets.paths << Rails.root.join("app", "assets", "fonts")

그런 다음 글꼴 파일을 / assets / fonts로 이동합니다 (먼저 폴더 생성).

이제 font-awesome.css의 이름을 font-awesome.css.scss.erb로 바꾸고 다음과 같이 편집하십시오. 변경 :

@font-face {
  font-family: "FontAwesome";
  src: url('../font/fontawesome-webfont.eot');
  src: url('../font/fontawesome-webfont.eot?#iefix') format('eot'), url('../font/fontawesome-webfont.woff') format('woff'), url('../font/fontawesome-webfont.ttf') format('truetype'), url('../font/fontawesome-webfont.svg#FontAwesome')    format('svg');
  font-weight: normal;
  font-style: normal;
}

이에:

@font-face {
  font-family: "FontAwesome";
  src: url('<%= asset_path("fontawesome-webfont.eot") %>');
  src: url('<%= asset_path("fontawesome-webfont.eot") + "?#iefix" %>') format('eot'), url('<%= asset_path("fontawesome-webfont.woff") %>') format('woff'), url('<%= asset_path("fontawesome-webfont.ttf") %>') format('truetype'), url('<%= asset_path("fontawesome-webfont.svg") + "#FontAwesome" %>') format('svg');
  font-weight: normal;
  font-style: normal;
}

마지막으로 모든 리소스가 올바르게로드되었는지 확인합니다 (Firebug 또는 Chrome Inspector 사용).


쉬운 방법은 추가, 지금이 gem "font-awesome-rails"당신에게 Gemfile하고 실행 bundle install.

그런 다음 application.css에 css 파일을 포함합니다.

/*
 *= require font-awesome
 */

자동으로 자산 파이프 라인에 멋진 글꼴을 포함합니다. 끝난. 그것을 사용하기 시작하십시오 :)

자세한 정보는 font-awesome-rails 문서를 확인하십시오 .


나는 또 다른 대답을 제공합니다.이 대답에서는 보석이나 경로 또는 그러한 과잉 솔루션에 대해 걱정할 필요가 없습니다. 이 줄을 application.html.erb (또는 레이아웃 파일)에 붙여 넣기 만하면됩니다.

<head>
...
<link href="//stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
</head>  

Vicoar의 답변 외에도

Rails 4의 경우 CSS를 약간 다르게 변경해야합니다. font_url의 사용법에 유의하십시오.

@font-face {
  font-family: "FontAwesome";
  src: font_url('fontawesome-webfont.eot');
  src: font_url('fontawesome-webfont.eot?#iefix') format('eot'), font_url('fontawesome-webfont.woff') format('woff'), font_url('fontawesome-webfont.ttf') format('truetype'), font_url('fontawesome-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}

이제 다음 방법은 Font Awesome을 Rails와 통합하는 가장 쉬운 방법입니다.

SASS Ruby Gem

공식 Font Awesome SASS Ruby Gem을 사용하여 Font Awesome SASS를 Rails 프로젝트로 쉽게 가져올 수 있습니다.

애플리케이션의 Gemfile에 다음 행을 추가하십시오.

gem 'font-awesome-sass'

그리고 다음을 실행합니다.

$ bundle

이것을 Application.scss에 추가하십시오.

@import "font-awesome-sprockets";
@import "font-awesome";

추가 보석없이, Barebones Rails 6 및 Webpacker와 함께 font-awesome 4를 사용하는 방법, 글꼴 또는 CSS 파일을 앱에 복사하여 붙여넣고 다른 이상한 작업을 수행하는 방법 :

font-awesome npm 패키지 추가 — package.json :

{
  "dependencies": {
    "font-awesome": "4.7.0"
  }
}

CSS 매니페스트 (app / stylesheets / application.css)에 멋진 글꼴 CSS 파일을 포함합니다.

/*
 *= require font-awesome/css/font-awesome.min
 *= require_tree .
 *= require_self
 */

맞춤 CSS 파일 (app / stylesheets / font-awesome.css.erb)에서 글꼴 정의를 재정의합니다.

@font-face {
  font-family: 'FontAwesome';
  src: url('<%= font_path('fontawesome-webfont.eot') %>');
  src: url('<%= font_path('fontawesome-webfont.eot') %>?#iefix') format('embedded-opentype'), url('<%= font_path('fontawesome-webfont.woff2') %>') format('woff2'), url('<%= font_path('fontawesome-webfont.woff') %>') format('woff'), url('<%= font_path('fontawesome-webfont.ttf') %>') format('truetype'), url('<%= font_path('fontawesome-webfont.svg') %>#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}

node_modules font-awesome dir + 글꼴 파일 유형을 자산 파이프 라인에 포함 — config / initializers / assets.rb

Rails.application.config.assets.paths << Rails.root.join('node_modules/font-awesome/fonts')
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/

글꼴이 포함되어 public / fonts 디렉토리에 컴파일되고 모든 항목 (앱 및 글꼴 멋진)이 컴파일 된 단일 CSS 파일이 제공됩니다.

The thing is, font-awesome minified css contains hardcoded paths to fonts and to override this we just adding font-face directive with generated fonts paths. Because of this, the font-awesome.min.css should be added first in the manifest file.

However, while everything will work fine, you'll get 404 errors in console. I wasn't managed to fix this and eventually gave up and switched to font-awesome-sass gem.


I have tried vicoar's , but it doesn't work on my project based on ruby 1.9.3 and rails 3.2. Then I rename the file name font-awesome.css to font-awesome.css.erb and change the @font-face to this:

@font-face {
  font-family: "FontAwesome";
  src: url(<%= asset_path 'fontawesome-webfont.eot' %>);
  src: url(<%= asset_path 'fontawesome-webfont.eot' + '?#iefix' %>) format('eot'), url(<%= asset_path 'fontawesome-webfont.woff' %>) format('woff'), url(<%= asset_path 'fontawesome-webfont.ttf' %>) format('truetype'), url(<%= asset_path 'fontawesome-webfont.svg' + '#FontAwesome' %>) format('svg');
  font-weight: normal;
  font-style: normal;
}

It works very well and the code is very simple...(your can refer the guide asset_pipeline


Having just gone through this with Rails 5.2, I'd like to share how this works if you don't want to use the font-awesome-rails gem:

  1. Put the FontAwesome font files (EOT, WOFF, etc.) in a suitably named subfolder of /app/assets, /vendor/assets or /lib/assets, eg: /app/assets/fonts.
  2. Add this line to config/initializers/assets.rb:

    Rails.application.config.assets.paths << Rails.root.join("app", "assets", "fonts")

  3. Rename FontAwesome's all.css to all.scss. If you don't do this, Rails won't pre-process the path references in the next step.

  4. Replace all the paths to the font files with Rails pipeline references (ie. font-url or asset-url):

    eg. before

    @font-face { font-family: 'Font Awesome 5 Free'; font-style: normal; font-weight: 900; src: url("../webfonts/fa-solid-900.eot"); src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }

    eg. after

    @font-face { font-family: 'Font Awesome 5 Free'; font-style: normal; font-weight: 900; src: asset-url("fa-solid-900.eot"); src: asset-url("fa-solid-900.eot?#iefix") format("embedded-opentype"), asset-url("fa-solid-900.woff2") format("woff2"), asset-url("fa-solid-900.woff") format("woff"), asset-url("fa-solid-900.ttf") format("truetype"), asset-url("fa-solid-900.svg#fontawesome") format("svg"); }

  5. Restart the server.


For rails 3.2.* a quick solution:

1) Put the font awesome files in a "fonts" folder in the public folder 2) Open font-awesome.css and change the 4 entries for "../fonts" to "/fonts" at the top of the file

@font-face
{
     font-family:'FontAwesome';
     src:url('/fonts/fontawesome-webfont.eot?v=3.2.1');
     src:url('/fonts/fontawesome-webfont.eot?#iefix&v=3.2.1') 
     format('embedded-opentype'),url('/fonts/fontawesome-webfont.woff?v=3.2.1') 
     format('woff'),url('/fonts/fontawesome-webfont.ttf?v=3.2.1') 
     format('truetype'),url('../fonts/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') 
     format('svg');
     font-weight:normal;
     font-style:normal;
}
[class^="icon-"],[class*=" icon-"]
{
     font-family:FontAwesome;
     font-weight:normal;
     font-style:normal;
     text-decoration:inherit;
     -webkit-font-smoothing:antialiased;
     *margin-right:.3em;
}  

참고URL : https://stackoverflow.com/questions/11052398/rails-using-font-awesome

반응형