چگونگی ساخت فونت دلخواه برای کتابخانه u8g2

نوشته شده توسط آی دریمز در 23 سپتامبر 2019

در آموزش قبل، نحوه نمایش کلمات فارسی بر روی نمایشگر با استفاده از کتابخانه u8g2 را یاد گرفتیم. در این پست می خواهم چگونگی ساخت فونت جدید (فونت فارسی) و استفاده از آن را در کتابخانه u8g2 آموزش دهم. همان طور که احتمالاً متوجه شدید کتابخانه u8g2 از فونت های BDF استفاده می کند که سایز و نوع فونت از قبل ساخته شده است به عبارت دیگر شما فونتی با سایز 14 ساخته اید حالا در برنامه نیاز دارید از فونتی با سایز بالاتر یا پایین تر استفاده کنید، برای این کار باید مجدد، فونتی با سایز مورد نظر خود، بسازید!

برای تبدیل فونت ها به فرمت قابل استفاده در کتابخانه u8g2 نیاز به دو ابزار داریم. ابتدا لازم است با استفاده از برنامه otf2bdf فونت خود را به فرمت bdf تبدیل نمایید. ابتدا برنامه otf2bdf را از اینجا دریافت نموده، سپس با دستور زیر فونت خود را تبدیل کنید. این برنامه در ویندوز و لینوکس تست شده است و قابل استفاده است.

otf2bdf.exe -r 72 -p 16 myfont.ttf -o myfont16.bdf

عدد 16 در اینجا سایز دلخواه فونت شماست که کلمات قرار است بر روی نمایشگر به این سایز، نمایش داده شود. همچنین myfont.ttf فونت ورودی و myfont16.bdf خروجی خواهد بود. عدد 72 رزولوشن یا کیفیت خروجی خواهد بود.

در مرحله بعد باید فایل bdf را به کمک برنامه bdfconv به فرمت قابل استفاده در کتابخانه u8g2 تبدیل کنیم. ابتدا برنامه bdfconv را دریافت نموده و سپس با دستور زیر، آن را تبدیل نمایید.

bdfconv -f 1 -v -m "32-65535" -n myfont16 -o myfont16.c myfont16.bdf

عدد 32 تا 65535 بازۀ کاراکترهای قابل تبدیل در فونت است که بهتر است این عدد را تغییر ندهیم تا تمام کاراکترهای مورد نیازمان تبدیل شود. اگر از سیستم عامل ویندوز استفاده می کنید حتما از دابل کوتیشن برای تعیین بازۀ کاراکترها استفاده کنید.

myfont16.c نام فایل خروجی خواهد بود و myfont16 نام متغیری است که اطلاعات تبدیل شده را در فایل c نگهداری می کند. برای اطلاع از سایر پارامترها از دستور help استفاده نمایید. در پایان برای استفاده از این فونت در برنامه، یا محتویات آن را در فایل پروژه تان وارد کنید یا با دستور

include myfont16.c#

فایل را در پروژه تان، فراخوانی کنید. سپس با دستور زیر از فونت استفاده نمایید.

(u8g2.setFont(myfont16

نکته: در اکثر مواقع بعد از تبدیل فونت، اشکالاتی هنگام نمایش برخی از حروف روی نمایشگر مشاهده می شود. بهتر است برای رفع ایرادات احتمالی از برنامه FontForge استفاده کنید و حروف را تصحیح نمایید. علاوه بر این، طبق توضیحات نویسنده u8g2 برخی سایزها در یک فونت بعد از تبدیل، دارای ایراد هستند که با تغییر سایزِ فونت و یا تغییر پارامترها، ممکن است اشکالات برطرف می شود.

نکته: همان طور که قبلاً اشاره شد کتابخانه u8g2 فقط بر روی نمایشگرهای تک رنگ قابل استفاده است و برای نمایشگرهای رنگی نمی توان از این کتابخانه استفاده کرد.

10 دیدگاه دسته‌بندی : آردوینو, آموزش

10 دیدگاه برای “چگونگی ساخت فونت دلخواه برای کتابخانه u8g2”

  1. reza گفت:

    سلام .
    به این روش اگر فونت بسازیم میتونیم به جای اون فونت 8در8 پیکسل که برای اردوینو ریشیپر استفاده شده این فونت جدید رو جایگزین کنیم ؟ یا فقط برای u8g2 استفاده میشه ؟

  2. reza گفت:

    برای کتابخانه adafruit_gfx راهی وجود ندارد؟ میشه کمی توضیح بدین که دقیقا چکار باید کرد

  3. reza گفت:

    شما میتونین سایز 12در12 یا 14در14 پیکسل رو هم طراحی کنین ؟ یاراهنماییم کنین که چطور اینکارو انجام بدم

    ممنون !

  4. reza گفت:

    2.4″ tft lcd
    with Touch screen
    240×320
    driver HX8347G

    https://shop.roboticngo.com/%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-%D8%A2%D8%B1%D8%AF%D9%88%DB%8C%D9%86%D9%88/1510-%D8%A8%D8%B1%D8%AF-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-lcd-tft-24-inch-%D8%A2%D8%B1%D8%AF%D9%88%DB%8C%D9%86%D9%88.html

    شماره تلگرامم اینه : 9359544799
    میتونین تلگرام با هم در ارتباط باشیم

    • آی دریمز گفت:

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

  5. reza گفت:

    وقت بخیر ! الان این کد برای ال سی دی من قابل استفاده نیست؟ اگه نمیشه من یه روش دیگه ای پیدا کنم

    • آی دریمز گفت:

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