Font-Modul
next/font
optimiert Ihre Schriften (einschließlich benutzerdefinierter Schriften) automatisch und entfernt externe Netzwerkanfragen für verbesserte Privatsphäre und Leistung.
Es beinhaltet integriertes automatisches Self-Hosting für jede Schriftdatei. Das bedeutet, Sie können Webfonts optimal laden, ohne Layoutverschiebungen zu verursachen.
Sie können auch bequem alle Google Fonts nutzen. CSS- und Schriftdateien werden zum Build-Zeitpunkt heruntergeladen und mit den restlichen statischen Assets selbst gehostet. Es werden keine Anfragen an Google vom Browser gesendet.
Um die Schrift auf allen Seiten zu verwenden, fügen Sie sie wie unten gezeigt zur _app.js
-Datei unter /pages
hinzu:
🎥 Video: Erfahren Sie mehr über die Verwendung von
next/font
→ YouTube (6 Minuten).
Referenz
Key | font/google | font/local | Typ | Erforderlich |
---|---|---|---|---|
src | String oder Array von Objekten | Ja | ||
weight | String oder Array | Erforderlich/Optional | ||
style | String oder Array | - | ||
subsets | Array von Strings | - | ||
axes | Array von Strings | - | ||
display | String | - | ||
preload | Boolean | - | ||
fallback | Array von Strings | - | ||
adjustFontFallback | Boolean oder String | - | ||
variable | String | - | ||
declarations | Array von Objekten | - |
src
Der Pfad der Schriftdatei als String oder ein Array von Objekten (mit dem Typ Array<{path: string, weight?: string, style?: string}>
) relativ zum Verzeichnis, in dem die Schriftlader-Funktion aufgerufen wird.
Verwendet in next/font/local
- Erforderlich
Beispiele:
src:'./fonts/my-font.woff2'
wobeimy-font.woff2
in einem Verzeichnis namensfonts
innerhalb desapp
-Verzeichnisses platziert istsrc:[{path: './inter/Inter-Thin.ttf', weight: '100',},{path: './inter/Inter-Regular.ttf',weight: '400',},{path: './inter/Inter-Bold-Italic.ttf', weight: '700',style: 'italic',},]
- Wenn die Schriftlader-Funktion in
app/page.tsx
mitsrc:'../styles/fonts/my-font.ttf'
aufgerufen wird, dann istmy-font.ttf
imstyles/fonts
-Verzeichnis im Stammverzeichnis des Projekts platziert
weight
Das Schrift-gewicht
mit folgenden Möglichkeiten:
- Ein String mit möglichen Werten der für die spezifische Schrift verfügbaren Gewichte oder ein Wertebereich, wenn es sich um eine variable Schrift handelt
- Ein Array von Gewichtswerten, wenn die Schrift keine variable Google-Schrift ist. Gilt nur für
next/font/google
.
Verwendet in next/font/google
und next/font/local
- Erforderlich, wenn die verwendete Schrift nicht variabel ist
Beispiele:
weight: '400'
: Ein String für einen einzelnen Gewichtswert - für die SchriftInter
sind die möglichen Werte'100'
,'200'
,'300'
,'400'
,'500'
,'600'
,'700'
,'800'
,'900'
oder'variable'
, wobei'variable'
der Standard istweight: '100 900'
: Ein String für den Bereich zwischen100
und900
für eine variable Schriftweight: ['100','400','900']
: Ein Array mit 3 möglichen Werten für eine nicht-variable Schrift
style
Der Schrift-stil
mit folgenden Möglichkeiten:
- Ein String-Wert mit dem Standardwert
'normal'
- Ein Array von Stilwerten, wenn die Schrift keine variable Google-Schrift ist. Gilt nur für
next/font/google
.
Verwendet in next/font/google
und next/font/local
- Optional
Beispiele:
style: 'italic'
: Ein String - kannnormal
oderitalic
fürnext/font/google
seinstyle: 'oblique'
: Ein String - kann jeden Wert fürnext/font/local
annehmen, wird aber von standardmäßigen Schriftstilen erwartetstyle: ['italic','normal']
: Ein Array mit 2 Werten fürnext/font/google
- die Werte sindnormal
unditalic
subsets
Die Schrift-subsets
, definiert durch ein Array von String-Werten mit den Namen der Subsets, die Sie vorladen möchten. Schriften, die über subsets
angegeben werden, erhalten einen Link-Preload-Tag im Head, wenn die preload
-Option aktiviert ist, was der Standard ist.
Verwendet in next/font/google
- Optional
Beispiele:
subsets: ['latin']
: Ein Array mit dem Subsetlatin
Eine Liste aller Subsets finden Sie auf der Google Fonts-Seite für Ihre Schrift.
axes
Einige variable Schriften haben zusätzliche axes
, die eingeschlossen werden können. Standardmäßig wird nur das Schriftgewicht eingeschlossen, um die Dateigröße gering zu halten. Die möglichen Werte von axes
hängen von der spezifischen Schrift ab.
Verwendet in next/font/google
- Optional
Beispiele:
axes: ['slnt']
: Ein Array mit dem Wertslnt
für die variable SchriftInter
, dieslnt
als zusätzlicheaxes
hat, wie hier gezeigt. Die möglichenaxes
-Werte für Ihre Schrift finden Sie, indem Sie den Filter auf der Google-Variable-Fonts-Seite verwenden und nach Achsen außerwght
suchen
display
Die Schrift-display
mit möglichen String-Werten von 'auto'
, 'block'
, 'swap'
, 'fallback'
oder 'optional'
mit dem Standardwert 'swap'
.
Verwendet in next/font/google
und next/font/local
- Optional
Beispiele:
display: 'optional'
: Ein String, der dem Wertoptional
zugewiesen ist
preload
Ein boolescher Wert, der angibt, ob die Schrift vor geladen werden soll oder nicht. Der Standardwert ist true
.
Verwendet in next/font/google
und next/font/local
- Optional
Beispiele:
preload: false
fallback
Die Fallback-Schrift, die verwendet wird, wenn die Schrift nicht geladen werden kann. Ein Array von Strings mit Fallback-Schriften ohne Standardwert.
- Optional
Verwendet in next/font/google
und next/font/local
Beispiele:
fallback: ['system-ui', 'arial']
: Ein Array, das die Fallback-Schriften aufsystem-ui
oderarial
setzt
adjustFontFallback
- Für
next/font/google
: Ein boolescher Wert, der festlegt, ob eine automatische Fallback-Schrift verwendet werden soll, um Cumulative Layout Shift zu reduzieren. Der Standardwert isttrue
. - Für
next/font/local
: Ein String oder boolescherfalse
-Wert, der festlegt, ob eine automatische Fallback-Schrift verwendet werden soll, um Cumulative Layout Shift zu reduzieren. Die möglichen Werte sind'Arial'
,'Times New Roman'
oderfalse
. Der Standardwert ist'Arial'
.
Verwendet in next/font/google
und next/font/local
- Optional
Beispiele:
adjustFontFallback: false
: fürnext/font/google
adjustFontFallback: 'Times New Roman'
: fürnext/font/local
variable
Ein String-Wert, der den CSS-Variablennamen definiert, der verwendet werden soll, wenn der Stil mit der CSS-Variablen-Methode angewendet wird.
Verwendet in next/font/google
und next/font/local
- Optional
Beispiele:
variable: '--my-font'
: Die CSS-Variable--my-font
wird deklariert
declarations
Ein Array von Schrift-Deskriptor-Schlüssel-Wert-Paaren, die das generierte @font-face
weiter definieren.
Verwendet in next/font/local
- Optional
Beispiele:
declarations: [{ prop: 'ascent-override', value: '90%' }]
Beispiele
Google Fonts
Um eine Google-Schrift zu verwenden, importieren Sie sie als Funktion aus next/font/google
. Wir empfehlen die Verwendung von variablen Schriften für die beste Leistung und Flexibilität.
Um die Schrift auf allen Seiten zu verwenden, fügen Sie sie wie unten gezeigt zur _app.js
-Datei unter /pages
hinzu:
Wenn Sie keine variable Schrift verwenden können, müssen Sie ein Gewicht angeben:
Sie können mehrere Gewichte und/oder Stile angeben, indem Sie ein Array verwenden:
Gut zu wissen: Verwenden Sie einen Unterstrich (_) für Schriften mit mehreren Wörtern. Zum Beispiel sollte
Roboto Mono
alsRoboto_Mono
importiert werden.
Schrift im <head>
anwenden
Sie können die Schrift auch ohne Wrapper und className
verwenden, indem Sie sie wie folgt in den <head>
einfügen:
Verwendung auf einer einzelnen Seite
Um die Schrift auf einer einzelnen Seite zu verwenden, fügen Sie sie wie unten gezeigt zur spezifischen Seite hinzu:
Angeben eines Subsets
Google Fonts werden automatisch subsetiert. Dies reduziert die Größe der Schriftdatei und verbessert die Leistung. Sie müssen definieren, welche dieser Subsets Sie vorladen möchten. Wenn Sie keine Subsets angeben, während preload
true
ist, wird eine Warnung ausgegeben.
Dies kann durch Hinzufügen zum Funktionsaufruf erfolgen:
Weitere Informationen finden Sie in der Font-API-Referenz.
Verwendung mehrerer Schriftarten
Sie können mehrere Schriftarten in Ihrer Anwendung importieren und verwenden. Es gibt zwei Ansätze, die Sie wählen können.
Der erste Ansatz besteht darin, eine Utility-Funktion zu erstellen, die eine Schriftart exportiert, importiert und deren className
dort anwendet, wo sie benötigt wird. Dadurch wird sichergestellt, dass die Schriftart nur vorab geladen wird, wenn sie gerendert wird:
Im obigen Beispiel wird Inter
global angewendet, und Roboto Mono
kann nach Bedarf importiert und angewendet werden.
Alternativ können Sie eine CSS-Variable erstellen und mit Ihrer bevorzugten CSS-Lösung verwenden:
Im obigen Beispiel wird Inter
global angewendet, und alle <h1>
-Tags werden mit Roboto Mono
formatiert.
Empfehlung: Verwenden Sie mehrere Schriftarten sparsam, da jede neue Schriftart eine zusätzliche Ressource ist, die der Client herunterladen muss.
Lokale Schriftarten
Importieren Sie next/font/local
und geben Sie das src
Ihrer lokalen Schriftartdatei an. Wir empfehlen die Verwendung von Variable Fonts für die beste Leistung und Flexibilität.
Wenn Sie mehrere Dateien für eine einzelne Schriftfamilie verwenden möchten, kann src
ein Array sein:
Weitere Informationen finden Sie in der Font API-Referenz.
Mit Tailwind CSS
next/font
integriert sich nahtlos mit Tailwind CSS über CSS-Variablen.
Im folgenden Beispiel verwenden wir die Schriftarten Inter
und Roboto_Mono
von next/font/google
(Sie können jede Google Font oder lokale Schriftart verwenden). Verwenden Sie die Option variable
, um einen CSS-Variablennamen zu definieren, z.B. inter
und roboto_mono
für diese Schriftarten. Wenden Sie dann inter.variable
und roboto_mono.variable
an, um die CSS-Variablen in Ihr HTML-Dokument einzubinden.
Gut zu wissen: Sie können diese Variablen dem
<html>
- oder<body>
-Tag hinzufügen, je nach Präferenz, Stilanforderungen oder Projektanforderungen.
Fügen Sie schließlich die CSS-Variable zu Ihrer Tailwind CSS-Konfiguration hinzu:
Tailwind CSS v4
Ab Tailwind v4 ist standardmäßig keine Konfiguration erforderlich. Falls Sie dennoch eine Konfiguration benötigen, können Sie der offiziellen Dokumentation für die Konfiguration der globalen CSS-Datei folgen.
Tailwind CSS v3
Sie können jetzt die Utility-Klassen font-sans
und font-mono
verwenden, um die Schriftart auf Ihre Elemente anzuwenden.
Anwendung von Stilen
Sie können die Schriftstile auf drei Arten anwenden:
className
Gibt eine schreibgeschützte CSS-className
für die geladene Schriftart zurück, die an ein HTML-Element übergeben werden kann.
style
Gibt ein schreibgeschütztes CSS-style
-Objekt für die geladene Schriftart zurück, das an ein HTML-Element übergeben werden kann, einschließlich style.fontFamily
für den Zugriff auf den Schriftartnamen und Fallback-Schriftarten.
CSS-Variablen
Wenn Sie Ihre Stile in einem externen Stylesheet festlegen und dort zusätzliche Optionen angeben möchten, verwenden Sie die CSS-Variablen-Methode.
Importieren Sie zusätzlich zur Schriftart auch die CSS-Datei, in der die CSS-Variable definiert ist, und setzen Sie die Variable-Option des Schriftladers wie folgt:
Um die Schriftart zu verwenden, setzen Sie die className
des übergeordneten Containers des zu formatierenden Texts auf den variable
-Wert des Schriftladers und die className
des Texts auf die styles
-Eigenschaft aus der externen CSS-Datei.
Definieren Sie die text
-Selector-Klasse in der component.module.css
-CSS-Datei wie folgt:
Im obigen Beispiel wird der Text Hallo Welt
mit der Schriftart Inter
und der generierten Fallback-Schriftart mit font-weight: 200
und font-style: italic
formatiert.
Verwendung einer Schriftart-Definitionsdatei
Jedes Mal, wenn Sie die localFont
- oder Google Font-Funktion aufrufen, wird diese Schriftart als eine Instanz in Ihrer Anwendung gehostet. Wenn Sie dieselbe Schriftart an mehreren Stellen verwenden müssen, sollten Sie sie daher an einer Stelle laden und das zugehörige Schriftart-Objekt dort importieren, wo Sie es benötigen. Dies geschieht über eine Schriftart-Definitionsdatei.
Erstellen Sie beispielsweise eine fonts.ts
-Datei in einem styles
-Ordner im Stammverzeichnis Ihres App-Verzeichnisses.
Geben Sie dann Ihre Schriftart-Definitionen wie folgt an:
Sie können diese Definitionen nun wie folgt in Ihrem Code verwenden:
Um den Zugriff auf die Schriftart-Definitionen in Ihrem Code zu erleichtern, können Sie einen Pfad-Alias in Ihren tsconfig.json
- oder jsconfig.json
-Dateien wie folgt definieren:
Sie können jetzt jede Schriftart-Definition wie folgt importieren:
Vorabladung
Wenn eine Schriftart-Funktion auf einer Seite Ihrer Website aufgerufen wird, ist sie nicht global verfügbar und wird nicht auf allen Routen vorab geladen. Stattdessen wird die Schriftart nur auf den relevanten Routen basierend auf dem Dateityp, in dem sie verwendet wird, vorab geladen:
- Wenn es sich um eine eindeutige Seite handelt, wird sie auf der eindeutigen Route für diese Seite vorab geladen.
- Wenn sie in der benutzerdefinierten App enthalten ist, wird sie auf allen Routen der Website unter
/pages
vorab geladen.
Versionsänderungen
Version | Änderungen |
---|---|
v13.2.0 | @next/font wurde in next/font umbenannt. Installation nicht mehr erforderlich. |
v13.0.0 | @next/font wurde hinzugefügt. |