Skip to main content
Практика завдань

Оптимізація шрифтів (next/font) у Next.js

Що таке next/font?

next/font — це вбудована система оптимізації шрифтів у Next.js. Вона автоматично самостійно хостить шрифти (включаючи Google Fonts), усуває зовнішні запити до мережі та запобігає зсуву макета (CLS) за допомогою автоматичного size-adjust.


Google Fonts

tsx
// app/layout.tsx import { Inter, Roboto_Mono } from "next/font/google"; const inter = Inter({ subsets: ["latin", "cyrillic"], display: "swap", variable: "--font-inter", }); const robotoMono = Roboto_Mono({ subsets: ["latin"], display: "swap", variable: "--font-roboto-mono", }); export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en" className={`${inter.variable} ${robotoMono.variable}`}> <body className={inter.className}> {children} </body> </html> ); }

Локальні шрифти

tsx
import localFont from "next/font/local"; const myFont = localFont({ src: [ { path: "./fonts/MyFont-Regular.woff2", weight: "400", style: "normal" }, { path: "./fonts/MyFont-Bold.woff2", weight: "700", style: "normal" }, { path: "./fonts/MyFont-Italic.woff2", weight: "400", style: "italic" }, ], display: "swap", variable: "--font-my-font", });

Використання CSS змінних

tsx
// layout.tsx — застосування змінної <html className={inter.variable}> // У CSS/Tailwind // globals.css body { font-family: var(--font-inter), sans-serif; } code { font-family: var(--font-roboto-mono), monospace; } // tailwind.config.ts module.exports = { theme: { extend: { fontFamily: { sans: ["var(--font-inter)"], mono: ["var(--font-roboto-mono)"], }, }, }, };

Основні параметри

ПараметрОписПриклад
subsetsНабори символів для включення["latin", "cyrillic"]
weightВаги шрифтів для завантаження["400", "700"] або "variable"
displayЗначення CSS font-display"swap", "block", "auto"
variableІм'я CSS кастомної властивості"--font-inter"
preloadПопереднє завантаження шрифту (за замовчуванням: true)true / false
fallbackРезервні сімейства шрифтів["system-ui", "arial"]
adjustFontFallbackАвтоматичне регулювання розміру для резервного шрифтуtrue / false

Як це працює

  1. Час збірки: Next.js завантажує файли шрифтів
  2. Самостійно хостинг: Шрифти подаються з вашого домену (без зовнішніх запитів)
  3. size-adjust: Автоматичний CSS size-adjust для мінімізації CLS
  4. Попереднє завантаження: Файли шрифтів попередньо завантажуються для швидкого рендерингу

Переваги

  • Без зовнішніх запитів — шрифти самостійно хостяться (відповідає GDPR, швидше)
  • Нульовий зсув макета — автоматичний size-adjust для резервних шрифтів
  • Автоматичне підмноження — завантажуються лише символи, які вам потрібні
  • Кешування — незмінні файли шрифтів з довгими заголовками кешу
  • Без спалаху неформатованого тексту — попередньо завантажено та оптимізовано

Важливо:

next/font усуває проблеми з продуктивністю веб-шрифтів: немає зовнішніх запитів до мережі, немає зсуву макета та автоматична оптимізація. Завжди використовуйте його замість ручного завантаження Google Fonts через теги <link>. Використовуйте CSS змінні (параметр variable) для максимальної гнучкості з Tailwind CSS.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань