یونی‌کد چیست و اهمیت آن در کجاست؟

ه‍.ش. ۱۳۹۰ آبان ۲۶, پنجشنبه | ۱:۵۰

برچسب‌ها: ,

هدف ما در گوگل این است که اطلاعات عالم را نظم و ترتیب داده و به شکل مفیدی در دسترس همگان قرار دهیم. هنگامی که خدمات جدید گوگل در دسترس عموم قرار می‌گیرند، اکثرشان از حداقل ۴۰ زبان پشتیبانی می‌کنند، و هر چه می‌گذرد زبان‌های بیشتر و بیشتری نیز اضافه می‌شود.

زبان‌های جهان به خط‌های مختلفی نوشته می‌شوند. مثلاً انگلیسی به خط لاتینی نوشته می‌شود، و فارسی به خط عربی (البته به این خط در ایران و بعضی کشورهای دیگر «خط فارسی» می‌گویند و در مجامع دانشگاهی جهان، «خط فارسی‐عربی»). در گوشه و کنار جهان از ده‌ها خط مختلف برای نوشتن زبان‌های زندهٔ امروز استفاده می‌شود، و ده‌ها خط باستانی دیگر نیز هستند که بیشتر جنبهٔ تاریخی‌شان اهمیت دارد. مثلاً خط‌های دوناگری، گورومخی، و گجراتی از جمله خط‌هایی هستند که در هند به آنها می‌نویسند، و خط‌های میخی و پارتی کتیبه‌ای از خط‌های باستانی هستند.

اگر در دههٔ ۷۰ شمسی از کامپیوتر استفاده می‌کردید، یادتان می‌آید که آن روزها کامپیوترها معمولاً فقط می‌توانستند در هر لحظه از یک یا دو زبان پشتیبانی کنند. اما این روزها دستگاه‌های کامپیوتری هیچ مشکلی ندارند که به چندین زبان سخن بگویند و همزمان به چند خط مختلف بنویسند و بخوانند. این کار ممکن نمی‌بود، مگر به خاطر استانداردی صنعتی به نام استاندارد یونی‌کد. برای اطلاعات بیشتر دربارهٔ استاندارد یونی‌کد می‌توانید به صفحهٔ «یونی‌کد چیست؟» (به فارسی یا انگلیسی) مراجعه کنید. اگر متوجه تفاوت ظریف بین «می‌روم» و «می روم» شده باشید، و از خود پرسیده باشید چرا در وب به شکل دومی بیشتر بر می‌خوریم (یا حتی به شکل‌ «میروم» یا از آن هم بدتر، «مي روم») این مجموعه نوشته‌ها را بخوانید. ما در گوگل اطلاعات عالم را نظم و ترتیب می‌دهیم و اگر این اطلاعات تمیز و نظیف باشد، راحت‌تر می‌شود منظم و مرتب‌شان کرد. در این مجموعه نوشته‌ها، می‌خواهیم شما را با روش‌هایی آشنا کنیم که می‌توانید به کمک‌شان از وب فارسی زیباتر استفاده کنید، و مطالبی را که در وب می‌نویسید بی‌نقص بنویسید. (خواه به شکل بلاگ باشد، یا وب‌گاه، یا اصلاً یادداشت‌های Google+‎!) البته لااقل از نظر یونی‌کدی.

یونی‌کد به ما تعداد زیادی «نویسه» (یا character) می‌دهد. در یونی‌کد، نویسه به این شکل تعریف می‌شود: «کوچک‌ترین جزء زبان نوشتاری که ارزش معنایی دارد؛ نویسه به معنی و/یا شکل انتزاعی اطلاق می‌شود، نه به اَشکال مشخص». مجموعهٔ کامل نویسه‌های یونی‌کد را می‌توانید در اینجا ببینید، و متن کامل این استاندارد را می‌توانید از اینجا بگیرید (استاندارد یونی‌کد، نسخهٔ 6.0.0، پروندهٔ PDF زیپ‌شده، ۸ مگابایت).

مثلاً، حرف «ب» یک نویسه است، و یونی‌کد آن را در نشانی U+0628 و با نام ARABIC LETTER BEH به رسمیت شناخته و کدگذاری کرده است. با این حساب، کد U+0628 کد مشخصهٔ حرف «ب» است، مستقل از این که برای چه زبانی استفاده شود.

حواستان باشد که نویسه را با «شکل» (یا glyph) اشتباه نگیرید. «شکل»، صورت مشخصی است که نویسه‌ها در حالت‌های مختلف ممکن است به خود بگیرند. در نمایش اطلاعات با نویسه‌های یونی‌کدی، برای هر نویسهٔ مشخص ممکن است از یک یا چند شکل مختلف استفاده شود. مثلاً، حرف «غ» در حروف چاپی چهار شکل مختلف به خود می‌گیرد: ۱) اول: «غـ»، ۲) وسط: «ـغـ»، ۳) آخر: «ـغ»، و ۴) تنها: «غ». یونی‌کد سعی می‌کند مفاهیم را کدگذاری کند، نه شکل‌ها را.

ممکن است متوجه شده باشید که فقط زبان‌های فارسی و عربی نیستند که به خط عربی نوشته می‌شوند. زبانهای فراوانی وجود دارند که خط عربی را برای نیازهای خود گسترش داده و از آن استفاده می‌کنند. در نتیجه، در بلوک‌های عربی یونی‌کد، صدها حرف مختلف وجود دارد. حرف‌هایی که ممکن است به چشم فارسی‌زبانان یا عربی‌زبانان عجیب بیاید، مثل نویسهٔ U+069B با نام ARABIC LETTER SEEN WITH THREE DOTS BELOW، که حرف «س» است با سه تا نقطه زیرش. (خوانندگانی که با تاریخ خط فارسی آشنایی دارند ممکن است بدانند که این حرف در بعضی از متون قدیمی‌تر فارسی وجود دارد).

از ویژگی‌های این تعدد نویسه‌ها این است که بعضی نویسه‌ها در بعضی حالت‌ها عین یکدیگر به نظر می‌رسند ولی در حالت‌های دیگر متفاوتند. برای مثال، می‌شود از «ی فارسی» در مقابل «ي عربی» نام برد؛ البته مثال‌های ظریف‌تر و مشکل‌تری نیز وجود دارند. در نوشته‌های بعدی این مجموعه دربارهٔ این نویسه‌های گیج‌کننده خواهیم نوشت. اما تا آن وقت، تکلیف شب شما این که جدول نویسه‌های بلوک اصلی خط عربی یونی‌کد را بررسی کنید (پروندهٔ PDF،‏ ۱۸۰ کیلوبایت). دربارهٔ چیزهای جالبی که پیدا کردید برای ما بنویسید.

اگر سردرگم شده‌اید، دو راهنمای بسیار عالی هست که به شما می‌گوید برای زبان فارسی ایران و زبان‌های فارسی دری و پشتوی افغانستان از چه نویسه‌هایی باید استفاده کرد.

برای ایران، مرجع رسمی این مسائل استاندارد ملی ایران ۶۲۱۹ است که پروژهٔ فارسی‌وب به زبان فارسی در سال ۱۳۸۱ برای سازمان ملی استاندارد ایران تهیه کرده است. نسخهٔ PDF این استاندارد را می‌توانید از وب‌گاه فارسی‌وب بگیرید. وب‌گاه سازمان ملی استاندارد ایران فقط نسخهٔ HTML استانداردهایش را در دسترس عموم قرار داده است، و متأسفانه در روند تبدیل پروندهٔ PDFی که پروژهٔ فارسی‌وب تهیه کرده بوده است به HTML، سازمان ملی استاندارد ایران همان اشتباه‌هایی را مرتکب شده است که در استاندارد ۶۲۱۹ توصیه شده است از آنها اجتناب شود. از نسخهٔ HTML این استاندارد پرهیز کنید.

برای افغانستان، مرجع رسمی، سند «Computer Locale Requirements for Afghanistan» است (به زبان انگلیسی) که در سال ۱۳۸۲ شمسی به سفارش برنامهٔ توسعهٔ سازمان ملل متحد تهیه شده است. نسخهٔ PDF این گزارش را می‌توانید از وب‌گاه اِوِرتایپ بگیرید.

در دو نوشتهٔ بعدی این مجموعه نوشته‌ها، دو سند بالا را بررسی خواهیم کرد. اما در این فاصله، تکلیف شب دوم شما این باشد که نگاهی به آنها بیاندازید و ببینید چه یاد می‌گیرید. چه چیزهای جالبی پیدا کردید؟ چه چیزهایی خیلی برایتان عجیب بود؟ برای ما بنویسید. کتاب‌های درسی شما در این دوره، این دو سند، به اضافهٔ جدول نویسه‌های عربی یونی‌کد که بالاتر درباره‌اش صحبت کردیم و کتاب استاندارد یونی‌کد است.

ما برنامهٔ مفصلی برای نوشته‌های آیندهٔ این مجموعه داریم، ولی شما هم اگر می‌خواهید در زمینهٔ مشخصی بنویسیم، برای ما نامهٔ الکترونیکی بنویسید و ما تلاش‌مان را خواهیم کرد که دست خالی برنگردید!

پست شده توسط بهداد اسفهبد، مهندس نرم‌افزار، تیم زبان فارسی
(Behdad Esfahbod, Software Engineer, Persian Initiative Team)