You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@font-face无法加载全部字体问题求助

解决@font-face仅加载常规字体的问题

你的@font-face定义本身是没问题的,结合Gulp+Sass的环境来看,问题大概率出在字体调用逻辑、资源路径处理或者编译优化上,给你几个具体的排查和解决方向:

1. 确认页面中是否正确指定了对应字体权重

浏览器只会加载当前页面实际用到的字体,如果你没有给元素明确设置匹配的font-weight,它只会默认加载font-weight: normal的Regular字体:

  • 要调用细体或粗体,必须在CSS/Sass里明确对应权重,比如:
    .title-bold {
      font-family: 'Atlas Grotesk';
      font-weight: bold; // 和@font-face里的bold对应
    }
    
    .text-thin {
      font-family: 'Atlas Grotesk';
      font-weight: 100; // 和@font-face里的100对应
    }
    
    注意:不能靠自定义类名或其他属性区分,必须通过font-weight和@font-face定义的值严格匹配。

2. 检查Gulp的字体文件路径同步

如果你的Gulp任务有处理静态资源,要确保字体文件被正确复制到编译后的目录,和CSS里的路径一致:

  • 比如源字体在src/fonts/,编译后的CSS在dist/css/,那字体必须被复制到dist/fonts/,否则CSS里的url('fonts/xxx')会找不到文件。
  • 可以在Gulp里添加一个同步字体的任务:
    gulp.task('copy-fonts', function() {
      return gulp.src('src/fonts/**/*')
        .pipe(gulp.dest('dist/fonts'));
    });
    
    记得把这个任务和Sass编译任务关联,确保每次编译都同步字体资源。

3. 排查Sass/CSS压缩优化的影响

部分Gulp插件(比如gulp-clean-css)会做冗余代码清除,如果页面暂时没有用到Thin和Bold字体,可能会把对应的@font-face规则删掉:

  • 测试阶段可以暂时关闭CSS压缩,或者在页面里添加隐藏的测试元素强制触发字体加载:
    <div style="font-family: 'Atlas Grotesk'; font-weight: 100; visibility: hidden;">测试细体</div>
    <div style="font-family: 'Atlas Grotesk'; font-weight: bold; visibility: hidden;">测试粗体</div>
    

4. 清理浏览器缓存

浏览器可能缓存了旧的CSS或字体文件,导致新的@font-face规则不生效:

  • 打开开发者工具(F12),在Network面板勾选Disable cache,刷新页面重新加载;
  • 或者给字体文件加版本号,比如url('fonts/hinted-AtlasGrotesk-Thin.woff2?v=1.0'),强制浏览器重新请求资源。

先从这几个方向排查,应该能解决问题~

内容的提问来源于stack exchange,提问作者Janus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:33:53