روش طراحی فونت فارسی برای LCD گرافیکی با چیپ ks108

شروع موضوع توسط mj.sh ‏11/2/16 در انجمن AVR

  1. mj.sh

    mj.sh مدیر عضو کادر مدیریت

    اینجا میخوام یکی از کارهایی که براش واقعا زیاد وقت گذاشتم رو اموزش بدم و یه برنامه نمونه در دست رس دوستان بگزارم

    امیدوارم همه بتونن ازش استفاده کنن
    من فرض رو بر این میزارم که شما با سی و کدویژن و LCD KS108 اشنا هستین و نیازی به توضیح و اموزش ندارین.

    یه توضیح مختصری در مورد فونت فارسی اینکه
    هرکدوم از حروف فارسی چهار حالت داره
    1- اول
    2- وست
    3- اخر چسبان
    4- اخر تنها
    مثل حرف ه ( ههه ه)
    مثل حرف ی ( ییی ی) و ...
    ممکنه بعضی از حروف یکی از این حالتها رو نداشته باشه ولی بیشتر از 4 تا نیست

    بنابر این بجر خود فونت یه MAP یا یه جدول دیگه هم نیازه که نوع حرف رو تشخیص بدیم

    اول خود فونت :

    باید با یه نرم افزار فونت ساز یا تبدیل عکس به HEX مثل FAST LCD یه عکس از فونت طراحی بشه
    این نرم افزار
    FAST LCD
    http://s1.picofile.com/file/6789884304/FastLCD.exe.html

    این هم خود فایل فونتمون که فعلا به صورت یه عکسه


    [​IMG]

    [​IMG]

    و بعد از تبدیل به صورت HEX میشه

    من چون اینجا فقط میخوام در مورد فارسی توضیح بدم بنابر این قسمت فارسیشو جدا میکنم و بعد از کمی تغییر و ویرایش میشه این(چون تعداد خطوط میره بالا توی یک فایل tex میذارمش.از پایین پست دانلود کنید)


    حالا به یه MAP نیاز داریم
    این MAP برای تشخیص نوع حرف و حالتش به کار میره
    توی یونیکد حروف فارسی از 127 شروع میشه تا 255 پس یکی یکی شماره حروف رو در میاریم
    و توی یه جدول 128X4 میزاریم

    مثل این (چون تعداد خطوط میره بالا توی یک فایل tex میذارمش.از پایین پست دانلود کنید)



    حالا کل کار اینه که کد هگز یکی یکی حروف جملتون رو ضرب در چهار کنید و با عدد 127 جمع کنید حالت حرف رو تشخیص بدی (بفهمی کدوم یکی از اون چهارتاست) بعد با خوندن 8 بایت از جدول فونتمون با ابتدای عددی که از توی جدول MAP در اوردیم روی LCD نمایش بدیم
    توی پست بعد روش تشخیص حالتهای حروف رو هم یاد خواهم داد.

    یه چند تا عکس میزارم تا بهتر متوجه بشین

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]


    کپی شده از مطالب استاد اسدی

    پیوست ها:

    • font.txt
      اندازه فایل:
      کیلوبایت 4.4
      نمایش ها:
      87
    • map.txt
      اندازه فایل:
      کیلوبایت 4.4
      نمایش ها:
      84
  2. mj.sh

    mj.sh مدیر عضو کادر مدیریت

    برای تشخیص حروف
    قبل از انتخاب نوع حرف ، حرف قبل رو چک میکنیم تا بدونم یکی از این (ا - آ - د - ذ - ر - ز - ژ - و - فاصله)حروف هست یا نه بعد قاصله چک میشه مصل این
    1 - اگر حرف قبل یکی از این نه حرف باشد به شرطی که حرف بعدی فاصله باشه از نوع چهارم یا اخر تنها هست
    2 - اگر حرف قبل یکی از این نه حرف باشد به شرطی که حرف بعدی فاصله نباشه از نوع اول یا اول چسبان هست
    3 - اگر حرف قبل یکی از این نه حرف نباشد به شرطی که حرف بعدی فاصله باشد از نوع سوم یا اخر چسبان هست
    4 - اگر حرف قبل یکی از این نه حرف نباشد به شرطی که حرف بعدی فاصله نباشد از نوع ذوم یا وسط هست
    یه چیزی مثل این البته من اینجا کاراکتر نال یا پایان زشته رو هم همزمان با فاصله چک کردم


    کد:
    [LEFT]a
    str--;
    val = *str;
    str++;
    if(val==32 || val==199 || val==194 || val==207 || val==208 || val==209 || val==210 || val==142 || val==230)
            {
            str++;
            val = *str;
            str--;
            if(val==32 || val=='\0')
                    data = 0;
            else
                    data = 3;
            }
    else
            {
            str++;
            val = *str;
            str--;
            if(val==32 || val=='\0')
                    data = 1;
            else
                    data = 2;
            }[/LEFT]
    
    این هم کد اسکی حروف فارسی
    کد:
    ا = 199
    آ = 194
    ب = 200
    پ = 129
    ت = 202
    ث = 203
    ج = 204
    چ = 141
    ح = 205
    خ = 206
    د = 207
    ذ = 208
    ر = 209
    ز = 210
    ژ = 142
    س = 211
    ش = 212
    ص = 213
    ض = 214
    ط = 216
    ظ = 217
    ع = 218
    غ = 219
    ف = 221
    ق = 222
    ک = 223
    گ = 144
    ل = 225
    م = 227
    ن = 228
    و = 230
    ه = 229
    ی = 236
    البته بین اینها حروف مشترک با کدهای اسکی متفاوت و حروف دیگه ای مثل همزه و حرف ی زیر نقطه دار و حرکه ها و یه تعدارد مخلفات دیگه هم هست که چون نیازی بهشون نیست من ننوشتم و فقط به حروف اصلی بسنده کردم
    همونطوری که قبلا هم گفتم من این حروف رو جوری طراحی کردم که بیشترشون فقط یک یا دو حالت دارند مثلا کلا حالت اخر چسبان با حالت اخر تنها بجر حرف ه در دیگر حروف یکسان هست یا حالت اول چسبان با حالت وسط بجز حرف ه در دیگر حروف یکسان هستو ... که این خود حجم فلش رو خیلی کم میکنه

    کپی شده از مطالب استاد اسدی
    c0mmander37 از این پست تشکر کرده است.
  3. mj.sh

    mj.sh مدیر عضو کادر مدیریت

    سلام

    اول تشکر از آموزش های بسیار خوبتون [​IMG]

    دوم یه سوال سوال داشتم

    من دلیل استفاده از آرایه ی F_FONT_MAP رو متوجه نمیشم ، میشه یکم توضیح بدید که کارش چیه؟

    ممنون
    c0mmander37 از این پست تشکر کرده است.
  4. mj.sh

    mj.sh مدیر عضو کادر مدیریت

    اما در مورد سوالت ببین دوست مو همونطوری که قبلا توضیح دادم هر حرف 4 حالت داره در صورتی که برای هر چهارتا حالتش فقط یه کد اسکی هست ودر هر چهار حالت مشترکه توی ارایه خود فونت ما نمیتونیم همه حروف رو با حالهای مختلفش قرار بدیم یعنی جا نمیشه شما 32 حرف داری با حرکه ها و چند تا شکلک و علامت 32X4 میشه 128 با 128 تای انگلیسی میشه 256 در صورتی که کد اسکی 8 بیته و 256 اخرشه ولی در واقع این ویندوز یا خود مصرف کننده فونت هست که تصمیم میگیره از کدوم حالت استفاده کنه
    توی هر فونت 256 حرف اصلی داریم که همون کدهای اصلی هستند که 127 تای اول همشون انگلیسی یا همین کدهای اسکی استاندارده و فقط 127 تای بعدی میمونه حالتهای حروف هم کد داره ولی بیشتر از 256 هست اما اونها هم استاندارده یه نرم افزار فونت ادیتور مخصوص کامپیوتر نصب کن بهتر متوجه میشی

    کپی شده از مطالب استاد اسدی
    c0mmander37 از این پست تشکر کرده است.
  5. mj.sh

    mj.sh مدیر عضو کادر مدیریت

    c0mmander37 از این پست تشکر کرده است.
  6. mhk1367

    mhk1367 همکار جدید

    سلام این نرم افزار فقط برای سایز 8*8 ماکزیمم قابل استفاده است برای 16*16 نیز نرمافزاری شبیه اش را معرفی می کنید؟
  7. Alma

    Alma مدیر عضو کادر مدیریت

    نه فقط برای 8 در 8 نیست
    برای بزرگ تر ها هم میتونید استفاده کنید

    البته دو تا نرم افزار دیگه هم زیر این پست اپلود میکنم که خیلی حرفه ای تر و کاربردی تر میتونید فونت طراحی کنید
    یکی از این نرم افزار ها یه قسمتی از کدویژن هست

    upload_2019-5-19_1-16-52.png

    upload_2019-5-19_1-18-8.png

    پیوست ها:

  8. mhk1367

    mhk1367 همکار جدید

    سلام وتشکر از دو نرم افزار فونت سایز 16 هم دارید که قرار بدهید؟
  9. Alma

    Alma مدیر عضو کادر مدیریت

    بیشتر هدف این انجمن نشون دادن راهه تا دادن لقمه اماده
    با همین دوتا نرم افزار معرفی شده و نهایتا کمی کوشش خطا و مطالعه میتونید هرنوع فونی که میخوایید بسازید
    کاش یه تلاشی میکردید و نهایتا سوالها و مشکلات احتمالی رو میپرسیدید
  10. mhk1367

    mhk1367 همکار جدید

    سلام و تشکر که وقت میزارید و جواب می دهید من یکسری فونت سایز 16 با کد مپ اونا پیدا کردم ولی نمیدونم چطور به فرمت قابل استفاده در اردینو تبدیلش کنم میتوانید در زمینه راهنمایی کنید؟

به اشتراک بگذارید