الطباعة الفارسية على الويب
لا تبدأ الطباعة الفارسية باختيار خط جميل، بل تبدأ بشرط تقني: يجب أن يحمل الخط جداول تشكيل الحروف، وإلا لم تتصل الحروف وصار النص غير مقروء. وبعد ذلك تبقى أربعة قرارات لا نظير لها في الطباعة اللاتينية: حجم ملف الخط، وموضع نصف المسافة، وشكل الأرقام، والحروف العربية الخاطئة في الفارسية.
- الدرس 5 من 12
- متوسط
- مجاني، دون تسجيل
ورقة تدقيق للطباعة الفارسية قبل تسليم العمل
يجب أن يكون
- الخط يحمل init وmedi وfina والحروف تتصل فعلا
- الأرقام الفارسية داخل الخط نفسه ولا تُستعار من غيره
- يوجد وزنان حقيقيان على الأقل فلا يولّد المتصفح غامقا اصطناعيا
- تباعد السطور موسَّع للفارسية فوق ما يكفي اللاتينية
- font-display على optional فلا يزحزح تبديل الخط التخطيط
يجب ألا يكون
- حرف عربي مكان حرف فارسي، ولو مرة في العناوين
- كلمات ملتحمة، أي موضع نصف مسافة تُرك فارغا لا مملوءا
- حرف التطويل لملء عرض أو لمساواة سطرين
- الضبط من الطرفين، وهو ما يفعله المتصفح بفتح المسافات بين الكلمات
- أرقام لاتينية وفارسية مختلطة في جدول واحد أو جملة واحدة
هذه القائمة عن الخط الفارسي ولا تحل محل تدقيق طباعي عام: فالسلم وطول السطر والتراتب تحتاج فحصا منفصلا.
آخر مراجعة: تُراجع الحقائق وأسماء الأدوات في هذا الدرس مقابل مصادرها في هذا التاريخ.
ما الذي تملكه الفارسية ولا تملكه اللاتينية؟
الفرق الجوهري أن شكل الحرف في الفارسية يتوقف على جيرانه. فللحرف الواحد أربعة أشكال: منفرد، وأول الكلمة، ووسطها، وآخرها. فحرف الباء يأخذ ثلاثة أشكال مختلفة على الشاشة في «برف» و«ابر» و«کتاب»، وهو في ذاكرة الحاسوب نقطة ترميز واحدة.
وهذه الجملة وحدها مصدر أكثر المتاعب التقنية في الطباعة الفارسية. فللخط اللاتيني ربط بسيط من نقطة الترميز إلى الرسم؛ أما الخط الفارسي فيحتاج طبقة قواعد تقرر أي رسم يُخط في كل موضع. والقسم التالي عن تلك الطبقة.
وثلاثة فروق أخرى تمس التصميم مباشرة. الأول أن الفارسية بلا حروف كبيرة، فإحدى أشهر روافع التراتب في اللاتينية غير موجودة هنا أصلا، ويحل محلها الوزن والحجم والمسافة. والثاني أن النقاط تحمل معنى وأربعة حروف لا تفترق إلا بها، مما يجعل خطا يرسمها صغيرة أو ملتحمة خطرا في الأحجام الصغيرة. والثالث أن نصيبا كبيرا من الحروف ينزل تحت خط الأساس، ولهذا يبدو النص الفارسي مزدحما عند التباعد الذي يكفي اللاتينية.
وفرق يُذكر أقل ويظهر في التخطيط: عروض الحروف الفارسية تتفاوت أكثر بكثير من اللاتينية. ففي الخط الذي يستعمله هذا الموقع تتراوح الأشكال المنفردة للأبجدية بين ٢٠٩ و١٢٢٣ وحدة من em من ألف وحدة. فكلمتان فارسيتان بعدد الحروف نفسه قد يكون لهما عرضان مختلفان تماما، وأي تقدير يقوم على عدّ الحروف أقل دقة في الفارسية منه في اللاتينية.
ماذا يجب أن يحمل خط الويب الفارسي؟
الجواب القصير: جداول التشكيل. وتسمى في صيغة OpenType «ميزات»، ولكل منها وسم من أربعة أحرف. والثلاث الحيوية للفارسية هي init وmedi وfina: شكل الأول والوسط والآخر. وإلى جانبها rlig التي تبني الرباطات الواجبة كلام ألف، وccmp التي تؤدي التركيب والتفكيك اللازمين.
وحين تغيب تلك الجداول لا يعطي المتصفح خطأ. يضع النص لكنه لا يصل الحروف، فتخرج نتيجة يعرف أي قارئ فارسي من نظرة أنها خاطئة دون أن يستطيع قول السبب. وهذا بالضبط ما يحدث حين تضع خطا لاتينيا على نص فارسي، أو حين تأخذ خطا مقلَّما نُزعت ميزاته.
والخط الذي رُكنت به هذه الصفحة يحمل هذه الميزات في ملفه: ccmp وinit وmedi وfina وrlig وcalt وlocl، مع ميزات اختيارية أخرى. قرأنا ذلك من الملف نفسه بمكتبة fontTools لا من وصف المسبك. وإن كنت تقيّم خطا فهذا الفحص قابل للتكرار ويستغرق خمس دقائق.
وثلاثة شروط أخرى تُفحص قبل الاختيار. الأول أوزان حقيقية؛ فعائلة بوزن واحد تعني أن المتصفح مضطر لتوليد غامق اصطناعي للتأكيد، والنتيجة في الفارسية رديئة. والثاني أرقام فارسية داخل الخط نفسه، وهو القسم الخامس من هذا الدرس. والثالث ترخيص ويب، وهو في مشروع عميل مسألة قانونية لا تفصيلا تقنيا.
كيف يجد حرف فارسي شكله النهائي
كل خطوة جدول داخل ملف الخط. وإن غاب واحد لم تُنفَّذ الخطوات التي بعده.
-
1
تُخزَّن نقطة ترميز واحدة
الحرف في الذاكرة رقم واحد، سواء أكان أول الكلمة أم آخرها.
-
2
ccmp: التركيب والتفكيك
يُوضع الحرف وعلاماته في صورة تستطيع القواعد التالية العمل عليها.
-
3
init وmedi وfina
الجيران يقررون أي الأشكال الأربعة يُخط. وبلا هذا الجدول تبقى الحروف منفصلة.
-
4
rlig: الرباطات الواجبة
يصير اللام والألف رسما واحدا. وهذا الرباط ليس اختياريا وبدونه يبدو النص خاطئا.
-
5
الرسم على الشاشة
ما يراه القارئ. نقطة ترميز واحدة في أول المسار، وأشكال عدة ممكنة في آخره.
هذا الترتيب للفارسية والعربية. وللغات أخرى بالخط نفسه قواعدها، ويستطيع خط أن يفصلها بميزة locl.
تخفيف الخط دون كسره
الخط الفارسي أكبر من نظيره اللاتيني، لأنه يحمل عدة رسوم للحرف الواحد لا رسما واحدا. والطريقة القياسية لتخفيفه هي التقليم: حذف أجزاء من الخط لن يحتاجها هذا الموقع أبدا.
والأرقام الحقيقية لهذا الموقع، مقروءة من الملفات نفسها: الخط الكامل بالوزن العادي ٤٢٧٠٨ بايت، أي نحو ٤١.٧ كيلوبايت، بـ٧٢٦ رسما و٦٥٢ نقطة ترميز. والنسخة المقلَّمة ٢٥٢٧٢ بايت، أي نحو ٢٤.٧ كيلوبايت، بـ٥٩٩ رسما و٥٢٧ نقطة ترميز. والأوزان الثلاثة التي يحمّلها هذا الموقع فعلا تبلغ معا ٧٦٣٦٤ بايت، نحو ٧٤.٦ كيلوبايت.
وأما ما حُذف، وهنا يفترق التقليم عن التخمين. ذهبت ١٢٥ نقطة ترميز، ١٠٧ منها حروف لاتينية بعلامات، من الألف بالمدّة الطويلة إلى السين بالهاتشيك: أي أبجديات لغات لا يكتب بها هذا الموقع. وخمس عشرة أخرى علامات تركيبية. ولم يُحذف حرف فارسي أو عربي أو تركي واحد، والحروف الخاصة بالتركية باقية كلها، لأن هذا الموقع يُكتب بأربع لغات تتقاسم كلها خطا واحدا.
والفخ الذي يُفسد هذا العمل أكثر من غيره: التقليم على أساس «الحروف المستعملة في الصفحة». ففي اليوم الذي يكتب فيه كاتب كلمة تحوي حرفا خارج تلك القائمة، يُعرض ذلك الحرف بخط آخر. والفخ الثاني أسوأ وخاص بالخط الفارسي: إن ضبطت أداة التقليم بحيث لا تبقي ميزات التخطيط، ذهبت معها جداول init وmedi وfina وتفككت الحروف. وأداة pyftsubset في وضعها الافتراضي تبقي مجموعة من هذه الميزات؛ والخطر حين يعيد أحدهم كتابة تلك القائمة يدويا على مقاس الحاجة اللاتينية.
وضبط آخر لا يقل أهمية عن الحجم: font-display. فمع swap يعرض المتصفح بديلا أولا ثم يبدّل في منتصف الصفحة، وعند تلك اللحظة يتزحزح التخطيط. ومع optional، إن لم يصل الخط في وقته بقي البديل طوال تلك الزيارة ولم يحدث تبديل البتة. وللفارسية التي تختلف عروض حروفها كثيرا عن البديل، يكون هذا الفرق في انزياح التخطيط كبيرا.
أين تقع نصف المسافة بالضبط؟
نصف المسافة حرف غير مرئي، U+200C، يبقي جزأي الكلمة منفصلين دون إدراج مسافة كاملة. وهو صحيح في الطباعة الفارسية المعيارية، وموضعه يتبع قاعدة واضحة.
والقاعدة هي: لا تلزم نصف المسافة إلا حيث يتصل آخر حرف من الجذر بما بعده. فإن انتهى الجذر بألف أو دال أو ذال أو راء أو زاي أو ژ أو واو، فذلك الحرف لا يتصل بما بعده أصلا وله شكله المنفصل، فالصورة الملتحمة صحيحة من البداية ولا تحتاج نصف مسافة. ولهذا تصح «کارها» و«بارگذاری» و«بالاتر» ولا يجوز فصلها، بينما الصورة المعيارية للفعل المضارع تحمل نصف مسافة بين السابقة وبقية الكلمة.
والخطأ الأسوأ من الحالتين: حذف نصف المسافة بدل استبدالها. فإن نزعت ذلك الحرف ولم تضع مكانه شيئا التحمت الكلمتان، وخرجت صورة خاطئة في الفارسية المعيارية وعسيرة القراءة في الأحجام الصغيرة أيضا. فإن لم ترد لأي سبب حرفا غير مرئي في نصك، فضع مكانه مسافة عادية لا لا شيء.
ولنقل موقف هذا الموقع صراحة، لأن القارئ يراه على هذه الصفحة بعينها: نستعمل في نصوصنا المنشورة مسافة عادية بدل نصف المسافة. وهذا اختيار تحريري لا ادعاء بصواب لغوي؛ وسببه أن الحرف غير المرئي في النص يتصرف على نحو لا يُتوقع في البحث وفي أدوات النصوص، ونفضّل ألا يحوي نصنا شيئا لا يُرى. فإن قررت غير ذلك وأبقيت نصف المسافة فذلك وجيه تماما. والذي لا يوجَّه بحال هو الصورة الملتحمة.
وملاحظة عملية للكتابة: في تخطيط لوحة المفاتيح الفارسية المعيارية تكون نصف المسافة على شفت مع المسافة. فإن كان فريق المحتوى لديك يجهل ذلك، صار نصك خليطا من الصور الثلاث، وتلك أسوأ نتيجة ممكنة، لأن بحث موقعك نفسه سيكف عن إيجاد الكلمات.
هل يتصل آخر حرف من الجذر بما بعده؟
هنا موضع نصف المسافة
- می + شود
- خانه + ها
- رتبه + بندی
- نوشته + ام
الصورة الملتحمة صحيحة من البداية
- کارها
- بارگذاری
- بالاتر
- کشورها
الأرقام الفارسية من زاوية الطباعة
هناك ثلاث عائلات من الأرقام يشبه بعضها بعضا وليست واحدة: اللاتينية من 0 إلى 9، والفارسية، والعربية الهندية المستعملة في النص العربي. وتختلف الفارسية عن العربية الهندية في أربعة من الأشكال العشرة وتشترك في البقية، وهذا التشابه هو ما يجعل الخلط بينها سهلا.
وطباعيا يهم أمران. الأول أن يحوي خطك الأرقام الفارسية فعلا؛ فإن لم يحوها استعارها المتصفح من خط آخر، فتكتسب الأرقام في وسط الجملة فجأة ارتفاعا وسماكة مختلفين. ويمكنك رؤية ذلك في ثلاثين ثانية: اكتب رقما فارسيا بجانب نصك وانظر عن قرب.
والثاني عرض الأرقام. ففي الجداول وحيثما تتراكم الأرقام رأسيا، يجب أن تشترك في عرض واحد وإلا انهار العمود. وأكثر الخطوط الفارسية تحترم هذا، لا كلها، وطريقة الفحص أن تكتب عدة أرقام بأرقام مختلفة بعضها تحت بعض وترى هل يبقى حدها الأيمن خطا مستقيما.
وخط هذا الموقع يحوي العائلات الثلاث: اللاتينية والفارسية والعربية الهندية، وهذا ما يتيح للنسختين الفارسية والعربية من الموقع أن تعملا بملف خط واحد مع احتفاظ كل منهما بأرقامها الصحيحة.
وحد لا يتجاوزه هذا الدرس عمدا: الأرقام الفارسية في النماذج مسألة منفصلة وتقنية لا طباعية. فأنماط التحقق المعيارية لا تعرف الأرقام الفارسية أرقاما، وإن لم تتدبر لها أمرا تلقّى المستخدم الذي كتب رقمه بلوحة مفاتيح فارسية رسالة «رقم غير صالح». وذلك النقاش وحله في مبادئ تصميم واجهة المستخدم.
الحروف العربية الخاطئة في الفارسية
تتقاسم الفارسية والعربية خطا واحدا وتفترقان في بضعة حروف، ولهذا تمتلئ النصوص الفارسية بحروف عربية دون أن ينتبه أحد. وأهمها ثلاثة: الياء العربية «ي» مكان الياء الفارسية ی، والكاف العربية «ك» مكان الكاف الفارسية ک، والتاء المربوطة «ة» التي لا موضع لها في الفارسية أصلا وينبغي أن تكون هاء.
ولماذا يهم هذا وهي على الشاشة شبه متطابقة؟ لأنها عند الحاسوب ليست متطابقة. فبحث موقعك لن يعد كلمة مكتوبة بالكاف الفارسية والكلمة نفسها مكتوبة بالكاف العربية شيئا واحدا، ويختل الترتيب الأبجدي، ويرى محرك البحث سلسلتين مختلفتين. وصفحة كُتب عنوانها بالياء العربية ليست الصفحة نفسها لاستعلام كتبه المستخدم بالياء الفارسية.
ولها أثر طباعي أيضا: فالشكل الأخير للياء الفارسية والياء العربية مختلف في أكثر الخطوط، لأن إحداهما تحمل نقطتين والأخرى لا. والنص المخلوط يبدو غير متسق في أواخر الكلمات ولا يعرف أحد لماذا.
والعائلة الثانية أشكال الهمزة. ففي الفارسية المعيارية تُكتب كلمات مثل «تاثیر» و«مبدا» و«جزو» بلا همزة. وإضافة همزة فوق الهاء للإضافة لها بدائل أفضل في الفارسية المعاصرة: مسافة وياء، أو لا شيء البتة.
ومنشأ هذه الحروف موضع محدد عادة: لوحة المفاتيح. فالتخطيطات العربية وبعض تخطيطات الهاتف الافتراضية تنتج حروفا عربية. فإن كان لديك فريق محتوى فاحسم هذا مرة في اجتماع لا صفحة صفحة؛ والمسار السريع في هذا الدرس يحمل أمرا يجد العائلات الثلاث في تشغيل واحد.
التطويل والغامق المزيف: أمران لا يُفعلان
الأول تطويل الحروف بحرف التطويل، U+0640، الذي يحوّل الكلمة إلى صورة ممدودة مثل کـــتاب. وفي الخط العربي التطويل أداة حقيقية دقيقة لها موضعها المحدد. أما في نص الويب فيُستعمل غالبا لملء عرض أو لجعل سطرين متساويين، وهنا بالذات يصير مشكلة: فالكلمة لم تعد السلسلة نفسها، والبحث لا يجدها، وقارئ الشاشة يقرؤها على نحو آخر، وإذا وصل النص إلى الهاتف صار تطويل ضُبط للحاسب بلا معنى.
والثاني الغامق المزيف. فحين لا يملك خط وزنا غامقا وتطلب أنت الوزن ٧٠٠، يستطيع المتصفح أن يغلّظ الحروف بنفسه. والنتيجة في اللاتينية محتملة؛ وفي الفارسية لا، لأن التغليظ الآلي يملأ الأجواف داخل الحروف ويلصق النقاط بالجسم. والصواب أن تملك وزنا حقيقيا، وإن لم تملكه فابنِ التأكيد بالحجم أو اللون لا بوزن غير موجود.
والثالث الذي يُعرف كخطأ أقل: ضبط النص من الطرفين. والإغراء في الفارسية أقوى، لأن الخط العربي يسمح بالتطويل ويبدو أن الضبط ممكن بلا فجوات قبيحة. لكن المتصفحات لا تفعله بمدّ الحروف بل بفتح المسافات بين الكلمات، والنتيجة أنهار البياض نفسها. ويقول البند ١.٤.٨ من WCAG صراحة ألا يُضبط النص من الطرفين.
والخلاصة العملية للثلاثة: كل منها محاولة لحل مشكلة تخطيط بأداة طباعية. فحين تبدو كتلة نص خاطئة يكون الجواب عادة تغيير عرض العمود أو تباعد السطور لا العبث بالحروف نفسها.
المسار السريع مع الذكاء الاصطناعي
لهذا العمل نصفان، وأولهما لا يحتاج ذكاء اصطناعيا البتة. فالحروف العربية والتطويل والأرقام العربية الهندية كلها حروف محددة، فأمر grep واحد يجدها جميعا في ثوان ولا يفوته شيء. والنصف الثاني مواضع نصف المسافة الخالية، وهناك لا يكفي النمط النصي وحده، لأن معرفة أن «کارها» صحيحة وأن الصورة الملتحمة لـ«رتبه بندی» خاطئة تتطلب معرفة الكلمة نفسها. وهنا يفعل النموذج فعلا ما لا تفعله أداة.
- ضع نص صفحاتك في ملف نصي واحد. وفي موقع ووردبريس تكفي أداة التصدير، أو حتى نسخ نص بضع صفحات مهمة؛ ولا حاجة لإخراج قاعدة البيانات كلها.
- شغّل أمر grep أدناه على ذلك الملف. فكل سطر يطبعه يحوي حرفا خاطئا على الأقل، ويأتي معه رقم السطر. وإن لم يُطبع شيء فقد انتهى هذا النصف من العمل.
- ثم أعطِ النص نفسه لنموذج بالوصفة الثانية. ونموذج أقوى أنفع هنا من نموذج سريع، لأن القرار في كل كلمة حكم لغوي؛ واختيارنا الحالي محفوظ في <a class="text-link" href="/ai/">قسم الذكاء الاصطناعي</a>.
- أكّد ناتج النموذج كلمة كلمة ولا تشغّل استبدالا شاملا عليه. فهذه الخطوة الوحيدة التي يجب ألا تُؤتمت، لأن استبدالا خاطئا هو بالضبط ما يحوّل «کارها» إلى كلمتين ويفسد نصا كان سليما.
وصفة جاهزة للنسخ
الخطوة الأولى، بلا ذكاء اصطناعي. يجد هذا الأمر كل حرف عربي وكل تطويل وكل شكل همزة وكل رقم عربي هندي في ملفك، مع رقم سطره:
grep -nP '[\x{064A}\x{0643}\x{0629}\x{0640}\x{0621}\x{0623}-\x{0625}\x{0654}\x{06C0}\x{0660}-\x{0669}]' FILE
والصمت يعني أنه نظيف. وأي مخرَج حالة تُصلَح يدويا.
الخطوة الثانية، للنموذج:
هذا النص بالفارسية.
{النص}
جد الكلمات التي تُرك فيها موضع نصف المسافة خاليا والتحم جزآها، ولا شيء غيرها.
والقاعدة التي عليك تطبيقها: لا تلزم نصف المسافة إلا حيث يتصل آخر حرف من الجذر بما بعده. فإن انتهى الجذر بألف أو دال أو ذال أو راء أو زاي أو ژ أو واو فالصورة الملتحمة صحيحة ولا يجوز فصلها.
أعطِ الجواب قائمة: الكلمة التي وجدتها، وصورتها الصحيحة بمسافة عادية، والسطر أو الجملة التي وردت فيها.
وإن كانت هناك كلمة لست واثقا منها فضعها في قسم منفصل عنوانه «لست واثقا» واكتب السبب. ولا تخلط التخمين باليقين. ولا تغيّر النص ولا تعد نصا مصححا؛ أعطِ القائمة فقط.
قبل أن تثق بالناتج: ثلاثة حدود لا يتجاوزها هذا المسار. الأول أن grep يجد الحروف لا المعاني: فكلمة كُتبت بحروف صحيحة وإملاء خاطئ تمر من الغربال. والثاني أن النماذج تخطئ في الفارسية أيضا، وخاصة في أسماء العلم والكلمات المقترضة؛ ولهذا تطلب منها الوصفة فصل الحالات غير المؤكدة، وذلك هو القسم الذي ينبغي أن تقرأه بأشد عناية. والثالث، وهو أهم من الاثنين: لا تشغّل أبدا ناتج هذا العمل كاستبدال شامل على قاعدة بيانات موقعك. فاستبدال واحد خاطئ عبر صفحات لها ترتيب أغلى من أي خطأ إملائي؛ فطبّق التغييرات صفحة صفحة وبقراءة بشرية لكل واحدة.
الذكاء الاصطناعي في هذا العمل
موقفنا هنا أصرح منه في بقية دروس هذا المسار: في الطباعة الفارسية ضع النماذج في دور مفتش النصوص لا منتج الصور. فإيجاد الحروف العربية، ورصد مواضع نصف المسافة الخالية، وتوحيد الأرقام، ثلاثة أعمال تجيدها فعلا. أما توليد صورة مكتوب فيها نص فارسي فما زال شيئا لا يؤديه أي منها باعتمادية، وقسم الخطر يقول لماذا.
أدوات تساعد فعلا
- Claude الأنسب للوصفة الثانية، لأنه يمسك نصا طويلا دفعة واحدة، وحين تطلب منه فصل الحالات غير المؤكدة يفصلها فعلا بدل أن يكتب كل شيء بنبرة واثقة. وإيران ليست في أي من قائمتي البلدان المدعومة لدى أنثروبيك، وقد قرأنا ذلك على صفحتها.
- Gemini أفضل حين لا تملك نصا بل صورة للتصميم فقط: يقرأ الصورة ويقول أين لم تتصل الحروف أو أين لا تشبه الأرقام بقية الجملة. وصفحة غوغل نفسها تقول إن تطبيق جيميناي على الويب متاح في أكثر من مئتين وثلاثين بلدا وإقليما، وإيران ليست في تلك القائمة.
- fontTools ليس ذكاء اصطناعيا، وهو الأداة نفسها التي قيست بها أرقام هذا الدرس. تقرأ به قائمة ميزات خط وقائمة نقاط ترميزه من الملف نفسه، وهو الذي يؤدي التقليم أيضا. وهو مجاني ويعمل على حاسوبك ولا يخرج أي ملف من جهازك.
اين ينقلب ضدك
الخطر المحدد في هذا المجال هو الصور. فنماذج توليد الصور بلغت شيئا مع النص اللاتيني، أما الفارسية فلا تعطي فيها جوابا موثوقا، والدليل من المصنّعين أنفسهم: لا ينشر أي منهم رقما عن «النص داخل الصورة»، ويكتب كل منهم صفة بدلا من ذلك؛ فواحد يقول «متقدم»، وواحد يقول إنه «قد تبقى فيه مشكلات»، وواحد يسمي نموذجه «متخصصا في الطباعة». ثلاث صفات وصفر قياس، ولا يذكر أي منهم الفارسية البتة. وقد كتبنا ذلك في جدول أفضل ذكاء اصطناعي لتوليد الصور، ولهذا السبب أيضا لم يصر عمودا هناك.
والنتيجة العملية: لا تولّد لافتة ولا شعارا ولا أي صورة فيها نص فارسي. اصنع الصورة بلا نص وضع النص فوقها في أداة تصميم أو في HTML نفسه. فهذا هو الطريق الوحيد الذي تتصل فيه الحروف على وجهها ويبقى فيه النص قابلا للبحث والتحديد.
والخطر الثاني أكثر تقنية ويخص الغامق المزيف: إن كتب لك نموذج شفرة CSS وطلب وزنا لا يملكه خطك، ولّد المتصفح غامقا اصطناعيا والنتيجة في الفارسية رديئة. والعلاج أن تطفئ font-synthesis صراحة في CSS الخاص بك، فترى الفرق بدل نتيجة رديئة وتضيف الوزن الحقيقي. ولمعرفة كيف يمكن الدفع لكل من هذه الأدوات من إيران انظر دليل الشراء.
المصادر: Microsoft: OpenType layout feature tag registry fontTools: the subsetter Anthropic: supported countries Google: where the Gemini web app is available
حدود هذه النصيحة
هذا الدرس عن الفارسية على الويب وله حدود في مواضع. الأول الخط اليدوي: فكل ما جاء هنا عن حروف يصنعها محرك تخطيط، والنستعليق والشكسته عالم آخر بقواعده الخاصة لا يمكن إعادة بنائه في HTML. والثاني خلط الفارسية واللاتينية في جملة واحدة، وهي مسألة ثنائية الاتجاه جوابها في تخطيط الصفحة لا في الخط؛ وذلك النقاش في درس مبادئ تصميم واجهة المستخدم. والثالث الطباعة، حيث تختلف الوحدة والفضاء اللوني وإمكانية ضبط السطور يدويا. وحد يستحق القول صراحة: أرقام ملفات الخط في هذا الدرس صحيحة لخط هذا الموقع وحده، ونسخها إلى مشروع آخر لا يثبت شيئا. فطريقة القياس قابلة للتكرار، أما الأرقام نفسها فلا.
من عملنا نحن
فتحنا خط هذا الموقع بمكتبة fontTools ووضعنا الملفين جنبا إلى جنب. فالوزن العادي الكامل يحمل ٧٢٦ رسما و٦٥٢ نقطة ترميز في ٤٢٧٠٨ بايت؛ والمقلَّم يحمل ٥٩٩ رسما و٥٢٧ نقطة ترميز في ٢٥٢٧٢ بايت. والفرق ١٢٥ نقطة ترميز، وحين طبعنا قائمة المحذوف كان ١٠٧ منها حروفا لاتينية بعلامات و١٥ علامات تركيبية. ويحمل الملفان مجموعة الميزات نفسها بالضبط: aalt calt ccmp dlig fina init locl medi rlig salt ss01. أي أن التقليم ترك جداول الاتصال دون مساس، وهذا بالذات ما يفصل تقليما صحيحا عن تقليم مكسور.
وشيء كشفه القياس نفسه ولم نكن نعرفه من قبل: الأوزان الثلاثة التي يحمّلها الموقع لها التغطية نفسها تماما، ٥٩٩ رسما و٥٢٧ نقطة ترميز، والتركية داخلها كاملة؛ فالحروف ı وİ وş وğ وç وö وü كلها باقية. أي أن النسخة التركية من الموقع تعمل بالملف نفسه الذي تعمل به الفارسية والعربية، ولكي يخدم خط واحد أربع لغات لم يكن القابل للحذف فعلا سوى أبجديات لغات لا يكتب بها هذا الموقع أصلا.
اسئلة متابعة حقيقية
أيكفي خط واحد للغات الأربع أم تحتاج كل لغة خطها؟
إن كانت التغطية موجودة فخط واحد يكفي بل هو أفضل. فموقع يحمّل خطا منفصلا لكل لغة يرسل ملفات أكثر ويمنح صفحاته شخصيات بصرية مختلفة. والذي ينبغي فعله فحص التغطية للغات الأربع قبل الاختيار؛ والطريقة في هذا الدرس ولا تستغرق أكثر من خمس دقائق.
كيف أعرف أن الخط الذي أملكه يحوي أرقاما فارسية؟
أبسط طريقة بصرية: اكتب رقما فارسيا وسط جملة فارسية وانظر عن قرب. فإن اختلف ارتفاع الأرقام أو سماكتها عن بقية الجملة فالخط لا يحويها والمتصفح استعارها من مكان آخر. والطريق الأقطع قراءة قائمة نقاط الترميز من الملف بـfontTools، وهي الأداة نفسها التي قيست بها أرقام هذا الدرس.
أأبقي نصف المسافة في موقعي أم أستبدلها بمسافة عادية؟
كلا الخيارين وجيه وقد اخترنا نحن المسافة العادية، لكن الذي يهم فعلا هو الاتساق. فموقع تظهر فيه الصور الثلاث هو أسوأ حالة، لأن البحث الداخلي واستعلامات المستخدمين لا يلتقيان. فاتخذ قرارا واحدا، واكتبه في دليل أسلوب فريقك، وأصلح الصفحات القديمة حين تزورها لسبب آخر فقط، لا بتشغيل شامل واحد.