v1.5.0 · سازگار با Next.js ۱۳.۲ تا ۱۶
فونتهای فارسی، آماده برای Next.js
۴۴ خانوادهٔ فونت فارسی رایگان، داخل خود پکیج، بدون گوگل و CDN؛ حتی وقتی اینترنت بینالملل قطع است، سایت و build شما کار میکند. برای Vite، Astro و HTML ساده هم فایل CSS دارد.
نگران حجم نباشید: با نصب پکیج همهٔ فونتها بارگذاری نمیشوند. فقط فونتی که ایمپورت میکنید (مثلاً next-persian-fonts/estedad) وارد build و صفحه میشود.
- خانوادهٔ فونت
- ۴۴
- نسخه (FD، متغیر و…)
- ۶۱
- فونت Google، آفلاین
- ۲۵
پیشنمایش زنده
گالری فونتها
۴۴ خانواده
هر کارت یک خانواده است؛ نسخهها (ارقام فارسی FD، متغیر، نقطهٔ گرد، ایتالیک) را داخل کارت انتخاب کنید.
وزیرمتن Vazirmatn
Saber Rastikerdar
متغیر ۱۰۰–۹۰۰Google Fonts · آفلاینv33.003زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { vazirmatnVariable } from 'next-persian-fonts/vazirmatn-variable'ساحل Sahel
Saber Rastikerdar
۵ وزنارقام فارسی (FD)v3.4.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { sahelFD } from 'next-persian-fonts/sahel-fd'استعداد Estedad
Amin Abedi
متغیر ۱۰۰–۹۰۰Google Fonts · آفلاینv8.5زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { estedad } from 'next-persian-fonts/estedad'صمیم Samim
Saber Rastikerdar
۳ وزنارقام فارسی (FD)v4.0.5زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { samimFD } from 'next-persian-fonts/samim-fd'شبنم Shabnam
Saber Rastikerdar
۵ وزنارقام فارسی (FD)v5.0.1زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { shabnamFD } from 'next-persian-fonts/shabnam-fd'تنها Tanha
Saber Rastikerdar
وزن ۴۰۰ارقام فارسی (FD)v0.10زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { tanhaFD } from 'next-persian-fonts/tanha-fd'پرستو Parastoo
Saber Rastikerdar
۲ وزنارقام فارسی (FD)Google Fonts · آفلاینv2.0.1زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { parastooFD } from 'next-persian-fonts/parastoo-fd'گندم Gandom
Saber Rastikerdar
وزن ۴۰۰ارقام فارسی (FD)v0.8زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { gandomFD } from 'next-persian-fonts/gandom-fd'میخک Mikhak
Amin Abedi
متغیر ۱۰۰–۹۰۰ارقام فارسی (FD)v3.4زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { mikhakFD } from 'next-persian-fonts/mikhak-fd'آراد Arad
Mohamad Darvishi
متغیر ۱۰۰–۱۰۰۰ارقام فارسی (FD)v2.5.1زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { aradFD } from 'next-persian-fonts/arad-fd'وزیر کد Vazir Code
Saber Rastikerdar
وزن ۴۰۰ارقام فارسی (FD)v1.1.2زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { vazirCodeFD } from 'next-persian-fonts/vazir-code-fd'بهداد Behdad
Mohammad Saleh Souzanchi (Font Store)
وزن ۴۰۰فقط فارسیv1.0.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { behdad } from 'next-persian-fonts/behdad'نیکا Nika
Mohammad Saleh Souzanchi (Font Store)
وزن ۴۰۰فقط فارسیv1.0.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { nika } from 'next-persian-fonts/nika'سپهر Sepehr
Saeed Rezaee, Saber Rastikerdar
۵ وزنv1.000زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { sepehr } from 'next-persian-fonts/sepehr'سورنا Sorena
Mohamad Darvishi
وزن ۴۰۰ارقام فارسی (FD)v1.2.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { sorenaFD } from 'next-persian-fonts/sorena-fd'گنجنامه Ganjnameh
Mohammad Saleh Souzanchi
وزن ۴۰۰v0.0.4زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { ganjnameh } from 'next-persian-fonts/ganjnameh'شهاب Shahab
Mohammad Saleh Souzanchi
وزن ۴۰۰v0.0.2زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { shahab } from 'next-persian-fonts/shahab'ناهید Nahid
Saber Rastikerdar
وزن ۴۰۰ارقام فارسی (FD)v0.3.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { nahidFD } from 'next-persian-fonts/nahid-fd'نرمال سنس Normal Sans
Azad Qalam
متغیر ۱۰۰–۹۰۰v1.0.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { normalSans } from 'next-persian-fonts/normal-sans'آریو Ario
Mohamad Darvishi
وزن ۴۰۰ارقام فارسی (FD)v2.0.1زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { arioFD } from 'next-persian-fonts/ario-fd'رویین Rooyin
Mohamad Darvishi
۲ وزنارقام فارسی (FD)v1.1زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { rooyinFD } from 'next-persian-fonts/rooyin-fd'نقطه Noqte
Mehdi Sadeghi
وزن ۵۰۰v0.1.0-beta4زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { noqte } from 'next-persian-fonts/noqte'لالهزار Lalezar
Borna Izadpanah
وزن ۴۰۰Google Fonts · آفلاینv1.004زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { lalezar } from 'next-persian-fonts/lalezar'مرکزی Markazi Text
Borna Izadpanah
متغیر ۴۰۰–۷۰۰Google Fonts · آفلاینv1.001زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { markaziText } from 'next-persian-fonts/markazi-text'میرزا Mirza
KB-Studio (Kourosh Beigpour)
۴ وزنGoogle Fonts · آفلاینv1.0010gزندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { mirza } from 'next-persian-fonts/mirza'ریم کوفی Reem Kufi
Khaled Hosny (Alif Type)
متغیر ۴۰۰–۷۰۰Google Fonts · آفلاینv2.000زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { reemKufi } from 'next-persian-fonts/reem-kufi'نوتو نسخ Noto Naskh Arabic
Google (Noto project)
متغیر ۴۰۰–۷۰۰Google Fonts · آفلاینv2.021زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { notoNaskhArabic } from 'next-persian-fonts/noto-naskh-arabic'نوتو سنس عربی Noto Sans Arabic
Google (Noto project)
متغیر ۱۰۰–۹۰۰Google Fonts · آفلاینv2.012زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { notoSansArabic } from 'next-persian-fonts/noto-sans-arabic'نوتو کوفی Noto Kufi Arabic
Google (Noto project)
متغیر ۱۰۰–۹۰۰Google Fonts · آفلاینv2.109زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { notoKufiArabic } from 'next-persian-fonts/noto-kufi-arabic'نوتو نستعلیق Noto Nastaliq Urdu
Google (Noto project)
متغیر ۴۰۰–۷۰۰Google Fonts · آفلاینv3.009زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { notoNastaliqUrdu } from 'next-persian-fonts/noto-nastaliq-urdu'آیبیام پلکس عربی IBM Plex Sans Arabic
IBM (Mike Abbink, Bold Monday)
۷ وزنGoogle Fonts · آفلاینv1.1.0زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { ibmPlexSansArabic } from 'next-persian-fonts/ibm-plex-sans-arabic'امیری Amiri
Khaled Hosny (Alif Type)
۲ وزنGoogle Fonts · آفلاینv1.002زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { amiri } from 'next-persian-fonts/amiri'هرمتان Harmattan
SIL Global
۴ وزنGoogle Fonts · آفلاینv4.400زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { harmattan } from 'next-persian-fonts/harmattan'شهرزاد Scheherazade New
SIL Global
۴ وزنGoogle Fonts · آفلاینv4.500زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { scheherazadeNew } from 'next-persian-fonts/scheherazade-new'لطیف Lateef
SIL Global
۴ وزنGoogle Fonts · آفلاینv4.400زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { lateef } from 'next-persian-fonts/lateef'کتیبه Katibeh
KB-Studio (Kourosh Beigpour)
وزن ۴۰۰Google Fonts · آفلاینv1.0010gزندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { katibeh } from 'next-persian-fonts/katibeh'عارف رقعه Aref Ruqaa
Abdullah Aref, Khaled Hosny
۲ وزنGoogle Fonts · آفلاینv1.003زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { arefRuqaa } from 'next-persian-fonts/aref-ruqaa'روبیک Rubik
Hubert & Fischer, Meir Sadan, Cyreal, Daniel Grumer
متغیر ۳۰۰–۹۰۰Google Fonts · آفلاینv2.300زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { rubik } from 'next-persian-fonts/rubik'جمهوریا Jomhuria
KB-Studio (Kourosh Beigpour)
وزن ۴۰۰Google Fonts · آفلاینv1.0010زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { jomhuria } from 'next-persian-fonts/jomhuria'المسیری El Messiri
Mohamed Gaber, Jovanny Lemonad
متغیر ۴۰۰–۷۰۰Google Fonts · آفلاینv2.020زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { elMessiri } from 'next-persian-fonts/el-messiri'چنگا Changa
Eduardo Tunni
متغیر ۲۰۰–۸۰۰Google Fonts · آفلاینv3.003زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { changa } from 'next-persian-fonts/changa'بالو بهایجان Baloo Bhaijaan 2
Ek Type
متغیر ۴۰۰–۸۰۰Google Fonts · آفلاینv1.701زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { balooBhaijaan2 } from 'next-persian-fonts/baloo-bhaijaan-2'قاهره Cairo
Mohamed Gaber
متغیر ۲۰۰–۱۰۰۰Google Fonts · آفلاینv3.130زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { cairo } from 'next-persian-fonts/cairo'بدین Badeen Display
Hani Adnan
وزن ۴۰۰Google Fonts · آفلاینv1.000زندگی صحنهٔ یکتای هنرمندی ماست؛ هر کسی نغمهٔ خود خواند و از صحنه رود.
import { badeenDisplay } from 'next-persian-fonts/badeen-display'
راهنما
نصب و استفاده در ۳ قدم
- ۱
نصب کنید
با npm، pnpm، yarn یا bun:
npm install next-persian-fonts - ۲
ایمپورت کنید
در فایل app/layout.tsx:
import { vazirmatnVariable } from 'next-persian-fonts/vazirmatn-variable' - ۳
استفاده کنید
کلاس فونت را روی body بگذارید:
<body className={vazirmatnVariable.className}>
app/layout.tsx ایمپورت فونتهای Geist از next/font/google را حذف کنید (به اینترنت جهانی نیاز دارند) و در globals.css خط font-family: Arial, Helvetica, sans-serif; را از قانون body پاک کنید تا جلوی فونت فارسی را نگیرد.مثال کامل برای کپی
// app/layout.tsx
import './globals.css'
import { vazirmatnVariable } from 'next-persian-fonts/vazirmatn-variable'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="fa" dir="rtl">
<body className={vazirmatnVariable.className}>{children}</body>
</html>
)
}// pages/_app.tsx
import '@/styles/globals.css'
import type { AppProps } from 'next/app'
import { vazirmatnVariable } from 'next-persian-fonts/vazirmatn-variable'
export default function App({ Component, pageProps }: AppProps) {
return (
<main className={vazirmatnVariable.className}>
<Component {...pageProps} />
</main>
)
}// next.config.mjs — needed for the Pages Router (and Jest)
export default {
transpilePackages: ['next-persian-fonts'],
}فونت دیگری میخواهید؟ در گالری بالا روی «کپی» کارت آن فونت بزنید و خط ایمپورت را جایگزین کنید. در Pages Router تنظیم transpilePackages لازم است (Next.js پکیجهای node_modules را در Pages Router باندل نمیکند و بدون آن build خطا میدهد)؛ در App Router بیضرر است. برای راستچین شدن، در pages/_document.tsx بنویسید <Html lang="fa" dir="rtl">.
استفاده در پروژههای غیر Next.js (Vite، Gatsby، Astro، HTML ساده)
برای هر فونت یک فایل CSS آماده هم هست: next-persian-fonts/css/<name>.css. این فایل @font-face را با همان فایلهای فونت داخل پکیج تعریف میکند و یک متغیر CSS (مثل --font-vazirmatn-variable) و یک کلاس (مثل .font-vazirmatn-variable) میسازد. بهجای name همان مسیر ایمپورت فونت را بنویسید؛ در گالری بالا با دکمهٔ «CSS» کد هر فونت را ببینید. اگر از Next.js استفاده میکنید، این فایلها هیچ چیزی به سایت شما اضافه نمیکنند.
// Vite (React، Vue، Svelte، vanilla) · Gatsby · Astro
// main.jsx / gatsby-browser.js / Layout.astro (frontmatter)
import 'next-persian-fonts/css/vazirmatn-variable.css'
<body class="font-vazirmatn-variable">
/* or in your CSS: */
body { font-family: var(--font-vazirmatn-variable); }/* Tailwind v4 — main.css */
@import 'tailwindcss';
@import 'next-persian-fonts/css/vazirmatn-variable.css';
@theme inline {
--font-sans: var(--font-vazirmatn-variable);
}<!-- plain HTML, no bundler -->
<link rel="stylesheet" href="node_modules/next-persian-fonts/css/vazirmatn-variable.css">
<body class="font-vazirmatn-variable">Tailwind v4 و v3
استفاده با Tailwind CSS
روی html بهجای className از vazirmatnVariable.variable استفاده کنید و فونت را به Tailwind معرفی کنید. بعد از آن کلاس font-sans (پیشفرض Tailwind) همان فونت فارسی است.
/* globals.css */
@import 'tailwindcss';
@theme inline {
--font-sans: var(--font-vazirmatn-variable), sans-serif;
}// tailwind.config.js
module.exports = {
theme: {
extend: {
fontFamily: { sans: ['var(--font-vazirmatn-variable)', 'sans-serif'] },
},
},
}سؤال دارید؟
پرسشهای رایج
چرا فونتها داخل پکیج هستند و از Google Fonts یا CDN استفاده نمیکنیم؟
next/font/google نمیتواند هنگام build فونت را دانلود کند و build شکست میخورد؛ فونتهای CDN هم برای کاربران باز نمیشوند. اینجا فایل فونتها همراه npm install میآیند و Next.js آنها را روی سایت خودتان میزبانی میکند، پس همیشه کار میکنند. برای همین فونتهای فارسی Google Fonts (لالهزار، نوتو، امیری، مرکزی و…) هم داخل پکیج قرار گرفتهاند. در گالری با فیلتر «منبع» میتوانید فقط آنها را ببینید.چطور چند فونت را با هم استفاده کنم؟
بهجای className از variable هر فونت استفاده کنید و هر جا لازم است متغیر CSS آن را بنویسید. نام متغیر همیشه --font- بهعلاوهٔ مسیر ایمپورت است. سادهترین راه هم این است که lalezar.className را مستقیم روی همان المان بگذارید.
// app/layout.tsx
import { vazirmatnVariable } from 'next-persian-fonts/vazirmatn-variable'
import { lalezar } from 'next-persian-fonts/lalezar'
<html lang="fa" dir="rtl" className={`${vazirmatnVariable.variable} ${lalezar.variable}`}>
/* globals.css */
body { font-family: var(--font-vazirmatn-variable); }
h1 { font-family: var(--font-lalezar); }نسخههای FD چه هستند؟
sahelFD و samimFD) حتی اعداد انگلیسی (123) هم فارسی (۱۲۳) نمایش داده میشوند؛ برای قیمت و تاریخ مفید است. اگر متن شما خودش اعداد فارسی دارد، نسخهٔ معمولی هم کافی است. vazirMatn همیشه اعداد فارسی دارد.بدون Next.js هم میشود استفاده کرد؟
import 'next-persian-fonts/css/estedad.css'، که در Vite، Gatsby، Astro یا با تگ <link> در HTML ساده کار میکند. مثالها را ببینید. این فایلها برای کاربران Next.js هیچ هزینهای ندارند، چون فقط وقتی ایمپورتشان کنید وارد خروجی میشوند.optimizePackageImports لازم است؟
اگر مثل مثالهای بالا از مسیر هر فونت ایمپورت کنید (next-persian-fonts/estedad)، نه. فقط اگر از ریشهٔ پکیج ایمپورت میکنید (روش قدیمی نسخهٔ ۱.۰) و با webpack میسازید (پیشفرض Next ۱۳ تا ۱۵)، این تنظیم را اضافه کنید تا فونتهای اضافه دانلود نشوند:
// next.config.mjs (only for: import { sahel } from 'next-persian-fonts' + webpack)
export default {
experimental: { optimizePackageImports: ['next-persian-fonts'] },
}Pages Router یا Jest خطای ERR_UNSUPPORTED_DIR_IMPORT میدهد؟
next.config بنویسید transpilePackages: ['next-persian-fonts']. Pages Router و next/jest پکیجهای node_modules را باندل نمیکنند، پس next/font/local اجرا نمیشود. این تنظیم در App Router هم بیضرر است.با pnpm نسخهٔ قدیمی (۱.۰) نصب شد؟
pnpm add next-persian-fonts@^1.2 (یا npm install next-persian-fonts@latest).چرا بعضی فونتها preload نمیشوند؟
vazirMatn با ۹ وزن یا sahelFD) preload نمیشوند تا Next.js همهٔ وزنها را در هر صفحه از قبل دانلود نکند؛ فقط وزنهایی که واقعاً استفاده میشوند بارگذاری میشوند. برای کمترین حجم، نسخههای متغیر مثل vazirmatnVariable را انتخاب کنید.estedadFD چه شد؟
estedadFD برای سازگاری روی نسخهٔ ۷.۳ مانده و منسوخ است؛ برای پروژهٔ جدید از estedad استفاده کنید.برای پروژهٔ تجاری رایگان است؟
تستشده در CI
سازگاری
| Next.js | React | باندلر | وضعیت |
|---|---|---|---|
| 16.x | 19 | Turbopack + webpack | پشتیبانی میشود |
| 15.x | 19 | webpack + Turbopack | پشتیبانی میشود |
| 14.x | 18 | webpack | پشتیبانی میشود |
| 13.5 | 18 | webpack | پشتیبانی میشود |
حداقل نسخهٔ پشتیبانیشده Next.js ۱۳.۲ است (نسخهای که next/font در خود Next.js قرار گرفت). App Router و Pages Router هر دو پشتیبانی میشوند.