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

Safari浏览器font-weight:400显示过粗问题技术求助

Safari中Fakt字体400权重显示过粗的问题排查与解决

问题现象

自托管的自定义字体Fakt在Safari浏览器中,font-weight:400的文本显示明显过粗,视觉效果接近500或600权重,但在Chrome等其他浏览器中显示正常。

Chrome显示效果

Chrome显示效果

Safari显示效果

Safari显示效果

当前字体声明代码

@font-face {
  font-family: Fakt;
  font-display: swap;
  font-weight: 500;
  src: url('./fonts/FaktMedium.woff2') format('woff2');
}

@font-face {
  font-family: Fakt;
  src: url('./fonts/Fakt-Bold.woff2');
  font-display: swap;
  font-weight: bold;
}

@font-face {
  font-family: Fakt;
  font-display: swap;
  font-weight: 400;
  src: url('./fonts/FaktNormal.woff2') format('woff2');
}

@font-face {
  font-family: Fakt;
  font-display: swap;
  font-weight: 300;
  src: url('./fonts/Fakt-Blond.woff2') format('woff2');
}

@font-face {
  font-family: Fakt;
  font-display: swap;
  font-weight: 300;
  font-style: italic;
  src: url('./fonts/Fakt-BlondItalic.woff2') format('woff2');
}

目标文本应用样式

font-family: fakt, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen-sans, ubuntu, cantarell, "Helvetica Neue", sans-serif;
font-feature-settings: normal;
font-size: 16px;
font-style: normal;
font-synthesis-small-caps: none;
font-synthesis-style: none;
font-synthesis-weight: none;
font-variant-ligatures: none;
font-weight: 400;
height: 22px;
letter-spacing: normal;
line-height: 22.4px;
text-rendering: optimizelegibility;
text-transform: none;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0px;

排查与解决思路

  • 检查字体元数据:Safari对字体元数据解析更严格,可能FaktNormal.woff2的OS/2表中usWeightClass字段被错误标记为500而非400,用FontForge、Glyphs等工具打开字体文件修正该字段。
  • 统一font-weight数值写法:将声明中的font-weight: bold替换为700,同时补充Fakt-Bold.woff2的format('woff2')声明,避免Safari权重匹配混淆:
    @font-face {
      font-family: Fakt;
      src: url('./fonts/Fakt-Bold.woff2') format('woff2');
      font-display: swap;
      font-weight: 700;
    }
    
  • 调整Safari专属渲染属性:修改-webkit-font-smoothing和text-rendering值,避免optimizelegibility触发额外加粗逻辑:
    @media screen and (-webkit-min-device-pixel-ratio: 0) {
      .target-text {
        -webkit-font-smoothing: subpixel-antialiased;
        text-rendering: optimizeSpeed;
      }
    }
    
  • 重新导出标准字体文件:用Google的woff2_compress工具重新压缩FaktNormal字体,确保文件格式无损坏,符合浏览器兼容标准。
  • 显式指定字体拉伸属性:在400权重的@font-face声明中添加font-stretch: normal,防止Safari自动拉伸字体导致视觉加粗:
    @font-face {
      font-family: Fakt;
      font-display: swap;
      font-weight: 400;
      font-stretch: normal;
      src: url('./fonts/FaktNormal.woff2') format('woff2');
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:58:13