المدونة · منشور
أطلقت woff2 لـ Flutter
أطلقت حزمة woff2 لـ Flutter لحل مشكلة شائعة: التعامل مع خطوط لا تأتي بصيغة .ttf أو .otf، بل تصل غالباً بصيغة .woff أو .woff2، خصوصاً في سياقات الويب.
صُمّم FontLoader في Flutter لخطوط SFNT غير المضغوطة، أي bytes بصيغة TTF/OTF، ومحاولة تحميل ملف WOFF2 مباشرةً تنتهي بمشكلات. ولمعالجة ذلك، طوّرت حزمة تتيح استخدام ملفات الخطوط .woff و .woff2 في Flutter، إذ تفكّ ترميزها إلى bytes بصيغة SFNT ثم تسجّلها عبر مسار الخطوط القياسي في Flutter.
أبرز ما تقدمه حزمة woff2:
- فكّ ترميز WOFF1 و WOFF2
- تحميل الخطوط من الـ assets أو من الـ bytes
- wrapper لـ FontLoader في Flutter
- تحليل قواعد CSS @font-face
- دعم الخطوط المضمّنة عبر data: URL
- تسجيل دفعي لعدة أوزان وأنماط
- لا حاجة إلى أي كود plugin أصلي في تطبيقك
وُلدت هذه الحزمة من عملي على عرض SVG المتحرك، حيث تُضمَّن الخطوط كثيراً عبر CSS. ومن دون دعم سليم لـ WOFF/WOFF2، قد يفشل العرض المرئي حتى لو حُلِّل ملف SVG تحليلاً صحيحاً.
لن يحتاج كل تطبيق Flutter إلى هذه الحزمة، لكنها مفيدة للتطبيقات التي تتعامل مع محتوى خارجي مثل SVG و HTML و EPUB ومعاينات المستندات وتصديرات التصميم وعرض رسائل البريد الإلكتروني أو مسارات النصوص الغنية. ويمكنها أن تُغنيك عن خطوة تحويل مزعجة.
ما زالت الحزمة في إصدار مبكر، لكن وظائفها الأساسية صارت راسخة.
تعرّف على الحزمة هنا: pub.dev/packages/woff2 (يُفتح في علامة تبويب جديدة)
ويسعدني تلقي ملاحظات مطوري Flutter الذين لديهم خبرة في الخطوط المخصصة، أو عرض SVG، أو عرض المستندات، أو التطبيقات التي تعتمد بكثافة على التايبوغرافيا.