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

Next.js 15:如何单次导入多权重本地字体并全局复用

解决方案

你只需要在localFont配置中添加variable字段,将多权重字体绑定到同一个CSS变量,后续用法和单字体文件的全局传递逻辑完全一致:

  1. 配置字体并绑定CSS变量
    修改你的mPlus字体配置,新增variable属性指定自定义变量名:

    const mPlus = localFont({
      src: [
        {
          path: "./fonts/MPLUSRounded1cBold.ttf",
          weight: "700",
          style: "normal",
        },
        {
          path: "./fonts/MPLUSRounded1c.ttf",
          weight: "400",
          style: "normal",
        },
      ],
      variable: "--font-m-plus", // 绑定到自定义CSS变量
    });
    
  2. 在顶层布局全局注入变量
    和之前的Geist Sans一样,把字体变量添加到body的className中,让所有子组件都能访问:

    <body className={`${geistSans.variable} ${mPlus.variable} antialiased`}>
      {children}
    </body>
    
  3. 在组件中复用字体(自动匹配权重)
    现在可以在任意组件中通过CSS变量引用该字体,直接用font-weight指定对应权重即可,Next.js会自动匹配你配置的对应字体文件:

    {/* 400权重文本 */}
    <p className="font-[family-name:var(--font-m-plus)] font-normal">常规内容</p>
    {/* 700权重文本 */}
    <p className="font-[family-name:var(--font-m-plus)] font-bold">加粗内容</p>
    {/* 也可以直接指定weight数值 */}
    <p className="font-[family-name:var(--font-m-plus)]" style={{ fontWeight: 700 }}>加粗内容</p>
    

可选优化:Tailwind CSS自定义字体族

如果项目使用Tailwind,可以在配置文件中注册该字体,用起来更简洁:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{js,ts,jsx,tsx,mdx}',
    './components/**/*.{js,ts,jsx,tsx,mdx}',
    './app/**/*.{js,ts,jsx,tsx,mdx}',
  ],
  theme: {
    extend: {
      fontFamily: {
        'm-plus': ['var(--font-m-plus)'], // 注册自定义字体族
      },
    },
  },
  plugins: [],
};

之后直接用Tailwind类名即可:

<p className="font-m-plus font-normal">常规内容</p>
<p className="font-m-plus font-bold">加粗内容</p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:57:40