آشنایی با نویسه‌های ویژه یونی‌کد برای متون راست به چپ

farsi در ضمیمه شماره ۹ استاندارد یونی‌کد که در آن الگوریتم دو جهته (مخصوص متون راست به چپ) معرفی شده ۷ نویسه مخصوص کار با متون راست‌نویس مثل فارسی و عربی معرفی شده است. این نویسه‌ها نقش بسیار مهمی در نمایش صحیح متون راست به چپ دارند. در واقع بدون وجود آنها نمی‌توان متون راست به چپ را به طور کاملاً صحیح نمایش داد. متون و نویسه‌ها در استاندارد یونی‌کد بر اساس ترتیب معنایی (منطقی) ذخیره می‌شوند. ترتیب منطقی یعنی همان ترتیبی که حروف از ذهن خواننده یا نویسنده متن می‌گذرد. حال هر گاه بخواهیم متون ذخیره شده را در صفحه نمایش یا چاپگر نمایش دهیم باید ترتیب منطقی را با یک روش مناسب به ترتیب دیداری تبدیل کنیم. این روش همان چیزی است که در الگوریتم دوجهته یونی‌کد یعنی الگوریتم دوجهته توضیح داده شده است.
در بعضی شرایط خاص نمی‌توان ترتیب دیداری درستی از ترتیب منطقی (معنایی) به دست آورد. به همین علت الگوریتم دوجهته از تعدادی نویسه ویژه یونی‌کد برای رفع این مشکل استفاده می‌کند. این نویسه‌ها فقط در تصحیح شیوه نمایش کلمات استفاده می‌شوند و هیچ تاثیری روی مرتب‌سازی، جستجو یا دیگر پردازش‌های متنی نباید داشته باشد. در واقع پیوست الف استاندارد ماتصا ۶۲۱۹ که با توجه به الگوریتم دوجهته ضمیمه شماره ۹ نوشته شده تاکید می‌کند که کاربردها باید این نویسه‌ها را در هر پردازشی غیر از استخراج نحوه صحیح نمایش در نظر نگرفته و به آن توجهی نکنند. ضمیمه شماره ۹ و این نویسه‌ها رسماً بخشی از استاندارد ملی ایران یعنی ماتصا ۶۲۱۹ (ISIRI 6219) را تشکیل می‌دهند. علاوه بر این استاندارد ماتصا ۹۱۴۷ (ISIRI 9147) هم ۷ کلید را به تحریر این نویسه‌ها اختصاص داده که همگی با ترکیب کلید ALT راست تحریر می‌شوند. دقت شود که کاربرد اصلی این نویسه‌ها و الگوریتم دو جهته در متون راست به چپ مثل فارسی و عربی و متون ترکیبی فارسی-انگلیسی است به خصوص در مواردی که پای اعداد و علائم هم به وسط می‌آید. این نویسه‌ها در متون صرفاً چپ به راست مثل انگلیسی هیچ کاربردی ندارند.
جالب است بدانید طراح اصلی این الگوریتم شخصی است به نام مارک دیویس (Mark Davis) که هم اکنون در گوگل کار می‌کند. این شخص نه فارسی بلد است، نه عربی، نه عبری و نه هیچ زبان راست به چپ دیگری! قصه طراحی الگوریتم دوجهته ضمیمه شماره ۹ توسط مارک دیویس مرا به یاد داستان تصحیح مثنوی معنوی توسط رینولد نیکلسون و تصحیح شاهنامه فردوسی در مسکو (و علی القاعده توسط روس‌ها) می‌اندازد!

و اما خود نویسه‌ها:

نام به کار رفته در ماتصا ۶۲۱۹ نام مخفف استفاده شده در الگوریتم دوجهته کد یونی‌کد
زیرمتن چپ به راست LRE U+202A
زیرمتن راست به چپ RLE U+202B
پایان زیر متن PDF U+202C
زیرمتن اکیداً چپ به راست LRO U+202D
زیرمتن اکیداً راست به چپ RLO U+202E
نشانه‌ی چپ به راست LRM U+200E
نشانه‌ی راست به چپ RLM U+200F

 

مطالعه بیشتر:
الگوریتم دوجهته (ضمیمه شماره ۹ استاندارد یونیکد)
استاندارد ماتصا ۶۲۱۹
استاندارد ماتصا ۹۱۴۷
نوشته حاجلو راجع به به هم ریختگی متون فارسی-انگلیسی

پ. ن.: در این نوشته از اصطلاحات و واژگان استاندارد ماتصا ۶۲۱۹ استفاده شده است.

‫‫استاندارد ماتصا ۶۲۱۹ (ISIRI 6219)

isiri این استاندارد توسط موسسه استاندارد و تحقیقات صنعتی ایران (ماتصا) برای تعریف و یکسان‌سازی استفاده از حروف و الفبای فارسی در محیط کامپیوتر در اردیبهشت ۱۳۸۱ تدوین شده است. این استاندارد در حال حاضر (تیر ۱۳۸۸) جدیدترین استاندارد در این زمینه و جایگزین کلیه استانداردهای قدیمی‌تر ماتصا ۳۳۴۲، ماتصا ۲۹۰۰ و استانداردهای غیر رسمی ویندوز ۱۲۵۶، ایران سیستم، پانیذ و سایه است. ماتصا ۶۲۱۹ کاملا بر اساس یونیکد بوده و توسط گروهی از افراد متخصص و مسلط در این زمینه نگاشته شده است. مسائل مطرح شده در ماتصا ۶۲۱۹ از روز تدوین آن تاکنون مقبولیت روزافزونی داشته و روز به روز در نرم‌افزارهای بیشتری رعایت شده است. مثلا ً راحت‌تر شدن جستجو و مقایسه اطلاعات فارسی که توسط منابع مختلف ثبت شده، رفع مشکل انواع «ی» در فونت‌های مایکروسافت و بقیه، تمایز قطعی بین انواع «ی»ها و انواع «ک»ها، رواج گسترده زبان فارسی در محیط لینوکس و… همگی از ثمرات این استاندارد است.

به علت آن که در استاندارد یونیکد به ازای خیلی از حروف مثل «ی»، «ک»، «الف» و خیلی از اعداد و خیلی از نشانه‌ها و لیگاتورها تعداد زیادی کاراکتر یونیکد شبیه به هم وجود دارد، خیلی از افراد و کاربردها در استفاده از آنها دچار ابهام می‌شوند. مثلاً مطابق توضیحات بلوک عربی یونیکد حدود ده «ی» مختلف وجود دارد که استفاده از هر کدام فقط در استاندارد یک یا چند کشور مجاز است. مهم‌ترین موضوعی که ماتصا ۶۲۱۹ به آن پرداخته، مشخص کردن کاراکترهای مجاز و غیر مجاز برای خط/زبان فارسی در ایران است. مثلاً این استاندارد فقط حرف «ی» فارسی با کد U+06CC و «ئ» همزه‌دار با کد U+0626 را برای خط/زبان فارسی مجاز اعلام کرده است. موضوع مهم بعدی که ماتصا ۶۲۱۹ به آن می‌پردازد نحوه نمایش حروف و کلمات فارسی از دیدگاه چپ و راست چینی (و نه شکل قلم) است. این قواعد مشکلات مرتبط با به هم ریختگی حروف و کلمات فارسی به خصوص به هنگام استفاده همزمان با حروف و کلمات لاتین را حل می‌کند. ماتصا ۶۲۱۹، الگوریتم شماره ۹ یونیکد که به الگوریتم دو جهته معروف است را به عنوان مرجع و بخشی از خود معرفی کرده است.

با رعایت صحیح استاندارد ماتصا ۶۲۱۹:
۱- حرف «ى» بی‌نقطه نچسب عربی با کد U+0649 که متون فارسی را کاملاً به هم می‌ریزد از متون فارسی حذف می‌شود. از به هم ریختگی‌های خیلی آزار دهنده ایجاد شده توسط این نوع «ى» می‌توان به تیکه تیکه شدن کلمات حاوی «ی» در خیلی از موبایل‌های امروزی و خیلی از نرم‌افزارهای قدیمی ویندوز نام برد.
۲- به جای اعداد لاتین و یا حتی اعداد عربی، از اعداد فارسی استفاده می‌شود. این اعداد در ویندوزهایی که Regional Settings آنها تغییر پیدا کرده به صورت ظاهراً فارسی نمایش داده می‌شوند، ولی وقتی که به PDF تبدیل می‌شوند یا در محیط‌های دیگری از طریق وب دیده می‌شوند به همان صورت غلط لاتین دیده می‌شوند.
۳- جلوگیری از درهم‌ریختگی متون ترکیبی فارسی و انگلیسی در اکثر نرم‌افزارها و محیط‌های (Platform) امروزی. به عنوان مثال نمایش برعکس پرانتزها، جابجایی حروف نشانه‌ای مثل سمی‌کالن، نقطه و… حتی وقتی که کلمات کاملاً انگلیسی هستند و صرفاً در یک محیط دو زبانه (دو جهته یا Bidirectional) نمایش داده می‌شوند. ماتصا ۶۲۱۹ این کار را با استفاده از کاراکترهای ویژه الگوریتم شماره ۹ مثل RIGHT-TO-LEFT EMBEDDING انجام می‌دهد.
۴- یکسان سازی استفاده از علائم در خط و زبان فارسی. مثلاً در این استاندارد استفاده از دابل کوتیشن و تک کوتیشن رایج در متون انگلیسی ممنوع و به جای آنها، کاراکترهای «» که شبیه دو علامت کوچکتر یا بزرگتر به هم چسبیده هستند به عنوان «گیومه فارسی» معرفی شده است. در این استاندارد کاراکترهای مشخصی هم برای ممیز فارسی، جداکننده هزارگان فارسی و… در نظر گرفته شده است.

دریافت استاندارد

پ.ن.۱: حروف فارسی معرفی شده در یونیکد همگی بر اساس بلوک عربی هستند. دلیل آن هم این است که ما هیچ بلوک یا بخش واحدی در یونیکد برای خط فارسی یا دیگر خط/زبان‌های مبتنی بر عربی مثل اردو و کردی نداریم.
پ.ن.۲: برای انجام بعضی امور اولیه کار با متون یونیکد و استاندارد ماتصا ۶۲۱۹ ابزار کوچکی به نام «فردیس» وجود دارد که استفاده از آن در بعضی مواقع می‌تواند مفید باشد. این ابزار توسط بنده ایجاد شده است.
پ.ن.۳: استاندارد ماتصا ۶۲۱۹ کاری به چیدمان حروف فارسی در صفحه کلید ندارد. ولی خود استاندارد ماتصا ۹۱۴۷ که چیدمان حروف و علایم فارسی بر روی صفحه کلید کامپیوتر را معین می‌کند، بر اساس همین استاندارد ماتصا ۶۲۱۹ طراحی شده است.
پ.ن.۴: ماتصا ۶۲۱۹ مستقل از شکل نمایشی (Glyph) حروف است. مثلا نمی‌گوید آخر حرف «ف» چقدر باید به بالا کشیده شده باشد.