Módulo de Fuentes
Esta referencia de API te ayudará a entender cómo usar next/font/google y next/font/local. Para características y uso, consulta la página Optimización de Fuentes.
Argumentos de la Función de Fuente
Para el uso, revisa Fuentes de Google y Fuentes Locales.
| Clave | font/google | font/local | Tipo | Requerido |
|---|---|---|---|---|
src | String o Array de Objetos | Sí | ||
weight | String o Array | Requerido/Opcional | ||
style | String o Array | - | ||
subsets | Array de Strings | - | ||
axes | Array de Strings | - | ||
display | String | - | ||
preload | Boolean | - | ||
fallback | Array de Strings | - | ||
adjustFontFallback | Boolean o String | - | ||
variable | String | - | ||
declarations | Array de Objetos | - |
src
La ruta del archivo de fuente como string o un array de objetos (con tipo Array<{path: string, weight?: string, style?: string}>) relativa al directorio donde se llama a la función de carga de fuente.
Usado en next/font/local
- Requerido
Ejemplos:
src:'./fonts/mi-fuente.woff2'dondemi-fuente.woff2se coloca en un directorio llamadofontsdentro del directorioappsrc:[{path: './inter/Inter-Thin.ttf', weight: '100',},{path: './inter/Inter-Regular.ttf',weight: '400',},{path: './inter/Inter-Bold-Italic.ttf', weight: '700',style: 'italic',},]- si la función de carga de fuente se llama en
app/page.tsxusandosrc:'../styles/fonts/mi-fuente.ttf', entoncesmi-fuente.ttfse coloca enstyles/fontsen la raíz del proyecto
weight
El peso de la fuente con las siguientes posibilidades:
- Un string con los valores posibles de los pesos disponibles para la fuente específica o un rango de valores si es una fuente variable
- Un array de valores de peso si la fuente no es una fuente variable de Google. Aplica solo para
next/font/google.
Usado en next/font/google y next/font/local
- Requerido si la fuente usada no es variable
Ejemplos:
weight: '400': Un string para un solo valor de peso - para la fuenteInter, los valores posibles son'100','200','300','400','500','600','700','800','900'o'variable'donde'variable'es el predeterminado)weight: '100 900': Un string para el rango entre100y900para una fuente variableweight: ['100','400','900']: Un array de 3 valores posibles para una fuente no variable
style
El estilo de la fuente con las siguientes posibilidades:
- Un string con valor predeterminado de
'normal' - Un array de valores de estilo si la fuente no es una fuente variable de Google. Aplica solo para
next/font/google.
Usado en next/font/google y next/font/local
- Opcional
Ejemplos:
style: 'italic': Un string - puede sernormaloitalicparanext/font/googlestyle: 'oblique': Un string - puede tomar cualquier valor paranext/font/localpero se espera que provenga de estilos de fuente estándarstyle: ['italic','normal']: Un array de 2 valores paranext/font/google- los valores son denormaleitalic
subsets
Los subconjuntos de fuente definidos por un array de valores string con los nombres de cada subconjunto que deseas que sean precargados. Las fuentes especificadas mediante subsets tendrán una etiqueta de precarga de enlace inyectada en el encabezado cuando la opción preload sea true, que es el valor predeterminado.
Usado en next/font/google
- Opcional
Ejemplos:
subsets: ['latin']: Un array con el subconjuntolatin
Puedes encontrar una lista de todos los subconjuntos en la página de Google Fonts para tu fuente.
axes
Algunas fuentes variables tienen ejes adicionales que se pueden incluir. Por defecto, solo se incluye el peso de la fuente para mantener el tamaño del archivo pequeño. Los valores posibles de axes dependen de la fuente específica.
Usado en next/font/google
- Opcional
Ejemplos:
axes: ['slnt']: Un array con el valorslntpara la fuente variableInterque tieneslntcomoaxesadicional como se muestra aquí. Puedes encontrar los valores posibles deaxespara tu fuente usando el filtro en la página de fuentes variables de Google y buscando ejes además dewght
display
El display de la fuente con posibles valores string de 'auto', 'block', 'swap', 'fallback' o 'optional' con valor predeterminado de 'swap'.
Usado en next/font/google y next/font/local
- Opcional
Ejemplos:
display: 'optional': Un string asignado al valoroptional
preload
Un valor booleano que especifica si la fuente debe ser precargada o no. El valor predeterminado es true.
Usado en next/font/google y next/font/local
- Opcional
Ejemplos:
preload: false
fallback
La fuente de respaldo que se usará si no se puede cargar la fuente. Un array de strings de fuentes de respaldo sin valor predeterminado.
- Opcional
Usado en next/font/google y next/font/local
Ejemplos:
fallback: ['system-ui', 'arial']: Un array que establece las fuentes de respaldo ensystem-uioarial
adjustFontFallback
- Para
next/font/google: Un valor booleano que establece si se debe usar una fuente de respaldo automática para reducir el Cambio Acumulativo de Diseño (CLS). El valor predeterminado estrue. - Para
next/font/local: Un string o valor booleanofalseque establece si se debe usar una fuente de respaldo automática para reducir el Cambio Acumulativo de Diseño (CLS). Los valores posibles son'Arial','Times New Roman'ofalse. El valor predeterminado es'Arial'.
Usado en next/font/google y next/font/local
- Opcional
Ejemplos:
adjustFontFallback: false: paranext/font/googleadjustFontFallback: 'Times New Roman': paranext/font/local
variable
Un valor string para definir el nombre de la variable CSS que se usará si el estilo se aplica con el método de variables CSS.
Usado en next/font/google y next/font/local
- Opcional
Ejemplos:
variable: '--mi-fuente': Se declara la variable CSS--mi-fuente
declarations
Un array de pares clave-valor de descriptores de fuente que definen más el @font-face generado.
Usado en next/font/local
- Opcional
Ejemplos:
declarations: [{ prop: 'ascent-override', value: '90%' }]
Aplicación de Estilos
Puedes aplicar los estilos de fuente de tres maneras:
className
Devuelve un className CSS de solo lectura para la fuente cargada que se pasará a un elemento HTML.
<p className={inter.className}>¡Hola, Next.js!</p>style
Devuelve un objeto style CSS de solo lectura para la fuente cargada que se pasará a un elemento HTML, incluyendo style.fontFamily para acceder al nombre de la familia de fuentes y las fuentes de respaldo.
<p style={inter.style}>Hola Mundo</p>Variables CSS
Si deseas establecer tus estilos en una hoja de estilo externa y especificar opciones adicionales allí, usa el método de variables CSS.
Además de importar la fuente, también importa el archivo CSS donde se define la variable CSS y establece la opción variable del objeto de carga de fuente de la siguiente manera:
import { Inter } from 'next/font/google'
import styles from '../styles/component.module.css'
const inter = Inter({
variable: '--font-inter',
})import { Inter } from 'next/font/google'
import styles from '../styles/component.module.css'
const inter = Inter({
variable: '--font-inter',
})Para usar la fuente, establece el className del contenedor principal del texto que deseas estilizar en el valor variable del cargador de fuente y el className del texto en la propiedad styles del archivo CSS externo.
<main className={inter.variable}>
<p className={styles.text}>Hola Mundo</p>
</main><main className={inter.variable}>
<p className={styles.text}>Hola Mundo</p>
</main>Define la clase selector text en el archivo CSS component.module.css de la siguiente manera:
.text {
font-family: var(--font-inter);
font-weight: 200;
font-style: italic;
}En el ejemplo anterior, el texto Hola Mundo se estiliza usando la fuente Inter y la fuente de respaldo generada con font-weight: 200 y font-style: italic.
Usando un archivo de definiciones de fuente
Cada vez que llamas a la función localFont o a la función de fuente de Google, esa fuente se alojará como una instancia en tu aplicación. Por lo tanto, si necesitas usar la misma fuente en múltiples lugares, debes cargarla en un solo lugar e importar el objeto de fuente relacionado donde lo necesites. Esto se hace usando un archivo de definiciones de fuente.
Por ejemplo, crea un archivo fonts.ts en una carpeta styles en la raíz de tu directorio app.
Luego, especifica tus definiciones de fuente de la siguiente manera:
import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
// define tus fuentes variables
const inter = Inter()
const lora = Lora()
// define 2 pesos de una fuente no variable
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// define una fuente local personalizada donde GreatVibes-Regular.ttf se almacena en la carpeta styles
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
// define tus fuentes variables
const inter = Inter()
const lora = Lora()
// define 2 pesos de una fuente no variable
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// define una fuente local personalizada donde GreatVibes-Regular.ttf se almacena en la carpeta styles
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }Ahora puedes usar estas definiciones en tu código de la siguiente manera:
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hola mundo usando la fuente Inter</p>
<p style={lora.style}>Hola mundo usando la fuente Lora</p>
<p className={sourceCodePro700.className}>
Hola mundo usando la fuente Source_Sans_3 con peso 700
</p>
<p className={greatVibes.className}>Mi título en fuente Great Vibes</p>
</div>
)
}import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hola mundo usando la fuente Inter</p>
<p style={lora.style}>Hola mundo usando la fuente Lora</p>
<p className={sourceCodePro700.className}>
Hola mundo usando la fuente Source_Sans_3 con peso 700
</p>
<p className={greatVibes.className}>Mi título en fuente Great Vibes</p>
</div>
)
}Para facilitar el acceso a las definiciones de fuente en tu código, puedes definir un alias de ruta en tus archivos tsconfig.json o jsconfig.json de la siguiente manera:
{
"compilerOptions": {
"paths": {
"@/fonts": ["./styles/fonts"]
}
}
}Ahora puedes importar cualquier definición de fuente de la siguiente manera:
import { greatVibes, sourceCodePro400 } from '@/fonts'import { greatVibes, sourceCodePro400 } from '@/fonts'Cambios de Versión
| Versión | Cambios |
|---|---|
v13.2.0 | @next/font renombrado a next/font. Ya no se requiere instalación. |
v13.0.0 | Se agregó @next/font. |