Jekyll中FontAwesome字体未被浏览器请求的问题求助
解决Jekyll中FontAwesome字体未被浏览器请求的问题
我来帮你拆解这个问题——你遇到的核心现象是:浏览器只会加载页面中实际被使用的字体资源,哪怕CSS里定义了@font-face规则,如果没有对应的元素应用了该字体,浏览器就不会发起请求。而OpenSans能被正常请求,大概率是因为主题默认就在页面的标题、正文等元素里使用了这个字体。
下面是具体的排查和解决步骤:
1. 确认页面是否实际使用了FontAwesome图标
浏览器不会为“闲置”的字体规则浪费请求,所以首先检查你的HTML代码里有没有使用FontAwesome的图标类:
- 比如品牌图标需要用
fab前缀,像<i class="fab fa-github"></i>; - 如果是免费的 solid 图标,需要额外引入对应的
solid.scss并使用fas前缀,比如<i class="fas fa-star"></i>。
如果只是引入了SCSS但没有在页面里放置任何图标元素,浏览器完全不会去加载FontAwesome的字体文件。
2. 验证FontAwesome的SCSS引入路径与字体文件路径
虽然你提到编译后的CSS包含@font-face规则,但还是要确认路径是否正确:
- 检查
hello.scss中@import "./vendor/fontawesome/..."的路径,确保vendor/fontawesome目录确实在assets/css/目录下(和hello.scss同级); - 打开编译后的
hello.css,找到FontAwesome的@font-face部分,查看src属性里的URL是否指向正确的字体文件位置。比如应该是类似url("/assets/webfonts/fa-brands-400.woff2")这样的路径,要确保字体文件确实被部署到了这个位置。
3. 检查CSS样式是否被覆盖
用浏览器开发者工具(F12)选中你添加的FontAwesome图标元素,查看**计算样式(Computed)**里的font-family:
- 确认它包含了FontAwesome对应的字体名称,比如品牌图标应该是
"Font Awesome 5 Brands"; - 如果
font-family被其他CSS规则覆盖成了OpenSans或者其他字体,那图标就不会使用FontAwesome的字体,自然也不会触发字体请求。
4. 确认Jekyll的Include配置生效
检查_config.yml里的include配置,确保FontAwesome的字体文件目录被包含在Jekyll的构建范围内。比如如果字体文件放在vendor/fontawesome/webfonts/,那配置应该包含:
include: - vendor/fontawesome/webfonts
这样Jekyll才会把这些字体文件复制到最终的部署目录中,确保CSS里的URL能访问到它们。
快速测试方法
最直接的验证方式:在页面的某个位置添加一个明确的FontAwesome品牌图标,比如:
<i class="fab fa-github"></i>
然后刷新页面,查看浏览器的网络请求面板——如果图标样式正确显示,且网络请求里出现了FontAwesome的字体文件,那问题就解决了;如果还是没请求,再回头检查上述路径和样式覆盖的问题。
内容的提问来源于stack exchange,提问作者Pierre
相关产品推荐
相关产品推荐

