.WOFF2 Web Open Font Format 2
.woff2

Web Open Font Format 2

ملف WOFF2 هو حاوية مضغوطة بخوارزمية Brotli تغلف خطوط TrueType أو OpenType للاستخدام على الويب. الصيغة تقسم بيانات الحروف (glyf) إلى 7 تيارات فرعية قبل الضغط، مما ينتج ملفات أصغر بنسبة 30% من WOFF و50–60% من TTF الخام. جميع المتصفحات الحديثة تدعم WOFF2.

بنية الصيغة
Header table directory
Tables glyf · cmap
Outlines glyph paths
خطوطبدون فقدانW3C2014
بواسطة FileDex
غير قابل للتحويل

تحويل خطوط 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

معيار حائز على جائزة Emmy
WOFF2 ساهم في فوز W3C بجائزة Emmy 2021
منحت الأكاديمية الوطنية لفنون وعلوم التلفزيون جائزة Emmy تقنية لعمل W3C في توحيد تقنيات الخطوط، بما في ذلك WOFF2 وخط أنابيب ضغط Brotli.
وُلد من ضغط الخطوط
Brotli صُمم خصيصاً لـ WOFF2
طور مهندسا Google — Jyrki Alakuijala وZoltan Szabadka — خوارزمية Brotli في 2013 لضغط خطوط الويب. لاحقاً أصبحت خوارزمية HTTP عامة (RFC 7932، يوليو 2016).
تقسيم إلى 7 تيارات
WOFF2 يقسم بيانات الحروف لـ 7 تيارات فرعية
قبل ضغط Brotli، يُفكَّك جدول glyf إلى: nContour، nPoints، أعلام، إحداثيات، مركبات، صناديق حدود، وتعليمات — لتحسين نسبة الضغط.
جدول loca يختفي
WOFF2 لا يخزن جدول loca إطلاقاً
فهرس مواقع الحروف (loca) يُعاد بناؤه أثناء فك الضغط عبر تتبع بيانات glyf. حذفه يوفر بايتات ويزيل مصدر تلف محتمل.

ما هو WOFF2؟

صيغة WOFF2 (Web Open Font Format 2.0) هي معيار W3C لتغليف خطوط TrueType وOpenType باستخدام ضغط Brotli ومعالجة مسبقة خاصة بالخطوط. أصبحت توصية W3C رسمية في 1 مارس 2018، بتحرير Vladimir Levantovsky وبمرجع تنفيذ مفتوح المصدر من Google.

اكتشف التفاصيل التقنية

خط أنابيب الضغط

لا يكتفي WOFF2 بضغط Brotli المباشر لجداول الخط. قبل الضغط، تُطبَّق مرحلة معالجة مسبقة مستمدة من تقنية MicroType Express من Monotype:

  1. تحويل جدول glyf. يُقسَّم جدول حدود الحروف — وهو عادةً أكبر جدول في خط TrueType — إلى 7 تيارات فرعية مستقلة: قيم nContour، قيم nPoints، الأعلام (flags)، الإحداثيات (x/y)، بيانات الحروف المركبة، صناديق الحدود، وتعليمات الـ hinting. تجميع البيانات المتشابهة يسمح لـ Brotli بضغطها بكفاءة أعلى بكثير.

  2. حذف جدول loca. جدول loca الذي يخزن مواقع الحروف في glyf لا يُضمَّن في البيانات المضغوطة. يُعاد بناؤه أثناء فك الضغط عبر تتبع بيانات glyf المستعادة.

  3. ضغط 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 مع الصيغ البديلة
المقارنة المعيار الفائز
.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 32 wOF2 signature.
المطوّر
World Wide Web Consortium (W3C)
سنة التقديم
2014
معيار مفتوح
نعم — عرض المواصفات
00000000774F4632 wOF2

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 وصفية مضغوطة وكتلة بيانات خاصة اختيارية قد تظهر في نهاية الملف.

2012اقترحت Google صيغة WOFF2 مع خوارزمية ضغط جديدة سُميت لاحقاً Brotli2014نشرت W3C الصيغة كتوصية مرشحة؛ Chrome 36 يدعم WOFF2 (يوليو)2015Firefox 39 يضيف دعم WOFF2 (يونيو)؛ Google تفتح مصدر Brotli2016Safari 10 وEdge 14 يدعمان WOFF2؛ Google Fonts تتحول لتقديم WOFF2 افتراضياً؛ Brotli يصبح RFC 7932 (يوليو)2018W3C ترفع WOFF2 لمرتبة توصية كاملة في 1 مارس؛ 70% من المواقع الكبرى تستخدم خطوط الويب2021عمل W3C في توحيد تقنيات الخطوط يحصل على جائزة Emmy تقنية وهندسية2024W3C تنشر أحدث مراجعة تحريرية لمواصفة WOFF2 (8 أغسطس 2024)
ضغط TTF إلى WOFF2 fonttools
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.ttf'); f.flavor='woff2'; f.save('font.woff2')"

يطبق ضغط Brotli مع تحويلات glyf/loca الخاصة بالخطوط. اختُبر بـ fonttools 4.61.1 وحقق تقليصاً بنسبة 54%.

فك ضغط WOFF2 إلى TTF fonttools
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.woff2'); f.flavor=None; f.save('font.ttf')"

يستعيد ملف TTF الأصلي بفك ضغط Brotli وعكس تحويلات glyf/loca. الناتج مطابق دلالياً للخط المصدر.

تقليص خط للحروف اللاتينية + WOFF2 fonttools
pyftsubset font.ttf --unicodes=U+0000-00FF --flavor=woff2 --output-file=font-latin.woff2

يزيل جميع الحروف خارج Basic Latin وLatin-1 Supplement ثم يضغط بـ Brotli. اختُبر وكان المقلّص أصغر بنسبة 13%.

سرد جداول ملف WOFF2 fonttools
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.woff2'); print(sorted(f.keys()))"

يقرأ دليل جداول WOFF2 ويطبع جميع الجداول الموجودة. اختُبر: الملف التجريبي احتوى 11 جدولاً.

منخفض

نقاط الضعف

  • تلف ذاكرة مفكك ضغط Brotli
  • قنبلة فك ضغط
  • تتبع عبر تقسيمات خط فريدة

الحماية: لا يفك FileDex ضغط ملفات WOFF2 أو يرسمها. كل التحليل مرجعي فقط. المتصفحات تعزل فك ضغط الخطوط في عمليات مخصصة (Chrome Site Isolation، Firefox RDD). تحليل WOFF2 يتم بعد التحقق من CORS لمنع استخراج بيانات الخط عبر النطاقات.

woff2 (Google) أداة
مرجع التنفيذ لترميز وفك ترميز WOFF2 من Google باستخدام ضغط Brotli
مكتبة Python للتعامل مع الخطوط تدعم قراءة وكتابة وتقليص WOFF2
glyphhanger أداة
أداة Node.js تمسح موقعاً وتقلص الخطوط للحروف المستخدمة فقط
FontForge أداة
محرر خطوط مفتوح المصدر يدعم استيراد وتصدير WOFF2
Google Fonts خدمة
أكبر مكتبة خطوط مجانية تقدم أكثر من 1,500 عائلة خطوط بصيغة WOFF2