Ruby on rails Rails 4-自定义字体

Ruby on rails Rails 4-自定义字体,ruby-on-rails,fonts,font-face,Ruby On Rails,Fonts,Font Face,目前,我正在尝试将自定义字体添加到Rails 4应用程序中 我将所有字体添加到资产/字体中 我添加了config.assets.path更改: @font-face { font-family: 'oxygenregular'; src: url(font-path('/fonts/oxygen-regular-webfont.eot') + "?#iefix") format('embedded-opentype'),

目前,我正在尝试将自定义字体添加到Rails 4应用程序中

  • 我将所有字体添加到
    资产/字体中
  • 我添加了
    config.assets.path更改:

    @font-face { font-family: 'oxygenregular'; 
                 src: url(font-path('/fonts/oxygen-regular-webfont.eot') + "?#iefix") 
                 format('embedded-opentype'), 
                 url(font-path('/fonts/oxygen-regular-webfont.woff')) format('woff'),
                 url(font-path('/fonts/oxygen-regular-webfont.ttf')) format('truetype'), 
                 url(font-path('/fonts/oxygen-regular-webfont.svg') + "#MyFont") format('svg'); }
    
    body { font-family: 'oxygenregular', ...}
    
    由于您正在加载位于/assets/stylesheets(和浏览器中的/stylesheets/)中的“style.css”中的字体,因此脚本尝试加载/stylesheets/oxygen-regular-webfont.eot

    将“/fonts/”附加到路径应该可以正常工作。 如果仍有错误,请检查浏览器的开发者控制台。

    字体

    问题是调用字体文件时没有正确引用其路径

    这里的问题与您从资产管道中引用图像或其他文件时的问题相同-如果您使用的文件路径不存在,则不会加载(因为:

    指纹识别是一种使文件名依赖的技术 关于文件的内容。当文件内容更改时 文件名也会更改。对于静态或不频繁的内容 更改后,这提供了一种简单的方法来判断 即使在不同的服务器或部署日期之间,文件也是相同的

    许多Rails资产都无法引用正确的文件,因为当您
    预编译它们时,文件路径的名称已经更改,在大多数情况下都无法加载它们


    路径

    要添加到
    @praszyk
    ,您的答案是需要使用
    资产路径之一
    来提取正确的字体路径,这可以使用Rails附带的一个路径来完成(通常是
    SCSS
    SASS

    您遇到的问题是使用
    .css
    无法做到这一点-您必须使用
    .scss
    .sass

    #app/assets/stylesheets/style.css.scss
    @font-face { font-family: 'oxygenregular'; 
                 src: asset_url('/fonts/oxygen-regular-webfont.eot' + "?#iefix") 
                 format('embedded-opentype'), 
                   asset_url('/fonts/oxygen-regular-webfont.woff') format('woff'),
                   asset_url('/fonts/oxygen-regular-webfont.ttf') format('truetype'), 
                   asset_url(font-path('/fonts/oxygen-regular-webfont.svg') + "#MyFont") format('svg'); }
    
    asset\u url
    scss
    一起使用将自动调用文件的正确版本-是否有指纹


    如果你把它与
    @praszyk
    的答案结合起来使用,它应该很有希望起作用

    我用
    @praszyk
    和你的方法尝试过,但仍然不起作用。我将
    style.css
    更改为
    style.css.scss
    ,并将代码更改为您的代码。如果您使用的是sass,
    asset url
    带有连字符,而不是带有下划线的
    asset\u url
    。前者是sass,而后者是rails(如果我在这方面错了,请纠正我)。此外,除了
    asseturl
    之外,还有一个更具语义的助手方法
    font-url
    。使用字体url时,它将在/assets/fonts/文件夹中搜索,就像
    图像url
    搜索/assets/images/文件夹一样。也看到这个
    @praszyk
    我试着像你一样修改代码,但仍然不起作用。如果我把代码放在
    assets/stylesheet/application.css上会更好吗?您是否将/font/添加到了您的资产管道中?您是否可以在assets下创建任何文件夹,然后会出现一个神奇的方法“foldername path”?即使文档中没有“字体路径”,也可以这样调用它吗?子问题:正在执行
    Rails.application.config.assets.precompile吗