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

Next.js中Google Fonts权重传数组与字符串的差异探究

Next.js中Google Fonts字重参数的区别解析
// 代码1:传入字重数组
const notoSans = Noto_Sans_EN({
  weight: ['500', '400'],
  subsets: ['latin'],
});

// 代码2:传入单个字重字符串
const notoSans = Noto_Sans_EN({
  weight: '400',
  subsets: ['latin'],
});

一、传入数组与单个字符串的核心区别

  • 传入数组时:会一次性加载数组内所有指定的字重(示例中是400常规、500半粗),页面后续可以直接使用这些字重的原生字体,无需额外请求。
  • 传入单个字符串时:仅加载指定的单个字重(示例中仅400常规),其他未加载的字重无法直接调用原生字体文件。

二、CSS指定font-weight: bold时效果不同的原因

CSS里的font-weight: bold默认映射的是700字重,但你的两段代码都未加载700字重,浏览器的处理逻辑因此产生差异:

  • 对于代码1(加载了400+500):浏览器会在已加载的字重中选择最接近700的选项,也就是500半粗。这是字体厂商设计的原生半粗字重,笔画粗细均匀、边缘清晰。
  • 对于代码2(仅加载400):没有更接近的原生粗体字重可用,浏览器会自动对400常规字体做像素级加粗模拟——强行拉伸字体笔画实现粗体效果,这种模拟出来的粗体边缘发虚、笔画不均匀,和原生设计的粗体质感差异明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:04:57