Font-Modul
Diese API-Referenz hilft Ihnen zu verstehen, wie Sie next/font/google
und next/font/local
verwenden können. Für Funktionen und Anwendungsbeispiele lesen Sie bitte die Seite Optimierung von Fonts.
Argumente der Font-Funktion
Für die Verwendung siehe Google Fonts und Lokale Fonts.
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 Font-Datei als String oder ein Array von Objekten (vom Typ Array<{path: string, weight?: string, style?: string}>
) relativ zum Verzeichnis, in dem die Font-Loader-Funktion aufgerufen wird.
Wird in next/font/local
verwendet
- Erforderlich
Beispiele:
src:'./fonts/mein-font.woff2'
wobeimein-font.woff2
in einem Verzeichnis namensfonts
innerhalb desapp
-Verzeichnisses liegtsrc:[{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 Font-Loader-Funktion in
app/page.tsx
mitsrc:'../styles/fonts/mein-font.ttf'
aufgerufen wird, dann liegtmein-font.ttf
instyles/fonts
im Stammverzeichnis des Projekts
weight
Das Font-weight
mit folgenden Möglichkeiten:
- Ein String mit möglichen Werten der für den spezifischen Font verfügbaren Gewichte oder ein Wertebereich, wenn es sich um einen variablen Font handelt
- Ein Array von Gewichtswerten, wenn der Font kein variabler Google Font ist. Gilt nur für
next/font/google
.
Wird in next/font/google
und next/font/local
verwendet
- Erforderlich, wenn der verwendete Font nicht variabel ist
Beispiele:
weight: '400'
: Ein String für einen einzelnen Gewichtswert - für den FontInter
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 einen variablen Fontweight: ['100','400','900']
: Ein Array mit 3 möglichen Werten für einen nicht-variablen Font
style
Das Font-style
mit folgenden Möglichkeiten:
- Ein String-Wert mit dem Standardwert
'normal'
- Ein Array von Style-Werten, wenn der Font kein variabler Google Font ist. Gilt nur für
next/font/google
.
Wird in next/font/google
und next/font/local
verwendet
- Optional
Beispiele:
style: 'italic'
: Ein String - kannnormal
oderitalic
fürnext/font/google
seinstyle: 'oblique'
: Ein String - kann fürnext/font/local
jeden Wert annehmen, wird aber von standard Font-Styles erwartetstyle: ['italic','normal']
: Ein Array mit 2 Werten fürnext/font/google
- die Werte sindnormal
unditalic
subsets
Die Font-subsets
, definiert durch ein Array von String-Werten mit den Namen der einzelnen Subsets, die Sie preloaden möchten. Fonts, die über subsets
angegeben werden, erhalten einen Link-Preload-Tag im Head, wenn die preload
-Option aktiviert ist (Standard).
Wird in next/font/google
verwendet
- Optional
Beispiele:
subsets: ['latin']
: Ein Array mit dem Subsetlatin
Eine Liste aller Subsets finden Sie auf der Google Fonts-Seite für Ihren Font.
axes
Einige variable Fonts haben zusätzliche axes
, die eingeschlossen werden können. Standardmäßig ist nur das Font-Gewicht enthalten, um die Dateigröße gering zu halten. Die möglichen Werte von axes
hängen vom spezifischen Font ab.
Wird in next/font/google
verwendet
- Optional
Beispiele:
axes: ['slnt']
: Ein Array mit dem Wertslnt
für den variablen FontInter
, derslnt
als zusätzlicheaxes
hat, wie hier gezeigt. Die möglichenaxes
-Werte für Ihren Font finden Sie, indem Sie den Filter auf der Google variable fonts page verwenden und nach anderen Achsen alswght
suchen
display
Das Font-display
mit möglichen String-Werten von 'auto'
, 'block'
, 'swap'
, 'fallback'
oder 'optional'
mit dem Standardwert 'swap'
.
Wird in next/font/google
und next/font/local
verwendet
- Optional
Beispiele:
display: 'optional'
: Ein String mit dem Wertoptional
preload
Ein boolescher Wert, der angibt, ob der Font preloaded werden soll oder nicht. Standard ist true
.
Wird in next/font/google
und next/font/local
verwendet
- Optional
Beispiele:
preload: false
fallback
Der Fallback-Font, der verwendet wird, wenn der Font nicht geladen werden kann. Ein Array von Strings mit Fallback-Fonts ohne Standardwert.
- Optional
Wird in next/font/google
und next/font/local
verwendet
Beispiele:
fallback: ['system-ui', 'arial']
: Ein Array, das die Fallback-Fonts aufsystem-ui
oderarial
setzt
adjustFontFallback
- Für
next/font/google
: Ein boolescher Wert, der festlegt, ob ein automatischer Fallback-Font verwendet werden soll, um Cumulative Layout Shift zu reduzieren. Standard isttrue
. - Für
next/font/local
: Ein String oder boolescher Wertfalse
, der festlegt, ob ein automatischer Fallback-Font verwendet werden soll, um Cumulative Layout Shift zu reduzieren. Mögliche Werte sind'Arial'
,'Times New Roman'
oderfalse
. Standard ist'Arial'
.
Wird in next/font/google
und next/font/local
verwendet
- Optional
Beispiele:
adjustFontFallback: false
: fürnext/font/google
adjustFontFallback: 'Times New Roman'
: fürnext/font/local
variable
Ein String-Wert, um den Namen der CSS-Variable zu definieren, die verwendet werden soll, wenn der Style mit der CSS-Variablen-Methode angewendet wird.
Wird in next/font/google
und next/font/local
verwendet
- Optional
Beispiele:
variable: '--mein-font'
: Die CSS-Variable--mein-font
wird deklariert
declarations
Ein Array von Font-Face-Deskriptor-Schlüssel-Wert-Paaren, die das generierte @font-face
weiter definieren.
Wird in next/font/local
verwendet
- Optional
Beispiele:
declarations: [{ prop: 'ascent-override', value: '90%' }]
Anwendung von Styles
Sie können die Font-Styles auf drei Arten anwenden:
className
Gibt eine schreibgeschützte CSS-className
für den geladenen Font zurück, die an ein HTML-Element übergeben werden kann.
<p className={inter.className}>Hallo, Next.js!</p>
style
Gibt ein schreibgeschütztes CSS-style
-Objekt für den geladenen Font zurück, das an ein HTML-Element übergeben werden kann, einschließlich style.fontFamily
, um auf den Font-Namen und Fallback-Fonts zuzugreifen.
<p style={inter.style}>Hallo Welt</p>
CSS-Variablen
Wenn Sie Ihre Styles in einem externen Stylesheet festlegen und dort zusätzliche Optionen angeben möchten, verwenden Sie die CSS-Variablen-Methode.
Zusätzlich zum Importieren des Fonts importieren Sie auch die CSS-Datei, in der die CSS-Variable definiert ist, und setzen die Variable-Option des Font-Loader-Objekts wie folgt:
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',
})
Um den Font zu verwenden, setzen Sie die className
des übergeordneten Containers des Textes, den Sie stylen möchten, auf den variable
-Wert des Font-Loaders und die className
des Textes auf die styles
-Eigenschaft aus der externen CSS-Datei.
<main className={inter.variable}>
<p className={styles.text}>Hallo Welt</p>
</main>
<main className={inter.variable}>
<p className={styles.text}>Hallo Welt</p>
</main>
Definieren Sie die text
-Selector-Klasse in der component.module.css
-CSS-Datei wie folgt:
.text {
font-family: var(--font-inter);
font-weight: 200;
font-style: italic;
}
Im obigen Beispiel wird der Text Hallo Welt
mit dem Inter
-Font und dem generierten Font-Fallback mit font-weight: 200
und font-style: italic
gestylt.
Verwendung einer Font-Definitionsdatei
Jedes Mal, wenn Sie die localFont
- oder Google-Font-Funktion aufrufen, wird dieser Font als eine Instanz in Ihrer Anwendung gehostet. Wenn Sie denselben Font an mehreren Stellen verwenden müssen, sollten Sie ihn daher an einer Stelle laden und das zugehörige Font-Objekt dort importieren, wo Sie es benötigen. Dies geschieht mit einer Font-Definitionsdatei.
Erstellen Sie beispielsweise eine fonts.ts
-Datei in einem styles
-Ordner im Stammverzeichnis Ihres App-Verzeichnisses.
Dann geben Sie Ihre Font-Definitionen wie folgt an:
import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
// Definieren Sie Ihre variablen Fonts
const inter = Inter()
const lora = Lora()
// Definieren Sie 2 Gewichte eines nicht-variablen Fonts
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// Definieren Sie einen benutzerdefinierten lokalen Font, wo GreatVibes-Regular.ttf im styles-Ordner gespeichert ist
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'
// Definieren Sie Ihre variablen Fonts
const inter = Inter()
const lora = Lora()
// Definieren Sie 2 Gewichte eines nicht-variablen Fonts
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// Definieren Sie einen benutzerdefinierten lokalen Font, wo GreatVibes-Regular.ttf im styles-Ordner gespeichert ist
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }
Sie können diese Definitionen nun wie folgt in Ihrem Code verwenden:
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hallo Welt mit Inter-Font</p>
<p style={lora.style}>Hallo Welt mit Lora-Font</p>
<p className={sourceCodePro700.className}>
Hallo Welt mit Source_Sans_3-Font und Gewicht 700
</p>
<p className={greatVibes.className}>Mein Titel in Great Vibes-Font</p>
</div>
)
}
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hallo Welt mit Inter-Font</p>
<p style={lora.style}>Hallo Welt mit Lora-Font</p>
<p className={sourceCodePro700.className}>
Hallo Welt mit Source_Sans_3-Font und Gewicht 700
</p>
<p className={greatVibes.className}>Mein Titel in Great Vibes-Font</p>
</div>
)
}
Um den Zugriff auf die Font-Definitionen in Ihrem Code zu erleichtern, können Sie einen Pfad-Alias in Ihren tsconfig.json
- oder jsconfig.json
-Dateien wie folgt definieren:
{
"compilerOptions": {
"paths": {
"@/fonts": ["./styles/fonts"]
}
}
}
Sie können nun jede Font-Definition wie folgt importieren:
import { greatVibes, sourceCodePro400 } from '@/fonts'
import { greatVibes, sourceCodePro400 } from '@/fonts'
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. |