/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に保存する方が、データ検索に時間がかかりますが使いやすいかもしれないですね。ちょっとそっちも検討してみます。
コメント