وحدة الخطوط
سيساعدك مرجع API هذا على فهم كيفية استخدام next/font/google و next/font/local. لميزات الاستخدام، يرجى زيارة صفحة تحسين الخطوط.
وسائط دالة الخط
للاستخدام، راجع خطوط جوجل و الخطوط المحلية.
| المفتاح | font/google | font/local | النوع | مطلوب |
|---|---|---|---|---|
src | سلسلة أو مصفوفة من الكائنات | نعم | ||
weight | سلسلة أو مصفوفة | مطلوب/اختياري | ||
style | سلسلة أو مصفوفة | - | ||
subsets | مصفوفة من السلاسل | - | ||
axes | مصفوفة من السلاسل | - | ||
display | سلسلة | - | ||
preload | قيمة منطقية | - | ||
fallback | مصفوفة من السلاسل | - | ||
adjustFontFallback | قيمة منطقية أو سلسلة | - | ||
variable | سلسلة | - | ||
declarations | مصفوفة من الكائنات | - |
src
مسار ملف الخط كسلسلة أو مصفوفة من الكائنات (من نوع Array<{path: string, weight?: string, style?: string}>) بالنسبة إلى الدليل الذي يتم فيه استدعاء دالة محمل الخط.
يستخدم في next/font/local
- مطلوب
أمثلة:
src:'./fonts/my-font.woff2'حيث يتم وضعmy-font.woff2في دليل باسمfontsداخل دليلappsrc:[{path: './inter/Inter-Thin.ttf', weight: '100',},{path: './inter/Inter-Regular.ttf',weight: '400',},{path: './inter/Inter-Bold-Italic.ttf', weight: '700',style: 'italic',},]- إذا تم استدعاء دالة محمل الخط في
app/page.tsxباستخدامsrc:'../styles/fonts/my-font.ttf'، فإنmy-font.ttfيوضع فيstyles/fontsفي جذر المشروع
weight
وزن الخط مع الاحتمالات التالية:
- سلسلة بقيم محتملة للأوزان المتاحة للخط المحدد أو نطاق من القيم إذا كان خطًا متغيرًا
- مصفوفة من قيم الوزن إذا لم يكن الخط خط جوجل متغير. ينطبق على
next/font/googleفقط.
يستخدم في next/font/google و next/font/local
- مطلوب إذا كان الخط المستخدم ليس متغيرًا
أمثلة:
weight: '400': سلسلة لقيمة وزن واحدة - للخطInter، القيم المحتملة هي'100','200','300','400','500','600','700','800','900'أو'variable'حيث'variable'هي القيمة الافتراضية)weight: '100 900': سلسلة للنطاق بين100و900لخط متغيرweight: ['100','400','900']: مصفوفة من 3 قيم محتملة لخط غير متغير
style
نمط الخط مع الاحتمالات التالية:
- سلسلة قيمة بقيمة افتراضية
'normal' - مصفوفة من قيم النمط إذا لم يكن الخط خط جوجل متغير. ينطبق على
next/font/googleفقط.
يستخدم في next/font/google و next/font/local
- اختياري
أمثلة:
style: 'italic': سلسلة - يمكن أن تكونnormalأوitalicلـnext/font/googlestyle: 'oblique': سلسلة - يمكن أن تأخذ أي قيمة لـnext/font/localولكن من المتوقع أن تأتي من أنماط الخطوط القياسيةstyle: ['italic','normal']: مصفوفة من قيمتين لـnext/font/google- القيم منnormalوitalic
subsets
مجموعات فرعية الخط المحددة بمصفوفة من قيم السلسلة بأسماء كل مجموعة فرعية تريد تحميلها مسبقًا. سيتم حقق علامة تحميل مسبق للرابط في الرأس عند تعيين خيار preload على true، وهو الإعداد الافتراضي.
يستخدم في next/font/google
- اختياري
أمثلة:
subsets: ['latin']: مصفوفة بمجموعة فرعيةlatin
يمكنك العثور على قائمة بجميع المجموعات الفرعية في صفحة خطوط جوجل للخط الخاص بك.
axes
بعض الخطوط المتغيرة تحتوي على محاور إضافية axes يمكن تضمينها. افتراضيًا، يتم تضمين وزن الخط فقط للحفاظ على حجم الملف. تعتمد القيم المحتملة لـ axes على الخط المحدد.
يستخدم في next/font/google
- اختياري
أمثلة:
axes: ['slnt']: مصفوفة بقيمةslntللخط المتغيرInterالذي يحتوي علىslntكمحاور إضافية كما هو موضح هنا. يمكنك العثور على قيمaxesالمحتملة للخط الخاص بك باستخدام الفلتر في صفحة خطوط جوجل المتغيرة والبحث عن محاور غيرwght
display
عرض الخط بقيم سلسلة محتملة قيم 'auto', 'block', 'swap', 'fallback' أو 'optional' بقيمة افتراضية 'swap'.
يستخدم في next/font/google و next/font/local
- اختياري
أمثلة:
display: 'optional': سلسلة معينة لقيمةoptional
preload
قيمة منطقية تحدد ما إذا كان يجب تحميل الخط مسبقًا أم لا. الافتراضي هو true.
يستخدم في next/font/google و next/font/local
- اختياري
أمثلة:
preload: false
fallback
الخط الاحتياطي لاستخدامه إذا تعذر تحميل الخط. مصفوفة من السلاسل للخطوط الاحتياطية بدون قيمة افتراضية.
- اختياري
يستخدم في next/font/google و next/font/local
أمثلة:
fallback: ['system-ui', 'arial']: مصفوفة تعيين الخطوط الاحتياطية إلىsystem-uiأوarial
adjustFontFallback
- لـ
next/font/google: قيمة منطقية تحدد ما إذا كان يجب استخدام خط احتياطي تلقائي لتقليل تحول التخطيط التراكمي. الافتراضي هوtrue. - لـ
next/font/local: سلسلة أو قيمة منطقيةfalseتحدد ما إذا كان يجب استخدام خط احتياطي تلقائي لتقليل تحول التخطيط التراكمي. القيم المحتملة هي'Arial','Times New Roman'أوfalse. الافتراضي هو'Arial'.
يستخدم في next/font/google و next/font/local
- اختياري
أمثلة:
adjustFontFallback: false: لـnext/font/googleadjustFontFallback: 'Times New Roman': لـnext/font/local
variable
قيمة سلسلة لتحديد اسم متغير CSS لاستخدامه إذا تم تطبيق النمط باستخدام طريقة متغير CSS.
يستخدم في next/font/google و next/font/local
- اختياري
أمثلة:
variable: '--my-font': يتم تعريف متغير CSS--my-font
declarations
مصفوفة من أزواج مفتاح-قيمة لـ واصف وجه الخط التي تحدد @font-face المُنشأ بشكل أكبر.
يستخدم في next/font/local
- اختياري
أمثلة:
declarations: [{ prop: 'ascent-override', value: '90%' }]
تطبيق الأنماط
يمكنك تطبيق أنماط الخط بثلاث طرق:
className
تُرجع className CSS للقراءة فقط للخط المحمل لتمريرها إلى عنصر HTML.
<p className={inter.className}>Hello, Next.js!</p>style
تُرجع كائن style CSS للقراءة فقط للخط المحمل لتمريرها إلى عنصر HTML، بما في ذلك style.fontFamily للوصول إلى اسم عائلة الخط والخطوط الاحتياطية.
<p style={inter.style}>Hello World</p>متغيرات CSS
إذا كنت ترغب في تعيين أنماطك في ورقة أنماط خارجية وتحديد خيارات إضافية هناك، استخدم طريقة متغير CSS.
بالإضافة إلى استيراد الخط، استورد أيضًا ملف CSS حيث يتم تعريف متغير CSS وقم بتعيين خيار متغير لكائن محمل الخط كما يلي:
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',
})لاستخدام الخط، قم بتعيين className للحاوية الأصلية للنص الذي تريد تنسيقه إلى قيمة variable لمحمل الخط و className للنص إلى خاصية styles من ملف CSS الخارجي.
<main className={inter.variable}>
<p className={styles.text}>Hello World</p>
</main><main className={inter.variable}>
<p className={styles.text}>Hello World</p>
</main>حدد فئة المحدد text في ملف CSS component.module.css كما يلي:
.text {
font-family: var(--font-inter);
font-weight: 200;
font-style: italic;
}في المثال أعلاه، يتم تنسيق النص Hello World باستخدام خط Inter والخط الاحتياطي المُنشأ مع font-weight: 200 و font-style: italic.
استخدام ملف تعريف الخطوط
في كل مرة تستدعي فيها دالة localFont أو خط جوجل، سيتم استضافة هذا الخط كنسخة واحدة في تطبيقك. لذلك، إذا كنت بحاجة إلى استخدام نفس الخط في أماكن متعددة، يجب تحميله في مكان واحد واستيراد كائن الخط ذي الصلة حيث تحتاجه. يتم ذلك باستخدام ملف تعريف الخطوط.
على سبيل المثال، أنشئ ملف fonts.ts في مجلد styles في جذر دليل تطبيقك.
ثم، حدد تعريفات الخطوط الخاصة بك كما يلي:
import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
// تعريف الخطوط المتغيرة
const inter = Inter()
const lora = Lora()
// تعريف وزنين لخط غير متغير
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// تعريف خط محلي مخصص حيث يتم تخزين GreatVibes-Regular.ttf في مجلد الأنماط
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'
// تعريف الخطوط المتغيرة
const inter = Inter()
const lora = Lora()
// تعريف وزنين لخط غير متغير
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// تعريف خط محلي مخصص حيث يتم تخزين GreatVibes-Regular.ttf في مجلد الأنماط
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }يمكنك الآن استخدام هذه التعريفات في الكود الخاص بك كما يلي:
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hello world using Inter font</p>
<p style={lora.style}>Hello world using Lora font</p>
<p className={sourceCodePro700.className}>
Hello world using Source_Sans_3 font with weight 700
</p>
<p className={greatVibes.className}>My title in Great Vibes font</p>
</div>
)
}import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hello world using Inter font</p>
<p style={lora.style}>Hello world using Lora font</p>
<p className={sourceCodePro700.className}>
Hello world using Source_Sans_3 font with weight 700
</p>
<p className={greatVibes.className}>My title in Great Vibes font</p>
</div>
)
}لتسهيل الوصول إلى تعريفات الخطوط في الكود الخاص بك، يمكنك تعريف اسم مسار في ملفات tsconfig.json أو jsconfig.json كما يلي:
{
"compilerOptions": {
"paths": {
"@/fonts": ["./styles/fonts"]
}
}
}يمكنك الآن استيراد أي تعريف خط كما يلي:
import { greatVibes, sourceCodePro400 } from '@/fonts'import { greatVibes, sourceCodePro400 } from '@/fonts'تغييرات الإصدار
| الإصدار | التغييرات |
|---|---|
v13.2.0 | تمت إعادة تسمية @next/font إلى next/font. لم يعد التثبيت مطلوبًا. |
v13.0.0 | تمت إضافة @next/font. |