في هذا الدرس 7تصفّح المواضيع
في جوهرها، تعتمد جميع منصات الخطوط السحابية خلف الكواليس على قاعدة أصيلة في لغة CSS يمكنك كتابتها بنفسك مباشرةً، وهي قاعدة @font-face. تتيح لك هذه القاعدة وضع ملفات الخطوط داخل مجلدات مشروعك المحلي (مثل المجلد /fonts/) وتعريفها للمتصفح دون الاعتماد على أي خادم خارجي.
تتم عملية تضمين الخط المخصص عبر خطوتين متكاملتين — أولاً تكتب كتلة @font-face في مطلع ملف الأنماط لتمنح العائلة اسماً من اختيارك عبر font-family وتربطها بمسار الملف في الواصف src باستخدام دالة url() ودالة format("woff2")؛ وثانياً تستدعي هذا الاسم مع عائلة احتياطية داخل محددات الصفحة مثل body و h1.
@font-face {
font-family: "BrandCairo";
src: url("fonts/cairo-400.woff2")
format("woff2");
font-display: swap;
}
body {
font-family: "BrandCairo", sans-serif;
}
تستخدم أنظمة التشغيل المكتبية عادةً ملفات خطوط غير مضغوطة بصيغتي TTF و OTF، وهي أحجام ثقيلة تبطئ فتح صفحات الويب. لذلك أصبحت صيغة WOFF2 المعيار القياسي الأول للويب الحديث؛ إذ تدمج خوارزمية ضغط Brotli المتطورة داخل بنية الخط نفسه، مما يقلص حجم الملف بنحو 30% مقارنةً بالجيل الأول WOFF وبأكثر من النصف مقارنةً بملفات سطح المكتب الخام.
وعند كتابة الدالة format("woff2") مباشرةً بعد url()، فإنك تُخبر المتصفح مسبقاً بنوع الملف الرقمي ليتحقق من دعمه الصريح قبل الشروع في تنزيله.
| صيغة ملف الخط | تقنية الضغط الداخلي | حجم الملف النسبي | وضعها في الويب الحديث |
|---|---|---|---|
WOFF2 | ضغط Brotli مدمج ومعالجة للجداول | الأصغر حجماً والأسرع تنزيلاً | المعيار الأساسي الكافي لجميع المتصفحات الحديثة |
WOFF | ضغط zlib التقليدي الأقدم | أكبر بنحو 30% من WOFF2 | بديل تاريخي نادر الحاجة اليوم |
TTF / OTF | ملفات مكتبية خام غير مضغوطة | كبير وثقيل على الشبكة | مخصص لتثبيت النظام المحلي وليس للويب |
إذا عرّفت ملف الخط العادي ذي الوزن 400 وحده تحت الاسم "BrandCairo"، ثم طلبت لعنوان h1 سماكة عريضة font-weight: 700;، فلن يجد المتصفح رسماً حقيقياً للحروف العريضة؛ فيلجأ إلى التسميك الصناعي (Faux Bold) عبر نفخ حدود الحرف آلياً. يؤدي هذا التسميك المصطنع في الحروف العربية المتصلة إلى طمس فتحات الحروف وتلاصق النقاط وتشوه جماليات الكلمة.
لمنع هذا التشوه، اربط كل ملف وزن حقيقي بكتلة @font-face مستقلة تحمل اسم font-family ذاته تماماً، مع تحديد الواصف font-weight: 400; للملف العادي و font-weight: 700; للملف العريض ليختار المتصفح الملف الأصيل تلقائياً:
@font-face {
font-family: "BrandCairo";
src: url("fonts/cairo-400.woff2")
format("woff2");
font-weight: 400;
}
@font-face {
font-family: "BrandCairo";
src: url("fonts/cairo-700.woff2")
format("woff2");
font-weight: 700;
}
تقدّم تقنية الخطوط المتغيرة (Variable Fonts) حلاً هندسياً أكثر كفاءة؛ فبدلاً من رفع أربعة أو خمسة ملفات منفصلة للأوزان الثابتة، يجمع ملف .woff2 متغير واحد كامل طيف السماكات بسلاسة متصلة. يقلل هذا النهج عدد طلبات الشبكة إلى ملف وحيد، ويمنحك حرية استخدام أوزان وسطية دقيقة مثل 450 أو 650 أو 750.
لتعريف مدى الأوزان داخل قاعدة @font-face، اكتب الحد الأدنى متبوعاً بمسافة ثم الحد الأعلى على الصورة font-weight: 100 900; دون وضع شرطة بين الرقمين:
@font-face {
font-family: "CairoVar";
src: url("fonts/cairo-var.woff2")
format("woff2");
font-weight: 100 900;
font-display: swap;
}
h1 {
font: 750 26px/1.3 "CairoVar",
sans-serif;
}
عند تحميل خط مخصص عبر شبكة هاتف بطيئة دون تحديد سلوك العرض، قد تُخفي المتصفحات النصوص تماماً لعدة ثوانٍ بانتظار وصول ملف الخط — وهي ظاهرة مزعجة تُعرف بوميض النص المخفي (FOIT). يعالج الواصف font-display: swap; داخل كتلة @font-face هذه المشكلة جذرياً؛ إذ يعرض النص فوراً بالخط الاحتياطي المحلي منذ اللحظة الأولى ثم يستبدله بالخط المخصص فور اكتمال تنزيله.
قارن بين الإعدادات الثلاثة عملياً في المختبر التفاعلي التالي:
تمنحك استضافة ملفات .woff2 محلياً داخل مجلدات مشروعك نفسه (مثل المسار /fonts/cairo-var.woff2) ثلاث مزايا جوهرية تتفوق بها على استدعاء الخطوط من خوادم طرف ثالث:
- حماية كاملة لخصوصية الزوار: تبقى جميع طلبات جلب الخط داخل نطاق موقعك ذاته، فلا يُكشف عنوان
IPالخاص بالزائر ولا يُرسل رأسRefererإلى أي شركة خارجية. - توفير مصافحات الاتصال الإضافية: بدلاً من فتح اتصالات جديدة بنطاقات خارجية، يحمّل المتصفح ملفات الخط عبر قناة الاتصال نفسها المفتوحة مسبقاً لجلب صفحات موقعك.
- العمل الموثوق في الشبكات المعزولة: تظهر الخطوط المحلية بكامل أناقتها داخل الشبكات المؤسسية الداخلية وبيئات التطوير المحلية دون أدنى تأثر بانقطاع الإنترنت الخارجي.
لأن وجود العائلة الاحتياطية يُبقي النص مقروءاً حتى لو كان مسار ملف الخط خاطئاً، لا تكتفِ بالنظر السريع إلى الصفحة للتأكد من نجاح قاعدة @font-face، بل تحقّق عملياً عبر خطوتين داخل أدوات المطور DevTools:
- فحص تبويب
Networkمع مرشحFont: أعد تحميل الصفحة وتأكد من ظهور ملف.woff2المحلي بحالة نجاح200وعدم رجوع خطأ مسار مفقود404. - فحص قسم
Rendered Fontsأسفل لوحةComputed: حدد عنصر العنوان أو الفقرة في فاحص العناصر وانتقل إلى نهاية قائمة الأنماط المحسوبة؛ فهناك يذكر المتصفح صراحةً اسم الخط الفعلي المرسوم على الشاشة وعدد الحروف المأخوذة من ملف الشبكة أو من خط النظام البديل.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اختتمت بهذا الدرس فصل خطوط CSS بإتقان تعريف الخطوط المحلية عبر @font-face وصيغة WOFF2، وربط الأوزان الحقيقية والمتغيرة 100 900، وتفعيل العرض الفوري عبر font-display: swap; مع حماية الخصوصية وفحص التحميل في DevTools. في الخطوة التالية نفتتح فصلاً جديداً مع درس لون الخلفية في لغة CSS.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 @font-face At-Rule قاعدة @font-face
- قاعدة في لغة CSS تعرّف اسم عائلة خط مخصصة وتربطها بملفات الخطوط وأوزانها وسلوك عرضها.
- للمراجعة
- 02 Faux Bold (Synthetic Bolding) التسميك الصناعي (Faux Bold)
- تسميك آلي مصطنع يطبّقه المتصفح على الحروف العادية عند طلب وزن عريض غير مربوط بملف خط حقيقي.
- للمراجعة
- 03 Variable Font الخط المتغير (Variable Font)
- ملف خط حديث واحد يضم مدى متصلاً من الأوزان مثل 100 إلى 900 بدلاً من تعدد الملفات الثابتة.
- للمراجعة
- 04 Font Display Swap العرض التبادلي الفوري (swap)
- ضبط الواصف font-display على القيمة swap لإظهار النص فوراً بالخط الاحتياطي ريثما يكتمل تنزيل الخط المخصص.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات3
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 WOFF2 WOFF2
- Web Open Font Format 2.0
- الجيل الثاني من صيغة خطوط الويب المفتوحة ويعتمد ضغط Brotli لتوفير أصغر حجم وأعلى سرعة تحميل.
- للمراجعة
- 02 FOIT FOIT
- Flash of Invisible Text
- اختفاء مؤقت لنصوص الصفحة ريثما ينتهي المتصفح من تنزيل ملف الخط المخصص عبر الشبكة.
- للمراجعة
- 03 FOUT FOUT
- Flash of Unstyled Text
- ظهور النص مباشرةً بخط النظام الاحتياطي ثم تحوّله إلى الخط المخصص فور اكتمال تنزيله.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب قاعدة @font-face باسم "CairoVar" تشير إلى المسار /fonts/cairo-var.woff2 بصيغة woff2 ومدى أوزان 100 900 مع font-display: swap.
-
افحص عنصر عنوان في لوحة Computed قسم Rendered Fonts وتحقّق من مصدر الخط المرسوم بالتوازي مع مرشح Font في تبويب Network.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.