ارتباط کیبورد با یونیکد

یونیکد

یونیکد

در ادامه مطالب مرتبط با یونیکد ، امروز به بررسی چگونگی نوشتن و ایجاد متن های یونیکد خواهیم پرداخت و ارتباط یونیکد رو با کیبورد بررسی می کنیم . توصیه می کنم پیش از مطالعه این مطلب مطالب زیر رو بخونید .

  1. فونت یونی‌کد چیست ؟
  2. بررسی ساختار یونی‌کد
  3. و یکسری مشکلاتی که یونیکد برای زبان فارسی به علت غیراستاندارد بودن فونت ها ایجاد کرده ،‌ توی این مطلب بخونید :‌  رفع مشکلات در Convert کردن پروژه Reporting Services 2005 به Reporting Services 2008

با توجه به مطالب گفته شده در بالا ، متوجه شدیم که یونیکد یک استاندارد است و وابسته به هیچ پلت فرمی ( سیستم عامل یا سخت افزار خاص ) نیست . حالا فرض کنید که شما از یک فونت یونیکد ( ‌مثل Arial )، برای تایپ کردن استفاده می کنید ، آیا هرچیزی که تایپ می کنید ، یونیکد خواهد بود ؟ در نظر اول موضوع خیلی ساده به نظر می رسد و خیلی محکم می شود جواب داد که بله ، وقتی از یک فونت استاندارد استفاده می کنیم ، هر چه می نویسیم یونیکد خواهد بود؛ اما واقعیت چیز دیگری است .

همانطور که در مطلب بررسی ساختار یونیکد گفتم هر گلیف دارای یک کد منحصر به فرد و مخصوص به خود است که هیچ گلیف دیگری نباید در جای مربوط به گلیف دیگر قرار بگیرد . حالا فرض کنید که شما شروع می کنید به تایپ کردن با کیبورد . مثلا “ناصر حاجلو، نویسنده سری مطالب یونیکد است” از نظر یونیکد این جمله از دو سری حروف استفاد کرده ، سری اول حروف مشترک فارسی و عربی ( که جزو حروف عربی به شمار می روند ) و دوم حروف فارسی ( مثل ک ( در کلمه یونیکد ) و ی ( در خود کلمه یونیکد ) .

پیش از تایپ کردن جمله بالا شما باید زبان نوشتاری سیستم را به فارسی تغییر دهید ، به این منظور از پیش باید زبان فارسی را بر روی سیستم عامل خودتان نصب کرده باشید ( که کار بسیار ساده ایست و درادامه توضیح می دهم) وقتی زبان فعال را به فارسی تغییر می دهید . dllی که قبلا با نصب کردن زبان فارسی روی سیستم عامل نصب شده بوده ( مثلا kbdfa.dll یا persian.dll به داخل بافر کیبورد load می‌شود و منتظر دریافت حروف می شود . وقتی شما متن بالا را تایپ می کنید ، هنگامیکه روی هر کاراکتر کیبورد فشار می آورید ، برنامه درایور کیبورد با توجه به زبان فعال ( که dll آن در بافر کیبورد لود شده است ) کد مرتبط با کلید فشار داده شده را برای سیستم عامل ارسال می کند ، سیستم عامل هم کد را برای برنامه اجرایی می فرستد و نهایتا کاراکتر مربوطه روی مانیتور ،‌ نمایش داده می شود .

در این سناریو مهمترین وظیفه را درایور کیبورد انجام می دهد ، اگر شما درایور کیبوردتان را نصب نکرده باشید و از درایور پیش فرض ویندوز استفاده کنید ، هر چه بر روی کلید ک یا ی فشار بدهید بجای اینکه حرف ی فارسی به شما نشان داده شود ، حرف ک عربی یا ي عربی ( با دو نقطه در زیر آن ) به شما نشان داده می شود ( برای ازمایش حتما از یک فونت استاندارد مثل Arial استفاده کنید چون فونت های فارسی این مشکل نمایش حروف غیر فارسی را با جایگزین کردن حروف فارسی معادل ( به این ترتیب که حرف ک فارسی را جای کاراکتر ک عربی و حرف ی فارسی را بجای حرف ي عربی قرار داده اند – یعنی دو نقطه زیر ي را برداشته اند )  حل کرده اند !!!! مثلا بجای حرف عربی ي با دو نقطه در زیر که کد یونیکد آن 064A است ، حرف ی فارسی بدون نقطه در زیر را که کد یونیکد آن 06CC است جایگزین کرده اند و شما وقتی حرف ی را فشار می دهید در واقع کد یونیکد 064A را به سیستم عامل می فرستید و سیستم عامل هم همین کد را برای برنامه می فرستد ، حالا اگر از فونت استاندارد یونیکد استفاده کنید حرفی که نمایش داده می شود ي با دو نقطه در زیر و اگر از فونت های فارسی مثل B Nazanin استفاده کنید ، حرف نمایشی ی فارسی بدون نقطه خواهد بود . چون شرکت ایجاد کننده فونت بجای حرف عربی ي حرف فارسی ی را جایگزین کرده و به خیال خود مشکل حرف ی را حل کرده است !!!)

کاری که درایور کیبورد ویندوز شما انجام می دهد درواقع ایجاد یک keyboard layout است که برای زبان شما بهینه شده است . به همین دلیل است که وقتی شما درایور را نصب نکردید هر چه بر روی ک فشار می دهید بجای ک فارسی حرف ک عربی را مشاهده می کنید . البته خوشبختانه در ویندوز ویستا این مشکلات تا حد بسیار قابل قبولی حل شده ، چون قالب کیبورد تعریفی بجای کدهای عربی ، کدهای فارسی را برای سیستم عامل ارسال می کند . اما برای رفع این مشکل ( حتی در ویستا ) باید از قالب‌های استاندارد کیبورد استفاده کنید . 

برای اطلاع بیشتر در مورد نحوه چیدمان کاراکترها بر روی کیبورد و استاندارد فعلی کشور برای چیدمان حروف مستندات منتشر شده زیر را مطالعه کنید .

فن‌آوری اطلاعات – تبادل و شیوه نمایش اطلاعات فارسی بر اساس یونی‌کد

فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه  ( توضیحات مربوط به استاندارد ISIRI 9147 )

توجه داشته باشید که مستند فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه توسط موسسه استاندارد و تحقیقات صنعتی ایران به عنوان تنها استاندارد چیدمان کیبورد در کشور ، با نام ISIRI 9147 منتشر شده است . قالب کیبورد ISIRI 9147 را می توانید از لینک زیر بگیرید .

دانلود قالب کیبورد ISIRI 9147 که آخرین چیدمان استاندارد کشور است . ( توجه داشته باشید که این استاندارد جایگزین استاندارد 2901 شده است و استاندارد 2901 از درجه اعتبار ساقط است )

بنابراین قالب کیبورد ای سی ری ۹۱۴۷ ، در حال حاضر آخرین نسخه استاندارد ، برای کیبورد های فارسی است . پس از دانلود قالب کیبورد ISIRI 9147 که لینک آن در بالا بود ، باید فایل را extract کنید . یک فایل Setup در اینجا هست که باید آن را اجرا کنید . توجه داشته باشید که باید حتما با سطح دسترسی مدیر سیستم وارد شده باشید ( یعنی کاربر شما باید Admin هم باشد ) نصب بسیار ساده است و فقط با دو گزینه Next و کمتر از ۳۰ ثانیه نصب به اتمام می رسد .

پس از اتمام نصب قالب کیبورد چنانچه انتظار می رود ، این قالب هنوز فعال نشده و به منظور فعال سازی قالب کیبورد باید به Control Panel بروید ، از آنجا بر روی Regional & language option کلیک کنید ، از پنجره باز شده به قسمت Languages بروید و بر روی Details کلیک کنید . معمولا زبان انگلیسی و فارسی از پیش روی سیستم نصب شده و قابل مشاهده است .

زبان فارسی قبل از اضافه کردن قالب کیبورد استاندارد ISIRI 9147

زبان فارسی قبل از اضافه کردن قالب کیبورد استاندارد ISIRI 9147

همانطور که در بخش Keyboard مشاهده می کنید ، کیبورد فارسی ( که چینش آن با استاندارد ISIRI 9147 یکی نیست و چینش آن هم استاندارد نیست) بر روی سیستم نصب شده است ، حالا برای اضافه کردن کیبورد استاندارد فارسی ، روی کیبورد فارسی کلیک کنید و سپس بر روی Add کلیک کنید . از پنجره ای که باز می شود از بخش Input Language زبان Farsi را انتخاب کنید و تیک قسمت Keyboard Layout/IME را بگذارید و از منوی پایین افتادنی آن Persian Experimental Standard را انتخاب کنید . و بر روی OK کلیک کنید .

اضافه کردن قالب کیبورد استاندارد ISIRI 9147

اضافه کردن قالب کیبورد استاندارد ISIRI 9147

حالا در لیست Keyboard های شما ، دو کیبورد فارسی وجود دارد ، یکی Farsi و یکی Persian Experimental Standard ، برای اینکه بعدا دچار مشکل نشوید روی کیبورد Farsi کلیک کنید و روی دکمه Remove کلیک کنید . با این کار کیبورد فارسی اضافه از سیستم شما حذف خواهد شد .

قالب کیبورد استاندارد فارسی اضافه شده و قالب کیبورد غیراستاندارد پاک شده

قالب کیبورد استاندارد فارسی اضافه شده و قالب کیبورد غیراستاندارد پاک شده

نهایتا باید بر روی OK کلیک کنید. و توجه داشته باشید که برای اعمال تغییرات حتما باید سیستم را یکبار Reset کنید . و تا وقتی که سیستم را مجددا راه اندازی نکردید تغییرات شما اعمال نخواهد شد . توصیه می کنم این کیبورد را حتما بگیرید و بر روی سیستم خودتان نصب کنید . چون این کیبورد تنها کیبورد استاندارد فارسی است و مشکل یونیکد ندارد .

نهایتا قالب کیبورد شما به شکل زیر در خواهد آمد : ( حالت با Alt رو نزاشتم )

نمایش عادی کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147

نمایش عادی کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147

نتیجه گیری

نمایش Shift کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147

نمایش Shift کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147

 

 

استاندارد یونیکد از دو جنبه قابل بررسی است ، بخش اول تولید اسناد یونیکد است که برای اینکار باید از یک قالب کیبورد استاندارد ( که قابلیت تولید کدهای صحیح یونیکد را دارد – مثل ISIRI 9147 ) استفاده کرد . و البته فایل مورد نظر را باید بصورت Unicode یا UTF-8 ذخیره کرد . و بخش دوم نمایش اسناد یونیکد است که برای مشاهده صحیح اسناد یونیکد باید فونت استاندارد یونیکد داشته باشید . با فرصتی که شرکت فراکنش در اختیار ما گذاشت توانستیم تمامی فونت های زبان فارسی را بررسی کرده و از میان آنها استاندارد ترین فونتها را انتخاب کنیم .

بصورت کلی نتیجه این شد که فقط و تنها فقط ۴ فونت یونیکد استاندارد ( براساس استاندارد ISIRI 9147 ) وجود دارد . این چهار فونت عبارتند از : Terafik که تیم فارسی وب آن را تهیه کرده . XB tabriz که توسط انجمن ایرماگ تهیه شده . فونت Lateef و Scheherazade که توسط sil تهیه شده است . سایر فونت ها که توسط همین تیم ها یا سایر اشخاص تولید شده کاملا غیراستاندارد هستند .

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

لینک های مرتبط

لینک مستقیم همین مطلب در وبلاگ من

بررسی ساختار یونی‌کد

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

یکسری مشکلاتی که یونیکد برای زبان فارسی به علت غیراستاندارد بودن فونت ها ایجاد کرده :‌ رفع مشکلات در Convert کردن پروژه Reporting Services 2005 به Reporting Services 2008

جدول مقایسه فونتهای رایج فارسی که افشار محبی آن را تهیه کرده است در این مطلب مشکلات هر فونت بصورت جداگانه آمده است . مطالعه این مطلب را توصیه می کنم .

انجمن ایرماگ

صفحه دانلود فونت های ایرماگ توصیه می کنم در صورتی که می خواهید از یکسری فونت استاندارد استفاده کنید از این سری فونت ها و سری فارسی وب استفاده کنید .

شرکت فراکنش حامی نوشتن این مطلب

شرکت فارسی وب شریف

دانلود فونتهای فارسی وب

بنیاد غیرانتفاعی سیل SIL تولید کننده فونتهای استاندارد شهرزاد و لطیف

صفحه دانلود فونتهای شهرزاد و لطیف که بناید SIL آن ها را تولید کرده است توجه داشته باشید که این فونتها عری هستند ولی گلیفهای فارسی را هم کامل پیاده سازی کرده اند .

دانلود مستقیم فونت شهرزاد از بنیاد SIL

دانلود مستقیم فونت لطیف از بنیاد SIL

دانلود قالب کیبورد ISIRI 9147

 موسسه استاندارد و تحقیقات صنعتی ایران

فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه ( توضیحات مربوط به استاندارد ISIRI 9147 )

فن‌آوری اطلاعات – تبادل و شیوه نمایش اطلاعات فارسی بر اساس یونی‌کد

11 Responses to ارتباط کیبورد با یونیکد

  1. خوب نوشتی. نام استانداردها «ماتصا» است نه «تصما».

  2. این چندمین باری است که قصد دارم بیام از سبک پست هاتون تعریف کنم ( و هر دفعه فراموش میکنم).

    جزییات کافی (حتی برای افراد متخصص)-
    لینکهای مناسب-
    و …

    موفق باشید

  3. کامبیز قلی says:

     dll استانداردی را هم که معرفی کرده بودید دانلود و نصب کردم. آرایش صفحه کلید استاندارد شد ولی مشکل نیم فاصله حل نشد. چه کنم؟

  4. sin says:

    سلام
    من هم یک نمونه فایل اصلاح شده kbdfa.dll برای ویندوز اماده کردم که مشکلات جابجایی حروف (پ و ژ و…) رو برطرف کردم و حروف فارسی “ی” و “ک” رو در آن قرار دادم.
    همچنین هم امکان تایپ “ی” را دارد و هم “ي” یعنی حروف قبلی حذف نشده اند ولی جای انها عوض شده است.

    مشکل نیم فاصله و فاصله مجازی رو هم نداره.

    از لینک زیر میتوانید دانلود کنید.

    http://snjonline.blogfa.com/post-394.aspx

  5. افشین says:

    سلام.
    مفید بود.
    ممنونم.

  6. worldp30 says:

    واقعا مطلبي مفيد و عالي بود

    ممنون

  7. مهروش says:

    سلام
    یک سری به سایت من هم بزنید و این صفحه را ببینید
    http://fmehrvash.com/fonthayeUnikod.htm
    چند فونت یونی کد فارسی، به همراه یک صفحه کلید فارسی استاندارد
    بدرود

  8. Pingback: فونت فارسی و کامپیوتر « اشتراک

  9. Pingback: لینک‌های مرتبط با صفحه کلید استاندارد فارسی، یونیکد و فارسی نویسی « دنیای پیرامون

  10. Pingback: متون فارسی انگلیسی و مشکلات من « کامپایل مغزی

  11. Pingback: افشین فلاطونی » Blog Archive » قلم فارسی و رایانه

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: