سوالی داشتم. ممنون میشم که من رو راهنمایی بفرمایید.
در یک دستگاه صنعتی قراره زبان فارسی پیاده سازی بشه. در واقع ما در اون دستگاه صنعتی یک کیبورد تاچ اسکرین داریم و میخایم به کاربر قابلیت تایپ به زبان فارسی بدیم. تمامی 32 حرف فارسی (در 4 فرم اول، وسط، آخر و تنها مثلا ﮎ ، ﮏ ، ﮐ ، ﮑ ) به میکروکنترولر داده میشه. قراره وقتی روی کیبورد شروع به تایپ می کنیم، دقیقا مثل نرم افزار های تیپ فارسی مثل Word ، ابتدا همه حرف ها بصورت تنها نوشته میشه، با ادامه تایپ حروف بر اساس موقعیتشون در کلمه به فرم اول، وسط، آخر تغییر پیدا می کنند و کلمه نهایی به شکل صحیح نمایش داده میشه.
در واقع ما یک فایل اکسل داریم که در اون چهار فرم ماتریس حروف فارسی رو طراحی کردیم (فایل اکسل پیوست). فونت ها در 3 حالت Normal و Bold و Big هستند که جهت فارسی سازی LCD انگلیسی پیوست قراره استفاده بشه. با توجه به اینکه ماتریس فونت ما کوچک است، متاسفانه فضای کافی برای طراحی فونت با رزولوشن و کیفیت بالاتر نداریم. طراحی فونت های داخل فایل اکسل بصورت ساده است و امیدوارم در عمل جوابگو باشه. بخاطر ساده کردن کار و کوچکی ماتریس، بعضی حروف ترکیبی مثل ترکیبات "لا" رو هم اصلا کار نکردیم.
باتوجه به اینکه سایز ماتریس های ما از قبل مشخص شده، آیا فکر میکنید بتونیم از "حرف باز" استفاده کنیم یا همین روش خودمون رو باید پیش ببریم؟
همچنین ما کد یا الگوریتمی نیاز داریم که جهت پردازش تایپ کلمه استفاده کنیم و نرم افزار ویرایشگر ما متوجه بشه که در کلمه از کدوم یک از چهار فرم حرف بسته به موقعیت حرف در کلمه استفاده کنه. یک الگوریتم پیدا کردم که فکر کنم جواب کار ما رو میده ولی مطمئن نیستم. (الگوریتم پیوست).
به نظر شما این ماتریس های فونت و این الگوریتم ما رو به نتیجه میرسونه؟
شاد باشید
رضا اسماعیلی
09122444875
--
--
http://groups.google.com/group/persian-computing-fa
---
این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «محاسبات فارسی» در گروه Google ثبتنام شدهاید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامهای به persian-computing-fa+unsub...@googlegroups.com ارسال کنید.
برای گزینههای بیشتر از https://groups.google.com/d/optout بازدید کنید.
--
--
http://groups.google.com/group/persian-computing-fa
---
این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «محاسبات فارسی» در گروه Google ثبتنام شدهاید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامهای به persian-computing-fa+unsub...@googlegroups.com ارسال کنید.
برای گزینههای بیشتر از https://groups.google.com/d/optout بازدید کنید.
من پاسخ سوالات شما را به چند بخش تقسیم میکنم تا در صورت وجود سوالات بیشتر در ادامه صحبت موضوعها رو تفکیک کنیم:
۱- محیط گرافیکی:
بر اساس تصویری که فرستادید محیط گرافیک سخت افزار شما محیط بیت مپی است. تا آنجایی که میدانم موتورهای نمایش و رندر حروف مثل فری تایپ و حرف باز برای محیط برداری و سطح بالا هستند. متاسفانه چون محیط بیت مپی کاربرد انچنانی برای من و ارتباطی با نیازهای من نداشتند، اطلاعاتم در این زمینه کم هست و محدود به زمان سیستم عامل داس است.
پس من بنا رو بر اساس محیط سیستم عامل داس در نظر میگیریم.
۲- الگوریتمهای مورد نیاز:
۲-۱: الگوریتم راست به چپ:
بطوری کلی اگر نیاز به تایپ و نوشتن راست به چپ دارید باید از الگوریتم fribidi استفاده کنید : https://github.com/fribidi
البته بستگی دارد به نوع نیاز این الگوریتم همه حالات را در نظر میگیرد مثل ترکیب فارسی با لاتین و یا فارسی با اعداد
اگر در دستگاه شما نیاز به نگارش راست به چپ پیشرفته دارید که باید از این استفاده کنید. اگر نه فقط نیاز به نگارش حروف فارسی تنها دارید فکر میکنم با چند خط میتوانید این نیاز رو خودتان در سادهترین حالت حل کنید.
۲-۲: الگوریتم تغییر فرم حروف:
اصطلاحا به این الگوریتم Reshaper گفته میشود. که کارش هم تغییر کاراکتر یک حروف به سایر فرمهای راست وصل، چپ وصل، دو وصل و مفرد بر اساس استاندارد unicode است.
نمونه سی آن در : https://github.com/Accorpa/Arabic-Converter-From-and-To-Arabic-Presentation-Forms-B
و نمونه جاوا اسکریت آن که خودم کمی تغییرش دادم را میتوانید در اینجا مشاهده کنید: http://libre.font-store.ir/persian-reshaper/
۳- حروف و فونت :
بر اساس تجارب قبلی خودم ، دیوایس شما برای نمایش حروف از دو روش زیر میتواند بهره گرفته باشد:
۳-۱ : زیرساخت فراخوانی فونتهای بیت مپی را داشته باشد:
قبلا دیوایس هایی رو دیدهام که قابلیت لود فونتهای با پسوند fon را دارند.
اگر دیوایس شما همچنین امکانی را داشته باشد می توانید از فونت های ویندوز که در کامند لاین میتواند فارسی را نمایش دهد استفاده کنید. و اصلا خودتان را درگیر حروف فارسی نکنید.
۳-۲: شبیه سازی و بارگذاری حروف ماتریکسی در حافظه:
در زمان سیستم عامل داس از این تکنیک استفاده میشد. آن زمان مباحث بومی سازی و چند زبانی مطرح نبود. ۲۵۵ کاراکتر وجود داشت که میآمدیم ماتریکس حروف فارسی را جایگزین یکسری حروف اسکی در حافظه میکردیم و از آنها در فارسی سازها استفاده میکردیم.
با توجه به اینکه به فکر طراحی حروف برای نیاز خود افتادهاید، فکر میکنم دیوایس شما دارد از این روش برای تعریف حروف بهره میگیرد.
پیشنهادی که میتوانم برای شما داشته باشم این است که از حروفی که قبلا برای محیط داس استفاده میشد استفاده کنید که از لحاظ بصری و دیداری تست شده و به سطح پایداری رسیدهاند. و مشکل دیداری ندارند.
من قبلا روی این مباحث زیاد کار میکردم. یکسری سورس هم دارم که میتوانید در این مخزن به آنها دسترسی داشته باشد و امیدوارم بتواند به شما کمک کند.https://github.com/zoghal/my-old-projects
من سعی کردم مباحث را تفکیک کنم و در مورد هر کدام توضیحات مختصری بدم.
امیدوارم در مرحله اول توانسته باشم پاسخگوی سوالات شما باشم.احیانا اگر سوالی داشتید یا هرگونه کمکی از درست من بر بیاید، من در خدمت شما هستم.
شاد و پیروز باشید