‫فونت یونیکد چیست؟

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

۱- سازگار با یونیکد بودن امکان خیلی پیچیده یا جدیدی نیست و قبلا هم فونت‌های زیادی به طور کامل یا با نواقص اندکی این کار را کرده‌اند. البته منظور من (و شورای عالی انفورماتیک و خیلی‌های دیگر) از «سازگاری کامل با یونیکد» سازگاری در حد حروف و علایم فارسی است نه کل حروف و علایم یونیکد چون از معدود فونت‌هایی که این کار را تا اندازه‌ای کرده‌اند فونت آریال مایکروسافت است که عمده کاراکترهای رایج یونیکد در زبان‌های مختلف را با چیزی حدود ۶۵ هزار کاراکتر پیاده سازی کرده است. حجم فایل این فونت بیش از ۲۰ مگابایت می‌باشد.

۲- ساختار یونیکد بلوک بندی شده است و هیچ بلوک مستقلی برای پشتیبانی از زبان فارسی اختصاص نیافته است. بلوک مورد استفاده برای زبان فارسی بلوک عربی است و از آنجا که بیشتر حروف و علائم فارسی و عربی مشترک هستند صرفا چند کاراکتر به طور اختصاصی به حروف و علایم زبان فارسی اختصاص پیدا کرده است.

۳- عنوان «سازگار با یونیکد» به دو مفهوم خیلی مهم اشاره دارد:
الف- در محل هر کاراکتری فقط شکل (glyph) خود آن کاراکتر پیاده سازی شده باشد نه کاراکتر دیگری و بالعکس یعنی شکل (glyph) هر کاراکتری صرفا در محل اختصاصی خودش پیاده سازی شده باشد و نه جای دیگری. مثلا در محل U+0041 که مخصوص حرف لاتین A است فقط شکل A قرار دارد نه چیز دیگری. معروف‌ترین فونت‌هایی که این قاعده را رعایت نمی‌کنند فونت‌هایی هستند که در کاربردهای گرافیکی مثل فوتوشاپ به کاربر می‌روند. فونت‌های IPT برنا رایانه از این دست هستند. در مثال حالت بالعکس هم باید گفت کاراکتری مثل «ی» فارسی (ARABIC LETTER FARSI YEH) باید در محل U+06cc پیاده سازی شده باشد و نه جای دیگری. در خیلی از فونت‌های فارسی شکل «ی» فارسی بدون نقطه در محل کاراکتر «ي» عربی نقطه دار (ARABIC LETTER YEH) یعنی U+064a پیاده سازی شده که بسیاری از کاربران را به اشتباه انداخته است. کشف این اشتباه با توجه به اینکه صفحه کلید ویندوزهای قبل از ویستا به طور پیش فرض فقط «ي» عربی نقطه دار را تایپ می‌کنند و بسیاری از فونت‌های رایج هم «ي» عربی را با برداشتن دو نقطه زیر آن نمایش می‌دهند، کار سختی است. کاربران هم وقتی متوجه این موضوع می‌شوند که نوشته‌های خود، که با فونت‌های نیمه استاندارد نوشته‌اند را به سکوی دیگری مثل وب منتقل می‌کنند. فونت‌های سری B برنا رایانه و خیلی فونت‌های رایج دیگر از این دسته هستند. از دیگر سو تعدادی از فونت‌ها هر دو طرف رفت و برگشت قاعده مورد بحث را رعایت کرده‌اند که فونت‌های فارسی وب یکی از آنهاست.
ب- مفهوم دوم عنوان «سازگار با یونیکد» یعنی این که فونت مورد بررسی کاراکترهای محدوده مورد استفاده زبان فارسی را به طور کامل و به شکل صحیح پیاده سازی کرده باشد. به عنوان مثل حروف «گ»، «ژ»، «پ»، «ک» فارسی، «ی» فارسی و صد البته حروف مشترک عربی و فارسی و علایم و کاراکترهای مشترک همه زبان‌ها را. خوشبختانه فونت‌های رایج در این زمینه دچار مشکلات کمتری هستند.

۴- غیر از ایران، کشورها و مناطق دیگری هم از استفاده کنندگان و تولید کنندگان فونت‌های سری عربی (عربی، فارسی، پشتو، کردی و…) به شمار می‌روند از جمله کشورهای عربی و کشورهای حاشیه خلیج فارس، بعضی از همسایه‌های شمالی ایران، پاکستان و… و البته هیچ کدام از این گروه‌ها هم بیکار ننشسته‌اند و برای خط و زبان خود فونت‌های مناسبی پیاده سازی کرده‌اند (یا توسط مراکزی مثل مایکروسافت برایشان پیاده سازی شده). بیشتر این فونت‌ها را می‌توان با تغییرات اندکی به عنوان فونت فارسی هم استفاده کرد. حتی بعضی از آنها را می‌توان مستقیما و بدون هیچ تغییری مورد استفاده قرار دارد. مثل بعضی فونت‌های مجموعه Office مایکروسافت.

۵- سه تا موضوع هست که ربطی به فونت، یونیکد و سازگاری فونت با یونیکد ندارد:
الف- شکل (glyph) یک کاراکتر مجزای از کد آن می‌باشد و نباید این دو را با هم اشتباه گرفت. مبنای ما همیشه کد کاراکترهاست نه شکل آنها.
ب- یونیکد هیچ وابستگی به سیستم عامل، نرم افزار مورد استفاده، محیط اجرا و یا هر چیز دیگر شبیه به این ندارد. چون یک استاندارد کلی و سراسری است.
ج- سازگاری فونت با یونیکد ارتباطی به IME یا Keyboard Layout یا صفحه کلید ندارد. خیلی اوقات با اینکه از یک فونت استاندارد و یونیکد استفاده می‌شود باز هم نمی‌توان بعضی کاراکترها را استفاده کرد. مثلا اگر صفحه کلید ویندوزی (درایور آن نه خود صفحه کلید) استاندارد نباشد، هر چقدر که روی سر «ک» بکوبید باز هم حرف «ك» عربی است که نمایش داده می‌شود نه خود «ک» فارسی.
۶- چطور می‌شود فهمید که یک فونت همه کاراکترهای فارسی (و بعضی حروف خاص عربی مثل «ي» نقطه دار و «ك» بدون سرکش) را به شکل صحیح پیاده سازی کرده یا نه؟ در مورد کاراکترهای مشترک و عمومی که معمولا مشکل خاصی نیست. اما در مورد کاراکترهای خاص و مورد دار از جدول زیر استفاده کنید. این جدول لیستی از کاراکترهای مورد دار را نمایش می‌دهد.

 
نام کاراکتر شکل کاراکتر کد کاراکتر توضیحات
فاصله مجازی ZWNJ 200C همان نیم فاصله معروف
اتصال مجازی ZWJ 200D برای نگه داشتن حروف تنها در حالت کوچک
ویرگول فارسی ، 060C  
نقطه ویرگول فارسی ؛ 061B  
علامت سوال فارسی ؟ 061F  
کشیدگی فارسی ـ 0640  
رقم ۰ تا ۹ فارسی ۰۱۲۳۴۵۶۷۸۹ 06F0-06F9 ارقام فارسی با ارقام عربی یا لاتین فرق دارند.
ممیز فارسی ٫ 066B ممکن است در فونت‌های مختلف اشکال مختلفی به خود بگیرد.
جداکننده هزارهای فارسی ٬ 066c //
درصد فارسی   06AA  
حرف فارسی کاف   06A9  
حرف فارسی ی   06CC  
حرف عربی ك   0643 حتما باید به شکل عربی خودش پیاده سازی شده باشد تا کاربر هیچ وقت اشتباها آنها را به جای معادل فارسی‌شان به کار نبرد.
حرف عربی ي نقطه داری   064A //
حرف عربی ى بدون نقطه   0649 //

دیدگاه‌ها

  1. ali

    خیلی مطلب مفیدی بود یکی از سوالاتی بود که بنده باید به پاسخ آن می رسیدم
    خیلی ممنون از مطالب مفیدی که قرار می دهید.
    امید وارم موفقیت روز افزون داشته باشید.

  2. شهره ایران منش

    شهره ایران منش
    من میخوام یک کتاب که متنش هم عربی داره و هم فارسی تایپ کنم، یکی کمکم کنه و دوتا فونت نازک و ذخیم استاندارد بده، من بتونم کار کنم. تو تایپ این کتاب به بن بست خوردم.
    http://shohreiranmanesh.persianblog.ir/

  3. محمد

    سلام. من ويندوز 7 شصت و چهار بيتي دارم و از كيبورد لي اوتي استفاده مي كنم كه دو حرف كاف و يا رو به شكل عربي تايپ مي كنه (كاف بدون سركش و يا با دو نقطه در زير آن). آيا استفاده از اين كيبورد لي اوت باعث ميشه بعد از پر كردن فرم هاي ثبت نام اينترنتي دو حرف كاف و يا عربي به صورت ناخوانا يا مثلا علامت سؤال در سايت درج بشن؟ البته خودم فكر مي كنم مشكلي پيش نمياد اما مي خواستم مطمئن بشم. ممنون ميشم اگه به اين سؤال پاسخ بديد. موفق باشيد.

    1. نوشته
      نویسنده
      افشار محبی

      سلام. ببخشید که اینقدر دیر جواب می دهم. متاسفانه خیلی وقت است که روی این موضوع کار نمی کنم و نمی توانم کمکی کنم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *