تخطَّ إلى المحتوى
كورد فونت
كل الأدلة

النص الكردي على الويب

النص الكردي على الويب يختل بطرق محددة ومتكررة: وسم لغة خاطئ، أو تقليص أسقط أشكال الوصل، أو ورقة أنماط مكتوبة بيمين ويسار، أو رابط يقفز إلى الطرف الآخر من الجملة. لا شيء من هذا غريب. هذا هو الترتيب الذي نجهّز به صفحة، وما ينبغي فحصه عند كل خطوة.

اضبط lang و dir قبل أي شيء آخر

عنصر html يحتاج سمتين، ولكل واحدة عمل مختلف. dir="rtl" يحدد الاتجاه الأساسي، وهو ما يجعل الفقرة تبدأ من الحافة اليمنى ويضع علامات الترقيم في مواضعها. lang="ckb" يقول بأي لغة كُتب النص، والمتصفح يمرر ذلك مع الخط إلى مشكِّل النص.

السمة الثانية ليست زينة. وسم اللغة يختار نظام لغة OpenType داخل الخط، ونظام اللغة يستبدل قائمة الخصائص الافتراضية بدل أن يضيف إليها — لذلك يستطيع خط أن يصل الحروف في العربية بلا عيب ثم يتفكك إلى حروف منفصلة لحظة وسم النص نفسه على أنه كردي. دليلنا عن الحروف التي تنكسر يشرح هذا الفخ بالتفصيل؛ المهم هنا أن lang="ckb" هو ما يستدعيه، ولذلك هو ما يجب أن تختبر به.

علّم الاستثناءات في مواضعها. اقتباس كرمانجي داخل صفحة كردية يأخذ lang="kmr" dir="ltr" على عنصره، ومقطع كود إنجليزي يأخذ lang="en"، فيُشكَّل كل منهما ويُطابَق خطه بوصفه اللغة التي هو عليها فعلاً. ضبط اللغة مرة واحدة على html ثم لا شيء بعدها هو السبب المعتاد في أن تبدو صفحة مختلطة سليمة في فقرة وخاطئة في التي تليها.

حمّل خطاً واحداً بصيغة WOFF2 وقدّم تحميله

قدّم WOFF2 ولا شيء غيره. كل متصفح قادر على تشغيل موقع حديث يدعمه، والصيغ الأقدم لا تضيف سوى خطوات بناء وبايتات. توقّع ملفات أكبر من الخطوط اللاتينية التي اعتدتها: خط الكتابة العربية يحمل عدة محارف لكل حرف، ومعها جداول GSUB التي تختار بينها.

font-display يقرر ما يراه القارئ ريثما يُحمَّل الملف. swap يعرض الخط الاحتياطي أولاً ثم يستبدله، وهو الخيار الآمن في اللاتيني؛ أما في الكتابة العربية فقد لا يملك الخط الاحتياطي ڕ ڵ ۆ ێ ە أصلاً، فيأتي الرسم الأول مليئاً بمربعات تختفي بعد قليل. إن كان ذلك يزعجك أكثر من التأخير، فإن font-display: optional أو فترة حجب قصيرة هي المقايضة التي تريدها، وينبغي أن تكون قراراً لا auto موروثاً.

قدّم تحميل الخط الذي يظهر فوق الطية فقط — غالباً وزن واحد من خط المتن. استعمل link rel=preload مع as="font" و type="font/woff2" وسمة crossorigin، وهي مطلوبة حتى لو كان الملف على أصلك نفسه؛ من دونها يجلب المتصفح الملف مرتين. تقديم تحميل كل أوزان العائلة يجعلها تزاحم الـ HTML، فيصير الرسم الأول أبطأ لا أسرع.

التقليص: أشكال الوصل ليست اختيارية

التقليص يحذف المحارف التي لا تستعملها الصفحة، وهو في اللاتيني شبه مجاني. الكتابة العربية تكسر الافتراض الذي يقوم عليه. أشكال الحرف الأولية والوسطية والنهائية ليست محارف في نصك المصدر أبداً — الخط ينتجها لحظة التشكيل من محرف واحد — لذلك فإن أداة تبقي فقط على نقاط الترميز التي وجدتها في محتواك ترميها كلها.

النتيجة خط يجتاز كل فحص لحجم الملف ويعرض كل كلمة صفاً من حروف منفصلة. إن كنت تقلّص، فاستعمل أداة تحسب إغلاق المحارف على جداول التخطيط وتبقي الخصائص — pyftsubset مع الإبقاء على layout features يفعل ذلك — ولا تسلّم أداة التقليص قائمة حروف مجردة أبداً. حذف GSUB من خط بالكتابة العربية هو الغلطة نفسها بثوب آخر.

تقسيم الخط على عدة ملفات بـ unicode-range فيه خطر قريب منه: ضع الحروف الكردية وحدها في ملف والحروف العربية المشتركة في ملف آخر، فتصير الكلمة الواحدة محتاجة إلى خطين، ولا يصل أي مشكِّل بينهما. اختبر النسخة المقلّصة التي تنشرها، في متصفح، على صفحة موسومة بـ lang="ckb" — لا الملف الأصلي على جهازك. وحين تشك، انشر الخط كاملاً؛ خط أكبر مما يلزم يبقى مقروءاً.

اكتب الـ CSS مرة واحدة بالخصائص المنطقية

استعمل margin-inline-start بدل margin-left، و padding-inline بدل padding-left و padding-right، و text-align: start بدل text-align: left، و inset-inline-start بدل left. كل واحدة تُحسم وفق اتجاه العنصر، فيعني التصريح نفسه "جهة بداية القراءة" في الكردية وفي الإنجليزية.

هذه ورقة أنماط واحدة للاتجاهين بدل ورقة أساس وأخرى معكوسة لـ RTL. أسلوب الورقة المعكوسة يعمل يوم كتابته ثم ينحرف، لأن كل قاعدة فيزيائية جديدة عطل لا يظهر إلا في الاتجاه الذي لم تكن تنظر إليه. نحن نبني هذا الموقع بـ RTL أولاً — لغته الافتراضية الكردية — و LTR هو الحالة المعكوسة، وهذا عكس ما تُكتب به معظم أوراق الأنماط.

بعض الأشياء فيزيائية فعلاً وينبغي أن تبقى كذلك. إزاحة box-shadow و background-position و transform وأيقونة التشغيل لا تنقلب؛ أما سهم التالي وسهم الرجوع وشريط التقدم فتنقلب. احسم كل حالة على حدة بدل تحويل كل شيء ببحث واستبدال، ثم انظر إلى الاتجاهين في المتصفح.

الخطوط الاحتياطية والأرقام والرابط الذي يقفز

سلسلة font-family تنتهي عند حد ما، وذلك الحد في الكردية أهم منه في الإنجليزية. إن سقط المتصفح إلى خط نظام يملك الأبجدية العربية ولا يملك ڕ ڵ ۆ ێ ە، فستُجلب هذه الحروف الخمسة من خط ثالث، بوزن آخر ونسب أخرى، في وسط كلمات سليمة. سمِّ خطاً احتياطياً فحصته بنفسك من أجل الحروف الكردية، وافحصه على المنصات التي يستعملها قراؤك لا على المنصة التي تطوّر عليها.

الأجزاء اللاتينية داخل النص الكردي — اسم علامة، رقم إصدار، رابط، رقم هاتف — تعيد خوارزمية bidi ترتيبها بالنسبة إلى ما حولها. العرض المألوف قوس أو شرطة مائلة أو نقطة نهاية تقفز إلى الطرف الخاطئ من السطر، أو رابط يُقرأ صحيحاً لكنه يجلس في المكان الخاطئ من الجملة. النص ليس تالفاً؛ إنه يُرصف بقاعدة لم تطلب منها أن تتوقف.

اعزل المقطع فيتوقف ذلك. في HTML لُفَّه بعنصر bdi، أو اضبط unicode-bidi: isolate على العنصر الذي يحويه؛ وفي النص المجرد، حيث لا يمكنك إضافة وسوم، تؤدي محارف العزل من U+2066 إلى U+2069 العمل نفسه. استعمل direction و dir فقط لمحتوى هو فعلاً بالاتجاه الآخر، واختبر برابط حقيقي ورقم حقيقي داخل جملة حقيقية، لأن هذا صنف من الأعطال لا يظهر أبداً في نص حشو.