Module de police
next/font
optimise automatiquement vos polices (y compris les polices personnalisées) et supprime les requêtes réseau externes pour améliorer la confidentialité et les performances.
Il inclut l'hébergement automatique intégré pour tout fichier de police. Cela signifie que vous pouvez charger les polices web de manière optimale sans décalage de mise en page.
Vous pouvez également utiliser commodément toutes les Google Fonts. Les fichiers CSS et de police sont téléchargés au moment de la construction et hébergés avec le reste de vos ressources statiques. Aucune requête n'est envoyée à Google par le navigateur.
🎥 Regarder : En savoir plus sur l'utilisation de
next/font
→ YouTube (6 minutes).
Référence
Clé | font/google | font/local | Type | Requis |
---|---|---|---|---|
src | String ou Array d'Objects | Oui | ||
weight | String ou Array | Requis/Optionnel | ||
style | String ou Array | - | ||
subsets | Array de Strings | - | ||
axes | Array de Strings | - | ||
display | String | - | ||
preload | Boolean | - | ||
fallback | Array de Strings | - | ||
adjustFontFallback | Boolean ou String | - | ||
variable | String | - | ||
declarations | Array d'Objects | - |
src
Le chemin du fichier de police sous forme de chaîne ou d'un tableau d'objets (de type Array<{path: string, weight?: string, style?: string}>
) relatif au répertoire où la fonction de chargement de police est appelée.
Utilisé dans next/font/local
- Requis
Exemples :
src:'./fonts/my-font.woff2'
oùmy-font.woff2
est placé dans un répertoire nomméfonts
à l'intérieur du répertoireapp
src:[{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 fonction de chargement de police est appelée dans
app/page.tsx
avecsrc:'../styles/fonts/my-font.ttf'
, alorsmy-font.ttf
est placé dansstyles/fonts
à la racine du projet
weight
Le poids
de la police avec les possibilités suivantes :
- Une chaîne avec les valeurs possibles des poids disponibles pour la police spécifique ou une plage de valeurs s'il s'agit d'une police variable
- Un tableau de valeurs de poids si la police n'est pas une google font variable. S'applique uniquement à
next/font/google
.
Utilisé dans next/font/google
et next/font/local
- Requis si la police utilisée n'est pas variable
Exemples :
weight: '400'
: Une chaîne pour une seule valeur de poids - pour la policeInter
, les valeurs possibles sont'100'
,'200'
,'300'
,'400'
,'500'
,'600'
,'700'
,'800'
,'900'
ou'variable'
où'variable'
est la valeur par défaut)weight: '100 900'
: Une chaîne pour la plage entre100
et900
pour une police variableweight: ['100','400','900']
: Un tableau de 3 valeurs possibles pour une police non variable
style
Le style
de la police avec les possibilités suivantes :
- Une chaîne valeur avec la valeur par défaut
'normal'
- Un tableau de valeurs de style si la police n'est pas une google font variable. S'applique uniquement à
next/font/google
.
Utilisé dans next/font/google
et next/font/local
- Optionnel
Exemples :
style: 'italic'
: Une chaîne - peut êtrenormal
ouitalic
pournext/font/google
style: 'oblique'
: Une chaîne - peut prendre n'importe quelle valeur pournext/font/local
mais est censée provenir des styles de police standardstyle: ['italic','normal']
: Un tableau de 2 valeurs pournext/font/google
- les valeurs sontnormal
etitalic
subsets
Les subsets
de la police définis par un tableau de chaînes avec les noms de chaque sous-ensemble que vous souhaitez précharger. Les polices spécifiées via subsets
auront une balise de préchargement injectée dans l'en-tête lorsque l'option preload
est vraie, ce qui est la valeur par défaut.
Utilisé dans next/font/google
- Optionnel
Exemples :
subsets: ['latin']
: Un tableau avec le sous-ensemblelatin
Vous pouvez trouver une liste de tous les sous-ensembles sur la page Google Fonts pour votre police.
axes
Certaines polices variables ont des axes
supplémentaires qui peuvent être inclus. Par défaut, seul le poids de la police est inclus pour réduire la taille du fichier. Les valeurs possibles de axes
dépendent de la police spécifique.
Utilisé dans next/font/google
- Optionnel
Exemples :
axes: ['slnt']
: Un tableau avec la valeurslnt
pour la police variableInter
qui aslnt
commeaxes
supplémentaire comme indiqué ici. Vous pouvez trouver les valeurs possibles deaxes
pour votre police en utilisant le filtre sur la page des polices variables de Google et en cherchant les axes autres quewght
display
Le display
de la police avec les valeurs de chaîne possibles 'auto'
, 'block'
, 'swap'
, 'fallback'
ou 'optional'
avec la valeur par défaut 'swap'
.
Utilisé dans next/font/google
et next/font/local
- Optionnel
Exemples :
display: 'optional'
: Une chaîne assignée à la valeuroptional
preload
Une valeur booléenne qui spécifie si la police doit être préchargée ou non. La valeur par défaut est true
.
Utilisé dans next/font/google
et next/font/local
- Optionnel
Exemples :
preload: false
fallback
La police de secours à utiliser si la police ne peut pas être chargée. Un tableau de chaînes de polices de secours sans valeur par défaut.
- Optionnel
Utilisé dans next/font/google
et next/font/local
Exemples :
fallback: ['system-ui', 'arial']
: Un tableau définissant les polices de secours àsystem-ui
ouarial
adjustFontFallback
- Pour
next/font/google
: Une valeur booléenne qui définit si une police de secours automatique doit être utilisée pour réduire le Cumulative Layout Shift. La valeur par défaut esttrue
. - Pour
next/font/local
: Une chaîne ou une valeur booléennefalse
qui définit si une police de secours automatique doit être utilisée pour réduire le Cumulative Layout Shift. Les valeurs possibles sont'Arial'
,'Times New Roman'
oufalse
. La valeur par défaut est'Arial'
.
Utilisé dans next/font/google
et next/font/local
- Optionnel
Exemples :
adjustFontFallback: false
: pournext/font/google
adjustFontFallback: 'Times New Roman'
: pournext/font/local
variable
Une valeur de chaîne pour définir le nom de la variable CSS à utiliser si le style est appliqué avec la méthode des variables CSS.
Utilisé dans next/font/google
et next/font/local
- Optionnel
Exemples :
variable: '--my-font'
: La variable CSS--my-font
est déclarée
declarations
Un tableau de paires clé-valeur de descripteurs de face de police qui définissent davantage la @font-face
générée.
Utilisé dans next/font/local
- Optionnel
Exemples :
declarations: [{ prop: 'ascent-override', value: '90%' }]
Exemples
Google Fonts
Pour utiliser une Google Font, importez-la depuis next/font/google
en tant que fonction. Nous recommandons d'utiliser des polices variables pour les meilleures performances et flexibilité.
Si vous ne pouvez pas utiliser une police variable, vous devrez spécifier un poids :
Vous pouvez spécifier plusieurs poids et/ou styles en utilisant un tableau :
Bon à savoir : Utilisez un trait de soulignement (_) pour les noms de police avec plusieurs mots. Par exemple,
Roboto Mono
doit être importé commeRoboto_Mono
.
Spécifier un sous-ensemble
Les Google Fonts sont automatiquement subset. Cela réduit la taille du fichier de police et améliore les performances. Vous devrez définir quels sous-ensembles vous souhaitez précharger. Ne pas spécifier de sous-ensemble alors que preload
est true
entraînera un avertissement.
Cela peut être fait en l'ajoutant à l'appel de fonction :
Consultez la Référence de l'API Font pour plus d'informations.
Utilisation de plusieurs polices
Vous pouvez importer et utiliser plusieurs polices dans votre application. Il existe deux approches possibles.
La première approche consiste à créer une fonction utilitaire qui exporte une police, l'importe et applique sa className
là où c'est nécessaire. Cela garantit que la police est préchargée uniquement lorsqu'elle est rendue :
Dans l'exemple ci-dessus, Inter
sera appliqué globalement, et Roboto Mono
peut être importé et appliqué selon les besoins.
Alternativement, vous pouvez créer une variable CSS et l'utiliser avec votre solution CSS préférée :
Dans l'exemple ci-dessus, Inter
sera appliqué globalement, et toutes les balises <h1>
seront stylisées avec Roboto Mono
.
Recommandation : Utilisez plusieurs polices avec parcimonie, car chaque nouvelle police est une ressource supplémentaire que le client doit télécharger.
Polices locales
Importez next/font/local
et spécifiez le src
de votre fichier de police locale. Nous recommandons d'utiliser des polices variables (variable fonts) pour une meilleure performance et flexibilité.
Si vous souhaitez utiliser plusieurs fichiers pour une seule famille de polices, src
peut être un tableau :
Consultez la référence de l'API Font pour plus d'informations.
Avec Tailwind CSS
next/font
s'intègre parfaitement avec Tailwind CSS en utilisant des variables CSS.
Dans l'exemple ci-dessous, nous utilisons les polices Inter
et Roboto_Mono
de next/font/google
(vous pouvez utiliser n'importe quelle police Google ou locale). Utilisez l'option variable
pour définir un nom de variable CSS, comme inter
et roboto_mono
pour ces polices, respectivement. Ensuite, appliquez inter.variable
et roboto_mono.variable
pour inclure les variables CSS dans votre document HTML.
Bon à savoir : Vous pouvez ajouter ces variables à la balise
<html>
ou<body>
, selon vos préférences, besoins de style ou exigences du projet.
Enfin, ajoutez la variable CSS à votre configuration Tailwind CSS :
Tailwind CSS v4
Depuis Tailwind v4, aucune configuration n'est requise par défaut. Si vous avez besoin de configurer Tailwind, vous pouvez suivre la documentation officielle pour configurer le fichier CSS global.
Tailwind CSS v3
Vous pouvez maintenant utiliser les classes utilitaires font-sans
et font-mono
pour appliquer la police à vos éléments.
Application des styles
Vous pouvez appliquer les styles de police de trois manières :
className
Retourne une className
CSS en lecture seule pour la police chargée à passer à un élément HTML.
style
Retourne un objet style
CSS en lecture seule pour la police chargée à passer à un élément HTML, incluant style.fontFamily
pour accéder au nom de la famille de police et aux polices de secours.
Variables CSS
Si vous souhaitez définir vos styles dans une feuille de style externe et y spécifier des options supplémentaires, utilisez la méthode des variables CSS.
En plus d'importer la police, importez également le fichier CSS où la variable CSS est définie et définissez l'option variable
de l'objet chargeur de police comme suit :
Pour utiliser la police, définissez la className
du conteneur parent du texte que vous souhaitez styliser sur la valeur variable
du chargeur de police et la className
du texte sur la propriété styles
du fichier CSS externe.
Définissez la classe de sélecteur text
dans le fichier CSS component.module.css
comme suit :
Dans l'exemple ci-dessus, le texte Bonjour le monde
est stylisé avec la police Inter
et la police de secours générée avec font-weight: 200
et font-style: italic
.
Utilisation d'un fichier de définitions de polices
Chaque fois que vous appelez la fonction localFont
ou une police Google, cette police sera hébergée comme une instance unique dans votre application. Par conséquent, si vous avez besoin d'utiliser la même police à plusieurs endroits, vous devez la charger à un seul endroit et importer l'objet de police associé là où vous en avez besoin. Cela se fait en utilisant un fichier de définitions de polices.
Par exemple, créez un fichier fonts.ts
dans un dossier styles
à la racine de votre répertoire app
.
Ensuite, spécifiez vos définitions de polices comme suit :
Vous pouvez maintenant utiliser ces définitions dans votre code comme suit :
Pour faciliter l'accès aux définitions de polices dans votre code, vous pouvez définir un alias de chemin dans vos fichiers tsconfig.json
ou jsconfig.json
comme suit :
Vous pouvez maintenant importer n'importe quelle définition de police comme suit :
Préchargement
Lorsqu'une fonction de police est appelée sur une page de votre site, elle n'est pas disponible globalement et préchargée sur toutes les routes. Au lieu de cela, la police est préchargée uniquement sur les routes associées en fonction du type de fichier où elle est utilisée :
- Si c'est une page unique, elle est préchargée sur la route unique de cette page.
- Si c'est une disposition (layout), elle est préchargée sur toutes les routes englobées par la disposition.
- Si c'est la disposition racine (root layout), elle est préchargée sur toutes les routes.
Changements de version
Version | Changements |
---|---|
v13.2.0 | @next/font renommé en next/font . L'installation n'est plus requise. |
v13.0.0 | @next/font a été ajouté. |