【发布时间】:2019-06-18 06:45:09
【问题描述】:
我正在构建一个 Rails 应用程序,它需要使用 Source Sans Pro 字体。我无法在 HTML 标记中导入字体(因为此过程会增加页面加载时间),为此,我下载了谷歌字体网站中的 .ttf 字体(仅常规、浅色和半粗体字体)。
字体不起作用,回退sans serif正在执行,我已将ttf's文件放在app/assets/fonts/目录中,添加到我的assets.rb以下代码:
Rails.application.config.assets.paths << Rails.root.join("app", "assets", "fonts", "node_modules")
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
在我的app/assets/stylesheets/_fonts.scss 我有以下代码:
@font-face {
font-family: 'Source Sans Pro';
src: asset-url('SourceSansPro-Regular.ttf');
src: asset-url('SourceSansPro-Regular.ttf') format('ttf'),
asset-url('SourceSansPro-Light.ttf') format('ttf'),
asset-url('SourceSansPro-SemiBold.ttf') format('ttf');
font-weight: normal;
font-style: normal;
}
在global.scss 文件中,我有:
* {
font-family: 'Source Sans Pro', sans-serif;
}
所有.scss 文件都导入到application.scss 文件中:
@import 'fonts';
@import 'base/globals.scss';
在浏览器控制台中,没有显示任何错误,但是在模板渲染时,字体Source Sans Pro 不起作用,并渲染了回退sans-serif。请问,我怎样才能正确导入和使用谷歌下载的字体?
【问题讨论】:
-
您是否有任何理由想直接在资产管道中使用该字体?您可以将 google 字体链接添加到您的
src: google_font_link,我认为它仍会与您的样式一起编译 -
原因是加载字体的时间,如果我将字体添加到我的资产管道中,加载页面的时间会更快加载
-
是的,我明白这一点,但我的意思是,你添加的链接不是头部,而是
_font.scss文件,它将被编译,然后它会被缓存,所以它总是第一次编译后的部分资产,第一次编译后加载时间减少。@font-face { font-family: 'Source Sans Pro'; src: "https:googlefonts/sourcesanslink.ttf"; font-weight: normal; font-style: normal; }
标签: ruby-on-rails ruby fonts asset-pipeline assets