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

Next.js 13:如何用@next/font正确配置谷歌字体多字重?

解决@next/font多字重仅400生效的问题

问题核心

@next/font对谷歌字体的字重参数要求传入字符串数组,若使用数字数组会导致仅默认400字重生效,这就是你遇到字体显示偏轻的原因。

具体解决步骤

1. 移除旧CDN导入

删除./styles/global.css中的谷歌字体导入语句:

/* 删掉该行 */
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800;900&display=swap");

2. 在pages/_app.tsx中正确配置字体

导入Poppins字体并传入字符串格式的字重数组,同时全局应用字体:

import type { AppProps } from 'next/app';
import { Poppins } from '@next/font/google';

// 配置Poppins字体,字重使用字符串数组
const poppins = Poppins({
  weight: ['400', '500', '600', '700', '800', '900'],
  subsets: ['latin'], // 根据业务需求选择字体子集
});

export default function MyApp({ Component, pageProps }: AppProps) {
  // 将字体className全局绑定到根容器
  return (
    <div className={poppins.className}>
      <Component {...pageProps} />
    </div>
  );
}

3. 验证元素字重设置

确保页面中需要对应字重的元素已正确设置font-weight属性,比如:

.title {
  font-weight: 700; /* 匹配配置中的700字重 */
}

备选方案:用CSS变量全局控制

如果习惯通过CSS管理字体,可启用variable选项:

const poppins = Poppins({
  weight: ['400', '500', '600', '700', '800', '900'],
  subsets: ['latin'],
  variable: '--font-poppins', // 定义全局CSS变量
});

在_app.tsx根元素绑定变量类名,并在global.css中设置全局字体:

export default function MyApp({ Component, pageProps }: AppProps) {
  return (
    <div className={poppins.variable}>
      <Component {...pageProps} />
    </div>
  );
}
/* global.css */
body {
  font-family: var(--font-poppins);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:03