https://github.com/ikedam/m5paper-ikedamclock/tree/v0.1.0
TrueType フォントでの時計と固定画像を表示するようにしたもの。
いろいろ分かったこと。
* EInk の表示は結構遅い。しかも M5EPD では表示処理がブロックするため、全体の処理が目に見える動作になる。多分、EInk のデバイスのせいだと思うんだけれど、もしかすると TrueType の処理のせいかもしれない。
* ttf ファイルが使えるが、表示するフォントサイズを決めて Renderer を作成する必要がある。好きなときに好きなサイズで、というわけにはいかないようだ。
* 指定したフォントサイズに対して、描画領域がそれよりも大きい。特に文字の上部にスペースができる。余白のために思ったよりも小さく表示される、ならばともかく…。原因がよくわからない。とりあえず一定割合のマージン処理を入れて回避。
* M5EPD_Canvas というクラスがあって、フォントの読み込みはそのインスタンスメソッドとして提供される。EInk の特性に合わせてディスプレイの表示を複数のブロックに分けて管理できるように存在しているクラスなのに不便だなあ、と思ったら、どうやら実態としてフォントはグローバルで保持していて、キャンバスで共有らしい。API 設計にやや不便がある。
* ミニダム1日1絵 をランダムで表示する計画だったが、Twitter の画像はプログレッシブ JPEG で、 ESP32 のライブラリで提供している tjpgdec ではサポートしていない。ざっと見た限り、組み込み向けでプログレッシブ JPEG をサポートしているライブラリはなさそう。
* tjpgdec では画像サイズのスケーリングは 1/2, 1/4, 1/8 ... しかできないので、任意の領域にジャストフィットさせる、ということができない。LovyanGFXであれば読み込んだスプライトを任意の領域にスケールして貼り付けることができそうなので、いまから LovyanGFX に乗り換えるべきか。ただ LovyanGFX は直接 ttf ファイルを扱えないようなので、そのへんは作業が必要。