Using fonts with Rails asset pipeline

前端 未结 12 1809
慢半拍i
慢半拍i 2020-11-22 14:52

I have some fonts being configured in my Scss file like so:

@font-face {
  font-family: \'Icomoon\';
  src: asset-url(\'icoMoon.eot?#iefix\', font) format(\'         


        
12条回答
  •  萌比男神i
    2020-11-22 15:15

    I was having this problem on Rails 4.2 (with ruby 2.2.3) and had to edit the font-awesome _paths.scss partial to remove references to $fa-font-path and removing a leading forward slash. The following was broken:

    @font-face {
      font-family: 'FontAwesome';
      src: font-url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
      src: font-url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
        font-url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
        font-url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
        font-url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
        font-url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
      font-weight: normal;
      font-style: normal;
    }
    

    And the following works:

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

    An alternative would be to simply remove the forward slash following the interpolated $fa-font-path and then define $fa-font-path as an empty string or subdirectory with trailing forward slash (as needed).

    Remember to recompile assets and restart your server as needed. For example, on a passenger setup:

    prompt> rake assets:clean; rake assets:clobber
    prompt> RAILS_ENV=production RAILS_GROUPS=assets rake assets:precompile
    prompt> service passenger restart
    

    Then reload your browser.

提交回复
热议问题