Capítulo 363 de 456
next/font otimiza fontes automaticamente (Google Fonts ou arquivos locais) com self-hosting embutido: baixa CSS/arquivos em build time, elimina requests externos ao Google e evita layout shift, sem necessidade de instalar pacote adicional desde a v13.2.0.
next/font/google: importa qualquer Google Font como função; CSS e arquivos ficam self-hosted junto dos assets estáticos.next/font/local: carrega fonte local a partir de src (caminho ou array de {path, weight?, style?}).weight; caso contrário weight é obrigatório.className / style / CSS Variables: três formas de aplicar a fonte a um elemento.styles/fonts.ts) que define e reexporta instâncias de fonte, evitando recriar a mesma fonte em múltiplos lugares.pages/_app.js.import { Inter } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })
export default function MyApp({ Component, pageProps }) {
return (
<main className={inter.className}>
<Component {...pageProps} />
</main>
)
}
_app.js, sem especificar weight (fonte variável).import { Roboto } from 'next/font/google'
const roboto = Roboto({ weight: '400', subsets: ['latin'] })
weight explícito; pode ser array (weight: ['400', '700'], style: ['normal', 'italic']).import localFont from 'next/font/local'
const roboto = localFont({
src: [
{ path: './Roboto-Regular.woff2', weight: '400', style: 'normal' },
{ path: './Roboto-Bold.woff2', weight: '700', style: 'normal' },
],
})
src.const inter = Inter({ subsets: ['latin'], variable: '--font-inter' })
const roboto_mono = Roboto_Mono({ subsets: ['latin'], variable: '--font-roboto-mono' })
export default function MyApp({ Component, pageProps }) {
return (
<main className={`${inter.variable} ${roboto_mono.variable} font-sans`}>
<Component {...pageProps} />
</main>
)
}
@theme inline (v4) ou tailwind.config.js (v3).| Opção | font/google | font/local | Tipo | Obrigatório |
|---|---|---|---|---|
src | não | sim | String ou Array de Objetos | Sim (local) |
weight | sim | sim | String ou Array | Obrigatório se não-variável |
style | sim | sim | String ou Array | - |
subsets | sim | não | Array de Strings | - |
axes | sim | não | Array de Strings | - |
display | sim | sim | String (default 'swap') | - |
preload | sim | sim | Boolean (default true) | - |
fallback | sim | sim | Array de Strings | - |
adjustFontFallback | sim | sim | Boolean ou String | - |
variable | sim | sim | String | - |
declarations | não | sim | Array de Objetos | - |
weight: erro de configuração — variável é obrigatória quando a fonte não é variable font.Roboto Mono deve ser importado como Roboto_Mono.weight só é opcional para variable fonts; caso contrário é obrigatório.variable option) é o caminho recomendado para integração com Tailwind CSS.next/font embutido, sem instalação (@next/font foi renomeado).pages/_app.js): local típico para aplicar fonte globalmente no Pages Router.variable.