/efont/さんのUnicode Fontを利用して、Arduino用のフォントライブラリを作ってみました。
PROGMEMだとプログラム転送時に毎回大きなフォントデータも転送する必要があるので、一度転送すればよいSPIFFSで作ってみました。
※現時点の情報ですので、最新情報はM5StickC非公式日本語リファレンスを確認してください。
注意
こちらは実験ですので、実際に使う場合には以下のページを参考にしてください。
利用フォント
Unicode Font from /efont/
上記のf16.bdfとb16.bdfを利用させていただき、16ピクセルフォントを作成しました。
作成物
GitHub - tanakamasayuki/efontUTF16spiffs: efont UTF16 Font Data(SPIFFS) for Arduino
efont UTF16 Font Data(SPIFFS) for Arduino. Contribute to tanakamasayuki/efontUTF16spiffs development by creating an acco...
上記にとりあえず置いてみました。
フォントサイズ
1.4Mぐらいになりました。SPIFFSなので/efont/が収録しているUTF16のBMP文字はすべて取り込んであります。
実行結果

PROGMEM版と同じなのですが、最初1文字単位だと遅かったので、複数の文字を転送してから描画しています。SPIFFSだとやっぱりファイルオープンに時間がかかりますね。
サンプルコード
#include <M5StickC.h>
//#define EFONT_BUF_SIZE 64
#include "efontUTF16spiffsM5StickC.h"
void setup() {
M5.begin();
M5.Lcd.setRotation(0);
M5.Lcd.setCursor(0, 0);
printEfont("新しい朝が来た希望の朝がabcd12345()+-12345", 0, 16*0);
}
void loop() {
}
PROGMEM版と比べると、フォント指定がなくなって、バッファサイズの指定が増えています。4とかに変更して実行してもらえればわかりますが、結構遅いので最大文字数より大きくしたほうがいいです。
まとめ
描画自体も遅いのですが、やっぱりSPIFFSのファイルロード時間も結構気になってしまいます。
必要な文字単位でPROGMEMに保存する方が、データ検索に時間がかかりますが使いやすいかもしれないですね。ちょっとそっちも検討してみます。


コメント