今回はドット数が30ドットあるため、24ビットのビットマップフォントを使い、表示させるようにします。
mgo-tec様のサイトで紹介されているライブラリ「ESP32_SPIFFS_ShinonomeFNT」をもとにして変更します。
ここで紹介するプログラムは、ESP32マイコンであれば動作します。
ビットマップフォント24bitの取得
まず、24ドットのピットマップフォントをダウンロードします。ファイル名は「intlfonts-1.4.2.tar.gz」です。ファイルを解凍すると様々なBDFフォントが含まれています。この中のフォルダ「Japanese.X」に、24ドットのBDFフォントが入っています。
全角フォント「jiskan24.bdf」
半角フォント「12x24rk.bdf」
同じファイル名でも、取得するサイト(ファイル)により、BDFのファイル構造が異なっています。先頭からの位置がずれてしまいますので、他から取得する場合には注意が必要です。
フォント取得ライブラリの作成
ライブラリ「ESP32_SPIFFS_ShinonomeFNT」をもとに変更させていただきました。
ライブラリを変更するにあたり、BDFフォントのファイル形式を知る必要があります。こちらも、mgo-tec様の「日本語漢字ビットマップフォント、東雲フォントについて」というサイトに説明があり、大変参考にさせて頂きました。
(1)クラス名の変更
今回使用するフォントが東雲フォントから「jiskan24.bdf」になることから、クラス名を「 ESP32_LittleFS_JisKanjiFNT」にしました。
(2)フォント読み出し関数
東雲フォントでは、「SjisToShinonome16FontRead」関数でフォントの読み出しを行っています。24ビットに対応するため、「SjisToJiskanji24FontRead」関数にして、フォントデータを32ビット長(uint32_t)のbuf[24]配列に格納するようにしました。
この関数内から全角の場合には「LittleFS_Flash_JiskanjiFNTread_FHN」関数を呼び出しています。また、半角の場合には「LittleFS_Flash_JiskanjiFNTread_Half_FHN」関数呼び出しています。この関数内も24ビット対応させます。
(3)フォントのアドレス計算
フォントを読み出すときに、アドレスの計算が必要になります。これを行っているのが、関数「SjisToJiskanjiFNTadrs」です。このチェックをするため、バイナリエディタでフォントファイルを開き、エディタのアドレスと計算しているアドレスをチェックして、すべてが対応するようにします。この作業が大変でした。
ここまでのフォントを表示するプログラムをアップします。
ファイル名 disp_jiskan24dot.zip
書き込み、実行するとシリアルモニタにフォントが表示されます。
LED表示装置でのフォント表示
フォントは、ビットデータとして、配列 buf[] にを読み出されます。これを表示させることで、LED表示装置に表示させることができます。


0 件のコメント:
コメントを投稿