最近 ESP8266 + SSD1306 で遊んでいるのだが、文字表示用のフォントのうちの特殊文字について書く。
ことの発端は、温度を表示するときの「℃」のCの左肩についている「度」をあらわす丸は表示できんのかなと思ったところから。
一文字で済むところを、丸がないと「Deg.」とか書かなきゃならなくなる。
漢字のフォントを使うという手も最初に浮かんだが、他の文字はほとんど不要なのに「℃」のためだけに漢字を使うのもなあと思って二の足を踏んだ。
検索しながらWebをうろうろしていると、同じようなことが話題になっているのをいくつか見つけた。
例えば、[SOLVED] How to print the degree symbol ? (extended ASCII)とか。
で、Extended ASCII の中に目的の記号が含まれていることを知る。
ついでに、ASCIIってそもそも7bit(0x7E、10進で127まで)だったのも知る。
1バイト分だとばかり思っていた。
残りの128以降に割り当てる場合にExtended ASCIIと呼ぶらしい。
以上を意識しながらArduinoやESP8266用のライブラリを確認してみる。
今のところ、Adafruit_SSD1306、esp8266-oled-ssd1306、SSD1306Asciiのライブラリを使ってみたことがある。
Adafruit_SSD1306は、フォント自体はAdafruit-GFX-Libraryのフォントを呼び出しているようだ。
だとすると、私が見た限りでは0x7Eまでしかデータが無いようだ。
もちろんちゃんと探せば対応してるんだろうけど。
SSD1306Asciiも127までだった。
esp8266-oled-ssd1306だけが、255までフォントのデータが存在して、期待が持てた。
早速やってみる。
ちゃんと表示できた。
ただし、Visual Studio Code上でshiftjisに設定しているとうまくいかなかった。
UTF-8だとうまくいった。