Web Open Font Format 2
ملف WOFF2 هو حاوية مضغوطة بخوارزمية Brotli تغلف خطوط TrueType أو OpenType للاستخدام على الويب. الصيغة تقسم بيانات الحروف (glyf) إلى 7 تيارات فرعية قبل الضغط، مما ينتج ملفات أصغر بنسبة 30% من WOFF و50–60% من TTF الخام. جميع المتصفحات الحديثة تدعم WOFF2.
تحويل خطوط WOFF2 يتطلب معالجة على مستوى الحروف (glyphs) غير متوفرة في بيئة المتصفح. يعرض FileDex معلومات الصيغة وأوامر التحويل عبر سطر الأوامر.
أسئلة شائعة
ما هو ملف WOFF2 وما الفرق بينه وبين WOFF؟
ملف WOFF2 هو حاوية خطوط ويب مضغوطة بخوارزمية Brotli بدلاً من zlib المستخدمة في WOFF. الضغط بتيار واحد مع معالجة مسبقة لبيانات الحروف ينتج ملفات أصغر بنسبة 30% من WOFF. كلتا الصيغتين معياران من W3C وتدعمهما جميع المتصفحات الحديثة.
كيف أستخدم خطوط WOFF2 في تصميم موقع ويب عربي؟
استخدم قاعدة @font-face في CSS مع تحديد format('woff2'). للخطوط العربية، تأكد من الحفاظ على ميزات OpenType مثل liga وcalt وinit وmedi وfina عند التقليص. Google Fonts تقدم خطوطاً عربية مثل Cairo وTajawal بصيغة WOFF2 مع تقسيم تلقائي حسب نطاق Unicode.
هل يمكنني تثبيت خط WOFF2 على جهاز الكمبيوتر؟
لا يمكن تثبيت WOFF2 كخط نظام مباشرة. يجب أولاً فك ضغطه إلى TTF باستخدام fonttools أو أداة woff2_decompress من Google، ثم تثبيت ملف TTF الناتج عبر Font Book في macOS أو بالنقر بزر الماوس الأيمن واختيار "تثبيت" في Windows.
ما مقدار توفير الحجم عند استخدام WOFF2 بدلاً من TTF؟
WOFF2 يقلص حجم ملفات الخط بنسبة 50–60% مقارنة بـ TTF الخام. في اختبار محلي، ضُغط ملف TTF من 652 بايت إلى 300 بايت (تقليص 54%). لعائلة خطوط بأربعة أوزان، الفرق يعني توفير مئات الكيلوبايتات في تحميل كل صفحة.
هل أحتاج إلى تقديم خط WOFF كاحتياطي مع WOFF2؟
فقط إذا كنت تدعم Internet Explorer 9–11 الذي أوقفته Microsoft في يونيو 2022. جميع المتصفحات المدعومة حالياً — Chrome وFirefox وSafari وEdge — تدعم WOFF2 أصلاً. معظم المواقع الحديثة تقدم WOFF2 فقط بدون احتياطي.
كيف أقلص خط WOFF2 للحروف العربية فقط؟
استخدم أداة pyftsubset مع تحديد نطاقات Unicode العربية: --unicodes=U+0600-06FF,U+FB50-FDFF,U+FE70-FEFF مع --flavor=woff2. تأكد من إضافة --layout-features='*' للحفاظ على الأشكال السياقية والربطات الضرورية للعرض الصحيح للنص العربي.
ما يميز .WOFF2
ما هو WOFF2؟
صيغة WOFF2 (Web Open Font Format 2.0) هي معيار W3C لتغليف خطوط TrueType وOpenType باستخدام ضغط Brotli ومعالجة مسبقة خاصة بالخطوط. أصبحت توصية W3C رسمية في 1 مارس 2018، بتحرير Vladimir Levantovsky وبمرجع تنفيذ مفتوح المصدر من Google.
اكتشف التفاصيل التقنية
خط أنابيب الضغط
لا يكتفي WOFF2 بضغط Brotli المباشر لجداول الخط. قبل الضغط، تُطبَّق مرحلة معالجة مسبقة مستمدة من تقنية MicroType Express من Monotype:
تحويل جدول glyf. يُقسَّم جدول حدود الحروف — وهو عادةً أكبر جدول في خط TrueType — إلى 7 تيارات فرعية مستقلة: قيم nContour، قيم nPoints، الأعلام (flags)، الإحداثيات (x/y)، بيانات الحروف المركبة، صناديق الحدود، وتعليمات الـ hinting. تجميع البيانات المتشابهة يسمح لـ Brotli بضغطها بكفاءة أعلى بكثير.
حذف جدول loca. جدول loca الذي يخزن مواقع الحروف في glyf لا يُضمَّن في البيانات المضغوطة. يُعاد بناؤه أثناء فك الضغط عبر تتبع بيانات glyf المستعادة.
ضغط Brotli بتيار واحد. على عكس WOFF 1.0 الذي يضغط كل جدول على حدة بـ zlib، يُدمج WOFF2 جميع الجداول المحولة في مخزن واحد ويضغطها كتيار Brotli واحد. هذا يسمح بإيجاد تكرارات بين الجداول لا يكتشفها الضغط المنفصل.
النتيجة: ملفات أصغر بنحو 30% من WOFF 1.0 (الذي هو نفسه أصغر بنسبة 40–50% من TTF الخام). لعائلة خطوط لاتينية بأربعة أوزان، قد يكون حجم WOFF2 الإجمالي 150 كيلوبايت مقابل 220 كيلوبايت لـ WOFF أو 380 كيلوبايت لـ TTF.
البنية الثنائية
يبدأ كل ملف WOFF2 بترويسة (Header) من 48 بايت. أول 4 بايتات هي التوقيع wOF2 (سداسي عشري 77 4F 46 32)، مما يميزه عن توقيع WOFF 1.0 وهو wOFF. تتضمن الترويسة أيضاً نوع sfnt الأصلي، الحجم الإجمالي للملف، عدد الجداول، حجم البيانات المفكوكة، وإزاحات اختيارية للبيانات الوصفية والبيانات الخاصة.
بعد الترويسة يأتي دليل الجداول (Table Directory) المُرمَّز بأعداد UIntBase128 متغيرة الطول — ترميز يشبه varint في Protocol Buffers.
دعم المتصفحات
- Chrome 36 (يوليو 2014) — أول متصفح يدعم WOFF2
- Firefox 39 (يونيو 2015)
- Safari 10 (سبتمبر 2016) — دعم جزئي؛ دعم كامل في Safari 12.1
- Edge 14 (أغسطس 2016)
حتى 2026، تغطية المتصفحات تتجاوز 97% عالمياً وفق Can I Use.
خطوط Google والعربية
خدمة Google Fonts — أكبر مكتبة خطوط مجانية — تقدم WOFF2 كصيغة افتراضية منذ 2016. تتوفر أكثر من 8 عائلات خطوط عربية (Cairo، Tajawal، Amiri، Almarai وغيرها) بصيغة WOFF2 مع تقسيم تلقائي حسب نطاق Unicode. الخطوط العربية أكبر حجماً من اللاتينية بسبب الأشكال السياقية (init، medi، fina، isol) والربطات (ligatures)، مما يجعل ضغط WOFF2 أكثر أهمية.
موقع fontface.me يقدم أكثر من 140 خطاً عربياً مرخصاً، كثير منها متاح بصيغة WOFF2 للاستضافة الذاتية — خيار يزداد شعبية في منطقة MENA لأسباب تتعلق بالخصوصية وسيادة البيانات بدلاً من الاعتماد على CDN خارجي.
الخطوط المتغيرة و WOFF2
خط متغير واحد (Variable Font) بصيغة WOFF2 يمكنه استبدال 4–8 ملفات خط ثابت مع حجم أصغر من اثنين منها. عائلة خطوط لاتينية بأربعة أوزان قد تكون 160 كيلوبايت كـ WOFF2 ثابت؛ الخط المتغير المكافئ غالباً أقل من 90 كيلوبايت.
تقليص الخطوط (Subsetting)
خط Unicode كامل قد يكون 200–500 كيلوبايت حتى كـ WOFF2. تقليص الخط لإزالة الحروف غير المستخدمة قبل الضغط يقلل الحجم بشكل كبير. لموقع إنجليزي يستخدم حروفاً لاتينية فقط، يمكن تقليص الخط من 120 كيلوبايت إلى 15–25 كيلوبايت. أدوات مثل pyftsubset وglyphhanger تدعم إخراج WOFF2 مباشرة.
تاريخ التوحيد
اقترحت Google صيغة WOFF2 في 2012. نشرت W3C الصيغة كتوصية مرشحة في 2014. أصبح Brotli معياراً رسمياً كـ RFC 7932 في يوليو 2016. وصلت WOFF2 لمرتبة توصية W3C الكاملة في 1 مارس 2018. في 2021، حصل عمل W3C في توحيد تقنيات الخطوط (بما فيه WOFF2) على جائزة Emmy تقنية وهندسية.
مقارنة .WOFF2 مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .WOFF2 vs .WOFF | خوارزمية الضغط WOFF2 يستخدم Brotli (RFC 7932) مع معالجة مسبقة لـ glyf/loca. أما WOFF 1.0 فيستخدم zlib (DEFLATE) لكل جدول على حدة. نهج التيار الواحد في Brotli يكتشف تكرارات بين الجداول لا يجدها zlib. | WOFF2 أفضل |
| .WOFF2 vs .WOFF | حجم الملف ملفات WOFF2 أصغر بنحو 30% من ملفات WOFF المكافئة. خط WOFF بحجم 94 كيلوبايت يصبح عادةً 66 كيلوبايت كـ WOFF2. | WOFF2 أفضل |
| .WOFF2 vs .TTF | حجم التوصيل عبر الويب WOFF2 يحقق ملفات أصغر بنسبة 50–60% من TTF غير المضغوط. في اختبار محلي، ضُغط ملف TTF من 652 بايت إلى 300 بايت (تقليص 54%). | WOFF2 أفضل |
| .WOFF2 vs .TTF | دعم أنظمة التشغيل Windows وmacOS وLinux تثبّت خطوط TTF مباشرة. WOFF2 لا يمكن تثبيته كخط نظام — يجب فك ضغطه إلى TTF أولاً. | TTF أفضل |
| .WOFF2 vs .EOT | الصلة في 2026 EOT كانت صيغة Microsoft الخاصة لخطوط الويب في IE 6–8. انخفض استخدام IE دون 0.3% بعد تقاعد IE 11 في يونيو 2022. WOFF2 يغطي أكثر من 97% عالمياً. | WOFF2 أفضل |
المرجع التقني
- نوع MIME
font/woff2- Magic Bytes
77 4F 46 32wOF2 signature.- المطوّر
- World Wide Web Consortium (W3C)
- سنة التقديم
- 2014
- معيار مفتوح
- نعم — عرض المواصفات
wOF2 signature.
البنية الثنائية
يبدأ ملف WOFF2 بترويسة من 48 بايت: 4 بايتات للتوقيع (77 4F 46 32 = 'wOF2')، 4 بايتات لنوع sfnt (00 01 00 00 لـ TrueType، 4F 54 54 4F لـ CFF)، 4 بايتات للحجم الإجمالي، 2 بايت لعدد الجداول، 2 بايت محجوزة (يجب أن تكون صفراً)، 4 بايتات لحجم البيانات المفكوكة (totalSfntSize)، 4 بايتات لحجم البيانات المضغوطة، 2 بايت للإصدار الرئيسي، 2 بايت للإصدار الفرعي، وإزاحات اختيارية لكتل البيانات الوصفية والخاصة. بعد الترويسة يأتي دليل الجداول (Table Directory) بترميز UIntBase128. جدولا glyf وloca يخضعان لتحويلات إلزامية: glyf يُقسم إلى 7 تيارات فرعية وloca يُعاد بناؤه أثناء فك الضغط. يلي الدليل كتلة بيانات واحدة مضغوطة بـ Brotli تحتوي جميع الجداول. بيانات XML وصفية مضغوطة وكتلة بيانات خاصة اختيارية قد تظهر في نهاية الملف.
نقاط الضعف
- تلف ذاكرة مفكك ضغط Brotli
- قنبلة فك ضغط
- تتبع عبر تقسيمات خط فريدة
الحماية: لا يفك FileDex ضغط ملفات WOFF2 أو يرسمها. كل التحليل مرجعي فقط. المتصفحات تعزل فك ضغط الخطوط في عمليات مخصصة (Chrome Site Isolation، Firefox RDD). تحليل WOFF2 يتم بعد التحقق من CORS لمنع استخراج بيانات الخط عبر النطاقات.