طلب أحد عملائي المساعدة في حل مشكلة تتعلق بظهور علامات التنصيص في موقعه بشكل غير ملائم للغة العربية على الرغم من استخدام خط IBM Plex Sans Arabic والمعروف بدعمه الممتاز للغة العربية.
1 – المشكلة
مشكلة العميل هي ظهور علامات التنصيص المزدوجة المائلة العلوية والسفلية التي تراها في الصورة السابقة، بدلاً من علامات التنصيص المزدوجة المخصصة للغة العربية («»)، أو علامات التنصيص المزدوجة المستقيمة (") والتي هي جزء أساسي من مجموعة ASCII الأساسية والمستخدمة في جميع الأنظمة بشكل واسع لضمان التوافق العالمي.
2 – تقريب الفكرة
افترض معي أننا نكتب موضوع على ووردبريس مكون من كلمة واحدة فقط محاطة بعلامتين تنصيص ولتكن كلمة ("أحمد").
أول زر سوف تضغط عليه هو الزر (shift + ط) من لوحة المفاتيح لتكتب أول علامة تنصيص ثم ستضغط بقية الأزرار لكتابة باقي النص.
المهم أنك حينما ضغطت على هذا الزر، يتلقى الكمبيوتر إشارة كهربية يتعرف من خلالها نظام التشغيل على الرمز الرقمي الفريد (Unicode Code Point)، وبذلك تتحول كلمة ("أحمد") إلى سلسلة من الرموز الرقمية، وهي:
تسجيل الدخول لعرض الكود
عند عرض النص على الموقع، يستبدل المتصفح هذه الرموز الرقمية الفريدة بالأشكال البصرية (glyphs) المخصصة لهذه الرموز والمخزنة داخل الخط المستخدم؛ فيؤدي ذلك إلى عرض النص ("أحمد").
3 – تحديد سبب المشكلة
المفترض أن تظهر علامة التنصيص المستقيمة (") بشكل افتراضي. ظهور علامات تنصيص أخرى معناه أن هناك كود معين فعّال يعمل على تحويل العلامة المستقيمة إلى العلامتين المائلتين العلوية والسفلية.
الدالة wptexturize في نظام الووردبريس الأساسي، هي المسؤولة عن إجراء هذا التحويل التلقائي لعلامات الترقيم وعلامات أخرى لتحسين التصميم البصري (typography)؛ هذا يعني أن مشكلة العميل ليست مشكلة وإنما سلوك فرضته إعدادات ووردبريس ويمكن تغييره.
4 – الحلول المحتملة وتطبيق الأنسب
ملحوظة: لتجنيب موقع العميل أي أخطاء قد تحدث، جرب الحل الذي تراه الأنسب على بيئة محلية قبل تطبيقه بشكل فعلي.
بما أن المشكلة ناتجة عن التحويل التلقائي لعلامات التنصيص بواسطة الدالة wptexturize في ووردبريس؛ فإن الحلول المحتملة لهذه المشكلة هي:
الحل الأول:
إيقاف تفعيل خواص دالة wptexturize مع نصوص وأقسام محددة وتركها تعمل مع باقي المحتوى باستخدام الكود التالي:
تسجيل الدخول لعرض الكود
النتيجة ظهور علامة التنصيص المستقيمة في المحتوى فقط (the_content) دون بقية أقسام الموقع كما تلاحظ في الصورة.
الحل الثاني:
إيقاف عمل الدالة بالكامل؛ مما يضمن عدم إجراء أي تحويلات تلقائية على النصوص في جميع الأقسام. وذلك باستخدام الكود التالي:
تسجيل الدخول لعرض الكود
النتيجة ظهور علامة التنصيص المستقيمة في كامل الموقع كما تلاحظ في الصورة.
الحل الثالث:
تعديل الخط نفسه مع الإبقاء على دالة wptexturize تعمل.
الفكرة في هذا الحل أن الدالة wptexturize تقوم باستبدال علامة التنصيص المستقيمة ورمزها U+0022، بعلامتين:
- الافتتاحية بعلامة التنصيص المائلة العلوية ورمزها U+201c.
- الختامية بعلامة التنصيص المائلة السفلية ورمزها U+201e.
الذي يحدث أن الووردبريس يبحث في الخط عن الرموز u+201c والرموز u+201e ويعرض الشكل البصري لهما.
بتعديل الخط واستبدال الشكل البصري للعلامتين المائلتين بالمزدوجان ورمزهما U+00AB للافتتاحية وU+00BB للختامية سيتم حل مشكلة العميل وسيظهر المزدوجان («») بدلا من المائلتين.
شرح مختصر لخطوات استبدال أشكال الرموز البصرية
- افتح الخط باستخدام [سجل الدخول لترى الرابط].
- من قائمة view اضغط على go to.
- اكتب الرمز الرقمي للشكل البصري.
- اضغط على الشكل البصري كليك يمين واستخدم الأوامر مثل (copy لنسخ الرمز البصري) / (clear لحذف الرمز البصري) / (paste للصق الرمز البصري الحالي بدل الموجود).
- بعد الانتهاء من التعديل احفظ الخط الجديد واستخدمه كخط مخصص في موقعك.
في النهاية شاركنا رأيك ؟ وأخبرنا أي الحلول السابقة تفضلها؟ وهل لديك حل آخر لنفس المشكلة؟