چگونگی ساخت فونت دلخواه برای کتابخانه 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 فقط بر روی نمایشگرهای تک رنگ قابل استفاده است و برای نمایشگرهای رنگی نمی توان از این کتابخانه استفاده کرد.
سلام .
به این روش اگر فونت بسازیم میتونیم به جای اون فونت 8در8 پیکسل که برای اردوینو ریشیپر استفاده شده این فونت جدید رو جایگزین کنیم ؟ یا فقط برای u8g2 استفاده میشه ؟
این روش فقط با کتابخانه u8g2 جوابگو هست.
برای کتابخانه adafruit_gfx راهی وجود ندارد؟ میشه کمی توضیح بدین که دقیقا چکار باید کرد
در حال حاضر امکان ارتباط این کتابخانه با adafruit_gfx فراهم نیست.
شما میتونین سایز 12در12 یا 14در14 پیکسل رو هم طراحی کنین ؟ یاراهنماییم کنین که چطور اینکارو انجام بدم
ممنون !
به من بگید نوع (مدل) نمایشگرتون چی هست ؟
اگه می تونید لینک بدید.
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 از نمایشگرهای رنگی پشتیبانی نمی کند و این کد قابل استفاده نیست.
وقت بخیر ! الان این کد برای ال سی دی من قابل استفاده نیست؟ اگه نمیشه من یه روش دیگه ای پیدا کنم
چون کتابخانه u8g2 از نمایشگرهای رنگی پشتیبانی نمی کند بنابراین این کد برای نمایشگرهای رنگی قابل استفاده نیست.