كل المقالات

عكس النص: لماذا يفشل مع الرموز التعبيرية

الحرف العربي يغيّر شكله المرئي حسب موضعه في الكلمة — الحرف "ع" مثلاً له شكل منفصل ﻉ، وشكل بداية ﻋ، وشكل وسط ﻌ، وشكل نهاية ﻊ، رغم أنه نفس نقطة الترميز في يونيكود دائمًا؛ المتصفح أو الخط هو من يختار الشكل الصحيح حسب الحروف المجاورة. عكس نص عربي بسذاجة، حرفًا بحرف، لا يغيّر فقط الترتيب بل يمكن أن يُربك خوارزمية التشكيل نفسها ويُنتج حروفًا بأشكال غير متصلة بشكل صحيح.

ما هو عنقود الحروف الرسومية

ما يعتبره الإنسان "حرفًا واحدًا مرئيًا" قد يتكون أحيانًا في يونيكود من عدة نقاط ترميز — علامات التشكيل العربية (الفتحة، الضمة، الكسرة، الشدة) تُكتب كأحرف تشكيل منفصلة تُلحَق بالحرف الأساسي الذي تسبقه مباشرة في تسلسل الترميز. تُسمَّى تركيبة الحرف الأساسي مع تشكيله عنقود حروف رسومية، تمامًا مثل رمز تعبيري لعائلة (👨‍👩‍👧) المكوَّن من عدة رموز منفصلة مجمّعة بحرف ربط.

لماذا يفسد العكس الساذج كل شيء

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

العكس الصحيح

التنفيذ الصحيح يقسّم السلسلة أولاً إلى عناقيد حروف رسومية (كل حرف أساسي مع علامات تشكيله)، ثم يعكس ترتيب هذه العناقيد ككتلة واحدة، لا نقاط الترميز الفردية داخلها — هكذا يبقى كل تشكيل ملتصقًا بحرفه الصحيح بعد العكس.

لماذا نحتاج هذا

  • التحقق من المتناظرات (Palindromes) أو إنشاء تأثير نص "مرآة".
  • إظهار أو تشخيص أخطاء معالجة يونيكود في الكود، خصوصًا مع النصوص العربية المُشكَّلة.
  • مهام ترفيهية أو تعليمية تتطلب عكس نص صحيح مع رموز تعبيرية أو تشكيل عربي.

الشكل السياقي للحروف والاتجاه

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

جرّب الأداة