next.js 首次访问或下次js刷新时未加载字体

wnvonmuf  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在使用@next/font/google来优化我的项目的性能。但是我遇到了一些问题,字体在第一次访问或刷新页面时没有加载。
我的实现
pages/_appjs

import { Alegreya_Sans, Montserrat, IBM_Plex_Sans } from "@next/font/google";
const alegreya = Alegreya_Sans({
  weight: ["100", "300", "400", "500", "700"],
  variable: "--alegreya-font",
});
const montserrat = Montserrat({
  weight: "700",
  variable: "--montserrat-font",
});
const ibmSans = IBM_Plex_Sans({
  weight: ["400", "600"],
  variable: "--ibmSans-font",
});

function MyApp({ Component, pageProps }) {
  return (
    <>
      <style jsx global>{`
        :root {
          --alegreya-font: ${alegreya.style.fontFamily};
          --ibmSans-font: ${ibmSans.style.fontFamily};
          --montserrat-font: ${montserrat.style.fontFamily};
        }
      `}</style>
      <Component
        {...pageProps}
        isDarkTheme={isDark}
        setAllCategories={(value) => {
          setAllCategories(value);
        }}
        isMobile={isMobile}
      />
    </>
  );
}

export default MyApp;

有没有人能找出我在上面的代码中遗漏了什么?

csga3l58

csga3l581#

我找到了上面的解决方案。我在字体示例中缺少显示属性。代码如下所示

const alegreya = Alegreya_Sans({
  weight: ['100', '300', '400', '500', '700'],
  variable: '--alegreya-font',
  display: 'swap'
});
const montserrat = Montserrat({
  weight: '700',
  variable: '--montserrat-font',
  display: 'swap'
});
const ibmSans = IBM_Plex_Sans({
  weight: ['400', '600'],
  variable: '--ibmSans-font',
  display: 'swap'
});

显示属性是缺少的参数,这对我来说是解决问题。现在字体在刷新或第一次访问时加载。

相关问题