خوارزمية يونيكود ثنائية الاتجاه
خوارزمية يونيكود ثنائية الاتجاه ( UBA )، المُعرَّفة رسميًا في الملحق رقم 9 من معيار يونيكود ( UAX #9 )، هي مواصفة طورتها منظمة يونيكود لتحديد كيفية عرض النصوص التي تحتوي على مزيج من الكتابة من اليسار إلى اليمين والكتابة من اليمين إلى اليسار. وهي جزء أساسي من معيار يونيكود ، ويُشترط استخدامها عند عرض الأحرف المكتوبة من اليمين إلى اليسار، مثل العربية أو العبرية .
خلفية
تُعرض معظم أنظمة الكتابة النص من اليسار إلى اليمين، لكن بعض الخطوط - بما فيها العربية والعبرية والثانوية والسريانية - تُكتب من اليمين إلى اليسار . عندما يظهر نص من كلا الاتجاهين في المستند نفسه، يُعرف هذا النص بالنص ثنائي الاتجاه (أو النص ثنائي الاتجاه ). وبدون تحديد واضح، تنشأ غموضات في تحديد الترتيب الصحيح لعرض الأحرف.
يحدد معيار يونيكود ترتيبًا منطقيًا لتخزين الأحرف في الذاكرة، بغض النظر عن اتجاهها المرئي. ويقوم برنامج UBA بترجمة هذا الترتيب المنطقي إلى ترتيب عرض مرئي صحيح.
أحرف التنسيق الاتجاهي
تحدد UBA عدة فئات من أحرف التحكم الخاصة المستخدمة للتأثير على اتجاه النص:
علامات الاتجاه الضمنية
أحرف خفيفة الوزن، عديمة العرض، تعمل كعلامات توجيهية دون التأثير على العرض:
| اختصار | نقطة الترميز | اسم |
|---|---|---|
| LRM | U+200E | علامة من اليسار إلى اليمين |
| RLM | U+200F | علامة من اليمين إلى اليسار |
| ألم | U+061C | علامة الحروف العربية |
تضمينات اتجاهية صريحة
الإشارة إلى أنه يجب التعامل مع جزء من النص على أنه مضمن في اتجاه معين:
| اختصار | نقطة الترميز | اسم |
|---|---|---|
| LRE | U+202A | تضمين من اليسار إلى اليمين |
| RLE | U+202B | تضمين من اليمين إلى اليسار |
تجاوزات اتجاهية صريحة
فرض التعامل مع الأحرف على أنها ذات اتجاهية قوية، وتجاوز أنواعها الضمنية:
| اختصار | نقطة الترميز | اسم |
|---|---|---|
| LRO | U+202D | تجاوز من اليسار إلى اليمين |
| RLO | U+202E | تجاوز من اليمين إلى اليسار |
عزل اتجاهي صريح
تم تقديم خاصية العزل في يونيكود 6.3 ، وهي تمنع النص المحاط بها من التأثير على ترتيب النص المحيط بها:
| اختصار | نقطة الترميز | اسم |
|---|---|---|
| معهد أبحاث الرئة | U+2066 | عزل من اليسار إلى اليمين |
| RLI | U+2067 | عزل من اليمين إلى اليسار |
| FSI | U+2068 | عزل قوي أولي |
| PDI | U+2069 | عزل اتجاهي بوب |
إنهاء الشخصيات
| اختصار | نقطة الترميز | اسم | ينهي |
|---|---|---|---|
| ملف PDF | U+202C | تنسيق اتجاه موسيقى البوب | LRE، RLE، LRO، RLO |
| PDI | U+2069 | عزل اتجاهي بوب | LRI، RLI، FSI |
الخوارزمية
تقوم هيئة UBA بمعالجة النصوص في أربع مراحل رئيسية:
1. فصل الفقرات
يتم تقسيم النص إلى فقرات عند أحرف فاصلة الفقرات (النوع B). تتم معالجة كل فقرة بشكل مستقل.
2. التهيئة
يتم تخصيص نوع حرف ثنائي الاتجاه (مثل L، R، AL، EN، AN) لكل حرف من قاعدة بيانات أحرف يونيكود . كما يتم تهيئة قائمة مستوى التضمين .
3. تحديد مستويات التضمين
تحدد سلسلة من القواعد مستوى تضمين كل حرف:
- P1–P3 : تحديد مستوى تضمين الفقرة (0 للاتجاه من اليسار إلى اليمين، 1 للاتجاه من اليمين إلى اليسار).
- X1–X10 : تعيين مستويات تضمين صريحة بناءً على أحرف التنسيق الاتجاهي.
- W1–W7 : حل الأنواع الضعيفة (مثل الأرقام الأوروبية، والفواصل).
- N0–N2 : حل أنواع التنسيق المحايدة والمعزولة، بما في ذلك أزواج الأقواس .
- I1–I2 : حل مستويات التضمين الضمني.
يبلغ الحد الأقصى لعمق التضمين 125 مستوى ، وهي قيمة مضمونة عدم تغييرها في الإصدارات المستقبلية من المعيار. [ 1 ]
4. إعادة الترتيب
القواعد من L1 إلى L4 تعيد ترتيب الأحرف في كل سطر للعرض:
- L1 : يعيد ضبط المسافات البيضاء والفواصل إلى مستوى تضمين الفقرة.
- L2 : يعكس التسلسلات المتجاورة للأحرف عند أعلى مستويات التضمين، وصولاً تدريجياً إلى أدنى مستوى فردي.
- L3 : يعيد ترتيب العلامات المدمجة بالنسبة لأحرفها الأساسية.
- L4 : يطبق عكس الرسوم على الأحرف التي لها
Bidi_Mirroredالخاصية عندما يكون اتجاهها المحدد من اليمين إلى اليسار (على سبيل المثال، "(" تصبح ")").
أنواع الأحرف ثنائية الاتجاه
تُصنف الشخصيات إلى الفئات التالية:
| فئة | يكتب | وصف |
|---|---|---|
| قوي | L | من اليسار إلى اليمين (مثل اللاتينية، الهان) |
| R | الكتابة من اليمين إلى اليسار (مثلاً، العبرية) | |
| الألف | الكتابة العربية من اليمين إلى اليسار (مثل: العربية، السريانية) | |
| ضعيف | الإنجليزية | الرقم الأوروبي |
| ES | فاصل الأرقام الأوروبي | |
| ET | مُنهي الأرقام الأوروبي | |
| AN | الأرقام العربية | |
| علوم الحاسوب | فاصل الأرقام المشترك | |
| NSM | علامة بدون تباعد | |
| حيادي | ب | فاصل الفقرات |
| S | فاصل القطاعات | |
| WS | مساحة بيضاء | |
| على | محايدون آخرون |
المطابقة
يجب أن يتضمن التنفيذ المتوافق ما يلي:
- اعرض جميع الأحرف المرئية بالترتيب الموصوف بواسطة UBA (UAX9-C1).
- قم بتطبيق تجاوزات البروتوكول ذات المستوى الأعلى فقط كما هو محدد في القسم 4.3 من المواصفات (UAX9-C2).
بروتوكولات المستوى الأعلى
تسمح هيئة الاتحاد الأوروبي (UBA) بستة تجاوزات لبروتوكولات المستوى الأعلى (HL1–HL6)، بما في ذلك:
- HL1 : تجاوز مستوى تضمين الفقرة.
- HL3 : محاكاة أحرف التنسيق الاتجاهي الصريح عبر الترميز (مثل سمة HTML ).
dir - HL4 : تطبيق UBA بشكل مستقل على أجزاء من النص المنظم (مثل XML ، شفرة المصدر ).
- HL6 : تطبيق انعكاس إضافي للرموز الرسومية يتجاوز الخاصية القياسية
Bidi_Mirrored.
مكافئات HTML و CSS
في صفحات الويب ، يمكن استبدال أحرف التنسيق الاتجاهي Unicode بعلامات HTML5 و CSS3 :
| يونيكود | HTML | CSS |
|---|---|---|
| RLI...PDI | dir="rtl" | direction:rtl; unicode-bidi:isolate |
| LRI...PDI | dir="ltr" | direction:ltr; unicode-bidi:isolate |
| FSI...PDI | <bdi>،dir="auto" | unicode-bidi:plaintext |
الاعتبارات الأمنية
يشكل سوء استخدام أحرف التنسيق ثنائية الاتجاه مخاطر أمنية جسيمة ، إذ يمكن استخدامها لإخفاء برمجيات خبيثة أو نصوص تبدو بريئة. وقد وُثِّق ذلك في التقرير الفني رقم 36 من يونيكود (UTR36). وتُعدّ عمليات التجاوز الاتجاهي (LRO، RLO) خطيرة للغاية، ويُنصح بتجنبها قدر الإمكان.
تاريخ
- يونيكود 1.0 (1991): تم تقديم الدعم الأساسي ثنائي الاتجاه.
- يونيكود 6.3 (2013): مراجعة رئيسية أدخلت العزل الاتجاهي (LRI، RLI، FSI، PDI) وحل أزواج الأقواس (القاعدة N0). أُضيفت هذه الميزات لمعالجة التأثير المفرط للتضمينات الاتجاهية على النص المحيط.
- Unicode 17.0 (2025): الإصدار الحالي (المراجعة 51).
انظر أيضاً
مراجع
- ↑ "الملحق رقم 9 من معيار يونيكود: خوارزمية يونيكود ثنائية الاتجاه" . اتحاد يونيكود . تم الاطلاع عليه بتاريخ 13 أغسطس 2025 .
روابط خارجية
- يونيكود
- التدويل والتوطين
- علوم الحاسوب
