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

@next/font字体已下载但偶尔不渲染问题排查求助

Pacifico字体偶尔加载失败的修复方案(Next.js 13 + Tailwind CSS)

问题背景

网站Hero区域的“TWIST”文本指定使用Pacifico字体,但刷新页面时偶尔会出现字体未加载的异常。观察网络请求确认字体文件每次都能下载完成,但并非每次都能成功应用到目标文本上。当前使用@next/font v13.1.4版本,相关代码如下:

_app.tsx

import { ShopProvider } from '@/context/shopContext'
import '../styles/tailwind.css'
import type { AppProps } from 'next/app'
import { Montserrat, Pacifico } from '@next/font/google'

const montserrate = Montserrat({
  subsets: ['latin'],
  variable: '--font-montserrat',
})

const pacifico = Pacifico({
  subsets: ['latin'],
  variable: '--font-pacifico',
  weight: ['400'],
})

export default function App({ Component, pageProps }: AppProps) {
  return (
    <ShopProvider>
      <main
        className={`${montserrate.variable} ${pacifico.variable} font-sans`}
      >
        <Component {...pageProps} />
      </main>
    </ShopProvider>
  )
}

Hero区域代码

<h1 className="text-4xl font-semibold text-[#F15B50] lg:text-6xl">
     <span className="font-pacifico font-normal">TWIST</span> IT UP
</h1>

tailwind.config.js

const { fontFamily } = require('tailwindcss/defaultTheme')

/** @type {import('tailwindcss').Config} */

module.exports = {
  content: [
    './app/**/*.{js,ts,jsx,tsx}',
    './pages/**/*.{js,ts,jsx,tsx}',
    './components/**/*.{js,ts,jsx,tsx}',
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ['var(--font-montserrat)', ...fontFamily.sans],
        pacifico: ['var(--font-pacifico)', ...fontFamily.serif],
      },
    },
  },
  plugins: [
    require('@tailwindcss/forms'),
    require('@tailwindcss/aspect-ratio'),
  ],
}

修复步骤

1. 修正字体实例拼写错误

_app.tsx中Montserrat的实例命名存在拼写错误(montserrate应为montserrat),虽然不直接影响Pacifico,但可能导致样式优先级冲突,修正后代码:

const montserrat = Montserrat({
  subsets: ['latin'],
  variable: '--font-montserrat',
})

// 对应更新main的className
<main className={`${montserrat.variable} ${pacifico.variable} font-sans`}>

2. 显式设置字体加载策略

通过display属性强制字体加载行为,避免因浏览器字体加载优先级导致的未就绪问题:

const pacifico = Pacifico({
  subsets: ['latin'],
  variable: '--font-pacifico',
  weight: ['400'],
  display: 'swap', // 优先显示 fallback 字体,加载完成后替换
})

可选值说明:

  • swap:平衡加载速度与视觉一致性,适合大多数场景
  • block:等待字体加载完成后再渲染文本,避免字体切换闪烁

3. 优化Tailwind字体族的Fallback配置

调整Pacifico的fallback字体顺序,添加更匹配手写风格的cursive作为中间 fallback:

// tailwind.config.js
fontFamily: {
  sans: ['var(--font-montserrat)', ...fontFamily.sans],
  pacifico: ['var(--font-pacifico)', 'cursive', ...fontFamily.serif],
},

4. 验证字体变量作用域

在浏览器开发者工具中检查Hero区域的span元素,确认font-family已正确包含var(--font-pacifico),若未生效需排查样式是否被其他规则覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:23:18