هناك خطوات عملية ومحددة أحب اتّباعها كلما فكرت في تصميم
فونت عربي يدعم قواعد اليونيكود، وأحب أن أشرحها بشكل مرتب لأن التفاصيل هنا تصنع الفرق.
أول شيء أبدأ به هو جمع الخريطة الكاملة للحروف والنطاقات الخاصة بالعربية في اليونيكود: نطاقات مثل U+0600–U+06FF وU+0750–U+077F وU+08A0–U+08FF، بالإضافة إلى علامات التشكيل (combining marks) والأرقام العربية (U+0660–U+0669). هذا يساعدني أقرر أي رموز سأدعم مباشرة، وأيها سأتركها للشكل المركب. أحافظ دائماً على أن الخط لا يكتب حروف العرض من 'Arabic Presentation Forms' كرموز منفصلة؛ هذه أشكال عرضية تُولَّد عبر محرك التشكيل وليس عن طريق رموز جديدة.
بعد ذلك أنتقل إلى بناء مجموعة الجليفات: أصنع أشكالاً أساسية لكل حرف في حالاته الأربعة (isolated, initial, medial, final) أو أُعتمد على تبديلات سياقية عبر جداول الاستبدال ('GSUB'). أُعرّف مجموعات للتشكيل وأضع علامات ومرتكزات (anchors) لكل حرف وجليف التشكيل ليعمل نظام 'mark' و'mkmk' بشكل جيد. ثم أكتب قواعد OpenType مثل 'init', 'medi', 'fina', 'isol', 'rlig', 'calt' و'ccmp' لتغطية الترابط واللاتيهات المطلوبة.
الأمر الثالث يتعلق بالاختبار والتكامل: أختبر الخط عبر محركات التشكيل مثل HarfBuzz وCoreText وUniscribe على منصات مختلفة، وأجرب النصوص ذات التشكيل الكثيف، واختبارات ZWJ/ZWNJ، والاتجاه ثنائي الاتجاه (bidirectional) مع نصوص إنجليزية داخل العربية. أخيراً، أعمل على تحسين المسافات (spacing)، والتحجيم (hinting)، وأضبط الميتاداتا في جدول cmap وGSUB/GPOS. هكذا يخرج الفونت عملياً عربياً صالحاً ومتوافقاً مع قواعد اليونيكود، ويشعر المستخدم بأنه يكتب بشكل طبيعي وسلس.