Fonts 如何在Rails 4中使用字体
我有一个Rails 4应用程序,我正在尝试使用自定义字体 我已经学习了很多关于这个的教程,但不知怎么的,它对我的应用程序不起作用 我正在使用Fonts 如何在Rails 4中使用字体,fonts,asset-pipeline,ruby-on-rails-4,Fonts,Asset Pipeline,Ruby On Rails 4,我有一个Rails 4应用程序,我正在尝试使用自定义字体 我已经学习了很多关于这个的教程,但不知怎么的,它对我的应用程序不起作用 我正在使用application.css.less,并有以下声明: @font-face { font-family: 'HDVPeace'; src: font-url('HDV_Peace.eot'); src: font-url('HDV_Peace.eot?iefix') format('eot'), font-url(
application.css.less
,并有以下声明:
@font-face {
font-family: 'HDVPeace';
src: font-url('HDV_Peace.eot');
src: font-url('HDV_Peace.eot?iefix') format('eot'),
font-url('HDV_Peace.woff') format('woff'),
font-url('HDV_Peace.ttf') format('truetype'),
font-url('HDV_Peace.svg#webfont') format('svg');
}
注意:我也尝试过使用url()
而不是font-url()
。前者在控制台上生成404个错误,后者似乎什么都不做。在“资源”下的“chrome开发工具”中,字体文件不会出现在assets
文件夹下或任何地方
在myconfig/application.rb
中,我有:
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf)
我的字体文件位于app/assets/fonts
,不包含在下面的文件夹中
我错过了什么
更新:
文件夹结构
app
└── assets
└── fonts
├── HDV_Peace.eot
├── HDV_Peace.svg
├── HDV_Peace.ttf
└── HDV_Peace.woff
您的
@font-face
声明非常接近,您只是缺少url声明中的/assets
前缀
@font-face {
font-family: 'HDVPeace';
src: url('/assets/HDV_Peace.eot');
src: url('/assets/HDV_Peace.eot?iefix') format('eot'),
url('/assets/HDV_Peace.woff') format('woff'),
url('/assets/HDV_Peace.ttf') format('truetype'),
url('/assets/HDV_Peace.svg#webfont') format('svg');
}
在开发和生产中,添加到/assets.path
的任何内容都可以直接在/assets
路径下使用。您只需要application.rb
中的资产路径修改行,在development.rb
和production.rb
中再次执行该操作是多余的
此外,所有字体格式基本上都是二进制的。无需预编译它们,因此您可以安全地删除
资产。预编译
添加。我发现这篇文章解决了我所有的问题
忘记在您的应用程序.rb中更改Rails 4中的任何内容。只需像@Parker Selbert所说的那样添加/assets/前缀,以下内容就可以了:
@font-face {
font-family: 'custom-font-name';
src: font-url('/assets/_folder_/fontX-webfont.eot');
src: font-url('/assets/_folder_/fontX-webfont.eot?#iefix') format('embedded-opentype'),
font-url('/assets/_folder_/fontX-webfont.woff') format('woff'),
font-url('/assets/_folder_/fontX-webfont.ttf') format('truetype'),
font-url('/assets/_folder_/fontX-webfont.svg#sociconregular') format('svg');
font-weight: normal;
font-style: normal;
}
请不要对字体目录进行硬编码,因为位置是动态的 就像有图像的内置帮助器一样,也有字体的内置帮助器: 例如:
@font-face {
font-family: 'QuicksandOTF';
src: font_url('Quicksand-Regular.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
在Rails 4中,有一个帮助程序来设置字体的路径 如果您在/assets/fonts或vendor/assets/fonts中有字体,Rails 4将找到它们!为了利用这一点,在引导CSS文件中将@font\u face调用更改为
@font-face {
font-family: 'Glyphicons Halflings';
src: font-url('glyphicons-halflings-regular.eot');
src: font-url('glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),
font-url('glyphicons-halflings-regular.woff') format('woff'),
font-url('glyphicons-halflings-regular.ttf') format('truetype'),
font-url('glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
请注意,字体文件前面没有文件夹规范。这是由rails助手完成的。在创建app/assets/fonts目录后重新启动“rails服务器”有时从
assets/fonts
目录中检测不到字体
如果安全性不是问题,我们可以将
font
目录放入公用文件夹。然后,它们将在公共/
级别上可用。这在Rails 4.1应用程序上对我很有效
如果你们在Rails 5中使用字体有问题,只需编辑
app/assets/config/manifest.js
然后插入此/=link_tree../font
如何使用:
@font-face{
字体系列:“FontAwesome”;
src:url('fontoweasome-webfont.eot?v=4.6.3');
src:url('fontawesome-webfont.eot?#iefix&v=4.6.3')格式('embedded-opentype')、url('fontawesome-webfont.woff2?v=4.6.3')格式('woff2')、url('fontawesome-webfont.woff?v=4.6.3')格式('truetype')、url('fontawesome-webfont.svg?v=4.6.3')格式('svg');
字体大小:正常;
字体风格:普通;
}
另外,别忘了重新启动服务器。我刚刚查看了在Rails 4上使用自定义字体设置的一个应用程序。看起来甚至没有必要在路径中添加
字体。删除路径
添加,重新启动,它应该可以正常工作。已尝试并重新启动服务器。没有变化。在Chrome的开发工具中的Sources下(其中显示服务器下推到客户端的所有资产),我没有看到字体文件或fonts文件夹。此外,控制台仍然返回404未找到资源错误。。。不知何故,资产管道没有拾取文件…字体url
应该自己添加/assets
前缀,因此不需要指定它。我认为问题在于Rails4不再在资产管道中放置字体版本(没有摘要)。正因为如此,你不能相信/assets/HDV_Peace.eot存在(它在Rails3中存在,现在只有/assets/HDV_Peace-yourdigesthere.eot存在。)请参阅了解更多详细信息我发现只需要一个新的Rails 4应用程序:font-url('fontfile.eot?')。需要重新启动服务器,以便在app/assets下创建字体方向后使其工作。只想注意,您无法使用“字体”属性使其工作。必须指定:font系列:“HDVPeace”
在application.css.less文件中。浪费了整整20分钟的时间试图找出问题所在,希望这能节省一些人的时间和精力:)下面是一个使用Rails 4和Bourbon为字体设置资产路径的极好方法:(无需编辑application.rb、production.rb或staging.rb中的任何内容。)如果要手动处理字体,可能会重复,以下是我为Rails应用程序构建的解决方案:我在中编写了一种诊断和解决此问题的通用方法。将使用字体url帮助器方法(以及任何帮助器方法)搜索/assets下的任何目录,因此不需要放置“/assets/\u folder”。Rails指南中说:“2.2.1搜索路径当从清单或助手引用文件时,链轮将在三个默认资产位置搜索该文件。默认位置是:app/assets文件夹下的images、javascripts和stylesheets目录,但这些子目录并不特殊-将搜索assets/*下的任何路径“font-url和其他解决方案对我不起作用,但是font\u-url(带下划线)起作用
@font-face {
font-family: 'icomoon';
src: url(font-path('icomoon.eot') + "?#iefix") format('embedded-opentype'),
url(font-path('icomoon.woff')) format('woff'),
url(font-path('icomoon.ttf')) format('truetype'),
url(font-path('icomoon.svg') + "#icomoon") format('svg');
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'icomoon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}