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

NextJS 14中使用Chakra UI加载本地Woff2字体的正确方法

Next.js 14 App Router + Chakra UI 加载本地Woff2字体的正确方案

1. 字体文件放置

将你的自定义woff/woff2字体文件放到项目根目录的public/fonts文件夹下,Next.js会自动将该目录下的文件作为可公开访问的静态资源。

2. 用Emotion Global注入@font-face规则

基于你原本的Chakra UI方案,修正资源路径(public下的资源需从根路径开始引用),创建全局字体样式组件:

import { Global } from '@emotion/react'

const Fonts = () => (
  <Global
    styles={`
      @font-face {
        font-family: 'Heading Font Name';
        font-style: normal;
        font-weight: 700;
        font-display: swap;
        src: url('/fonts/custom.woff2') format('woff2'), url('/fonts/custom.woff') format('woff');
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
      }
      /* 可添加更多字体权重或样式的@font-face规则 */
    `}
  />
)

export default Fonts

3. 在RootLayout中使用Metadata API预加载字体(替代next/head)

App Router不再支持next/head,需通过Metadata API配置字体预加载,同时引入上面的Fonts组件:

import { Providers } from './providers'
import Fonts from './fonts'

// 配置字体预加载的metadata
export const metadata = {
  links: [
    {
      rel: 'preload',
      href: '/fonts/custom.woff2',
      as: 'font',
      type: 'font/woff2',
      crossOrigin: 'anonymous',
    },
    // 如果需要预加载woff文件,可添加对应条目
  ],
}

const RootLayout = ({ children }) => {
  return (
    <html lang="en">
      <body>
        <Fonts />
        <Providers>{children}</Providers>
      </body>
    </html>
  )
}

export default RootLayout

4. 在Chakra UI主题中配置全局字体

将自定义字体注册到Chakra UI主题,确保整个应用的组件都能使用该字体:

// app/providers.jsx
import { ChakraProvider, extendTheme } from '@chakra-ui/react'

const theme = extendTheme({
  fonts: {
    heading: "'Heading Font Name', sans-serif",
    body: "'Your Body Font Name', sans-serif", // 若有正文字体可配置
  },
})

export function Providers({ children }) {
  return <ChakraProvider theme={theme}>{children}</ChakraProvider>
}

内容的提问来源于stack exchange,提问作者GʀᴜᴍᴘʏCᴀᴛ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:27:39