بهینه‌سازی فونت‌ها در Next.js – بارگذاری محلی، فونت‌های گوگل و عملکرد بدون جابه‌جایی

ماژول next/font در Next.js امکان بارگذاری بهینه فونت‌ها را فراهم می‌کند و درخواست‌های خارجی را حذف می‌کند. این مقاله نحوهٔ استفاده از فونت‌های گوگل به‌صورت self-host، بارگذاری فونت‌های محلی، و اعمال فونت به کل اپلیکیشن با کلاس‌های خودکار را بررسی می‌کند. همچنین نحوهٔ استفاده از فونت‌های متغیر و چند فایل برای یک خانواده فونت توضیح داده شده است.

Google FontsLocal Fontsnext/fontSelf-hosted fonts

~2 min read · Updated Oct 25, 2025

معرفی ماژول next/font


ماژول next/font فونت‌ها را به‌صورت خودکار بهینه‌سازی می‌کند و درخواست‌های خارجی را حذف می‌کند. این ماژول فونت‌ها را به‌صورت self-host بارگذاری می‌کند و از جابه‌جایی چیدمان جلوگیری می‌کند.


نحوهٔ استفاده


برای استفاده، فونت را از next/font/google یا next/font/local وارد کرده و به‌صورت تابعی فراخوانی کنید. سپس کلاس تولیدشده را به تگ <html> یا عنصر مورد نظر اعمال کنید:


// app/layout.tsx
import { Geist } from 'next/font/google'

const geist = Geist({ subsets: ['latin'] })

export default function Layout({ children }) {
  return (
    <html lang="en" className={geist.className}>
      <body>{children}</body>
    </html>
  )
}

فونت‌های گوگل


با استفاده از next/font/google می‌توان فونت‌های گوگل را به‌صورت self-host بارگذاری کرد. این فونت‌ها به‌عنوان فایل‌های استاتیک در دامنهٔ خودتان سرو می‌شوند و هیچ درخواست مستقیمی به گوگل ارسال نمی‌شود.


برای عملکرد بهتر، استفاده از فونت‌های متغیر توصیه می‌شود. اگر فونت متغیر در دسترس نیست، باید وزن را مشخص کنید:


// app/layout.tsx
import { Roboto } from 'next/font/google'

const roboto = Roboto({ weight: '400', subsets: ['latin'] })

export default function RootLayout({ children }) {
  return (
    <html lang="en" className={roboto.className}>
      <body>{children}</body>
    </html>
  )
}

فونت‌های محلی


برای استفاده از فونت‌های محلی، از next/font/local استفاده کنید و مسیر فایل فونت را مشخص نمایید. فونت‌ها می‌توانند در پوشهٔ public یا کنار فایل‌های app قرار بگیرند:


// app/layout.tsx
import localFont from 'next/font/local'

const myFont = localFont({ src: './my-font.woff2' })

export default function RootLayout({ children }) {
  return (
    <html lang="en" className={myFont.className}>
      <body>{children}</body>
    </html>
  )
}

استفاده از چند فایل برای یک خانواده فونت


می‌توان چند فایل با وزن و استایل مختلف برای یک خانواده فونت تعریف کرد:


const roboto = localFont({
  src: [
    { path: './Roboto-Regular.woff2', weight: '400', style: 'normal' },
    { path: './Roboto-Italic.woff2', weight: '400', style: 'italic' },
    { path: './Roboto-Bold.woff2', weight: '700', style: 'normal' },
    { path: './Roboto-BoldItalic.woff2', weight: '700', style: 'italic' },
  ],
})

جمع‌بندی


ماژول next/font در Next.js راهکاری ساده و قدرتمند برای بارگذاری بهینه فونت‌هاست. با استفاده از فونت‌های گوگل به‌صورت self-host یا فونت‌های محلی، می‌توان عملکرد اپلیکیشن را افزایش داد، از جابه‌جایی چیدمان جلوگیری کرد، و تجربه‌ای سریع و زیبا برای کاربر فراهم ساخت.


Written & researched by Dr. Shahin Siami

Related Articles

مسیریابی پیشرفته و هوک‌های عملکرد در Next.js — راهنمای توسعه‌دهنده برای App Router

Next.js مجموعه‌ای غنی از هوک‌های کلاینت و ابزارهای کش و ناوبری را در اختیار توسعه‌دهندگان قرار می‌دهد. از خواندن پارامترهای مسیر تا گزارش Web Vitals و مدیریت کش، این مقاله مهم‌ترین ابزارهای App Router را با مثال‌های کاربردی معرفی می‌کند.

Continue

مدیریت احراز هویت و کش در Next.js — راهنمای توسعه‌دهنده برای امنیت و عملکرد پویا

Next.js با معرفی قابلیت‌های آزمایشی جدید، امکان کنترل دقیق‌تر دسترسی و کش داده‌ها را فراهم کرده است. تابع unauthorized برای مدیریت خطای 401 و هدایت کاربران به صفحه ورود، unstable_cache برای کش هوشمند عملیات سنگین، updateTag برای بازسازی آنی داده‌ها، و useLinkStatus برای نمایش وضعیت ناوبری استفاده می‌شوند. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات مهم بررسی می‌کند.

Continue

redirect و refresh در Next.js — ریدایرکت‌های هوشمند و تازه‌سازی مسیر در Server Actions

تابع redirect در Next.js برای هدایت کاربر به مسیر جدید استفاده می‌شود و بسته به نوع استفاده، پاسخ HTTP با وضعیت 307 یا 303 ارسال می‌کند. این تابع در Server Components، Client Components، Route Handlers و Server Actions قابل استفاده است. تابع refresh نیز برای تازه‌سازی مسیر کلاینت از درون Server Action استفاده می‌شود. این مقاله نحوه استفاده از هر دو تابع را با مثال‌های کاربردی و نکات مهم توضیح می‌دهد.

Continue

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

Continue

headers، ImageResponse، notFound و permanentRedirect در Next.js — مدیریت درخواست‌ها، تولید تصویر، خطا و ریدایرکت

Next.js ابزارهای قدرتمندی برای مدیریت درخواست‌ها و پاسخ‌ها در کامپوننت‌های سروری فراهم کرده است. تابع headers برای خواندن هدرهای HTTP ورودی، ImageResponse برای تولید تصاویر داینامیک، notFound برای نمایش صفحه خطای 404، و permanentRedirect برای ریدایرکت دائمی کاربران استفاده می‌شوند. این مقاله نحوه استفاده از هر یک را با مثال‌های کاربردی توضیح می‌دهد.

Continue

راهنمای کامل استفاده از metadata و generateMetadata در Next.js

در نسخه‌های مدرن Next.js، مدیریت metadata صفحات بسیار قدرتمندتر و ساده‌تر شده است. metadata به‌صورت خودکار در تگ <head> صفحات تزریق می‌شود و نقش مهمی در SEO، اشتراک‌گذاری اجتماعی و تجربه کاربری دارد. این مقاله دو روش اصلی تعریف metadata را بررسی می‌کند: استفاده از آبجکت ثابت metadata و تابع داینامیک generateMetadata.

Continue