ruby-on-rails - Souce Sans Pro 字体不适用于开发 Rails 应用程序
问题描述
我正在构建一个 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
渲染了回退。请问,我怎样才能正确导入和使用谷歌下载的字体?
解决方案
字体格式(EOT、TTF、WOFF、SVG、WOFF2...)有很多选择!不幸的是,尽管格式多种多样,但没有一种适用于所有浏览器。这是什么意思?您必须使用多种字体格式来提供一致的体验。从此链接参考
这是设置谷歌字体的几个步骤(包括对您的设置的更正)
将 3 个字体文件(eot、svg 和 ttf)放在 app/assets/fonts/ 注释:不幸的是,谷歌只从google font web提供 ttf ,但您可以通过github raw或通过google font heroku 应用程序选择字体名称并下载,在这里是链接源sans pro
用这个 scss 调用字体文件(例如 app/assets/stylesheets/fonts.scss),这里你的设置不同。
@font-face { font-family: 'Source Sans Pro'; src: asset-url('source-sans-pro-v11-latin-regular.eot'); src: asset-url('source-sans-pro-v11-latin-regular.eot') format('embedded-opentype'), asset-url('source-sans-pro-v11-latin-regular.woff') format('woff'), asset-url('source-sans-pro-v11-latin-regular.ttf') format('truetype'), asset-url('source-sans-pro-v11-latin-regular.svg#Source Sans Pro') format('svg'); font-weight: normal; font-style: normal; }
从您的其他类(base/globals.scss)中调用字体系列名称
* { font-family: 'Source Sans Pro', sans-serif; }
通过您的 app/assets/application.scss 进行导入(这里对您的问题进行两个更正,不要使用 _fonts.scss 而是使用 fonts.scss 并使用 fonts.scss 而不是字体导入)
@import 'fonts.scss'; # make sure your call fonts.scss first before you use it @import 'base/globals.scss';
推荐阅读
- java - 如何映射 OneToOne 递归实体?
- fortran - 如何编写 fortran 代码来读取数据文件并打印某些行?
- python - 如何编写高效的自定义 Keras 数据生成器
- java - 未处理文件 ibm-web-bnd.xml 中定义的绑定
- azure - 如何从 Azure 中的不同订阅和租户 ID 提取 ACR 中可用的 docker 映像
- awk - 有没有办法替换某些字符的所有出现但仅在每第 n 行?
- html - 将徽标放在 Css 导航栏中
- dll - 使用静态构造函数链接 dll 时如何解析未解析的外部符号?
- java - 获得最长凸子序列的问题
- function - `elemIndex` 的 Haskell 折叠实现