キャラクタLCDの3x2文字のマスを使って数字1つを表現します。ここではそれをデカ文字、デカ数字と呼ぶことにします。 デカ文字は7セグLEDのように形作る文字です。 セグメントにあたるパーツをユーザー定義文字(ID:0~7)に割り当て、それらの組合せで数字「0」~「9」を表現します。
最初に太線と黒四角だけで最も単純なデカ文字を作ります。まず「8」を作り、それをベースに残りの数字を作ります。
次に、「0」~「9」が好みの字形になるようパーツを変形していきます。
カッコイイ文字を作るためにはパーツの追加も必要です。
しかしユーザー定義文字は8文字までしか使えず、その制限の中でイメージした字形を作らなくてはなりません。
ここが面白いところです。
カッコイイだけでなく、数字を並べたときに読みやすい形であることも必要です。 実際にキャラクタLCDに表示して細部を調整します。 そうしてできたこのフォント、最も特徴的な形のパーツから「しずく形」と名付けました。
様々な電子工作でキャラクタLCDに温度や時刻を表示することがあるので、マイナス、小数点、コロンもデカ文字で表現しようと思います。 ところがデカ数字でユーザー定義文字8個を使い切っているので、小数点、コロンを表現する黒丸を割り当てることができません。 ※マイナスの符号は横棒のパーツで表現できる。
デカ数字のパーツ8個を使って小数点、コロンが表現できれば問題ありません。
…で、試したのがコーヒー豆のような小数点。デカすぎ。コロンの表現は難しそう。…で、ボツ。
結局、黒丸をユーザー定義文字に動的に割り当てることにしました。
何桁かのデカ数字を表示するとき、使っていないパーツ(ID:0~7)に黒丸を定義し直し、表示します。
そして別のデカ数字を表示する直前に、黒丸から元のパーツの定義に戻します。
使っていないパーツがない場合は仕方がないので小文字のオー「o」で代用します。
例えば、「-14.5」は「-」「1」「4」「5」のどれにもID:3のパーツが使われないので、ID:3に黒丸を定義します。
「-13.5」はID:0~7全てのパーツを使うので、黒丸ではなく「o」を表示します。
※03はID:3に黒丸を定義したことを示している(黒丸の文字コード)。6Fはoの文字コード。
動画は、温度を想定した「-40.0~0.0~80.0」、時刻を想定した「0:00~23:59」をデカ文字で表示した様子です(抜粋)。 「o」がちょくちょく出現しているのが分かります。
黒丸が薄く見えますが、これは次のデカ数字を表示する直前に黒丸を消去しているためです。 黒丸を表示したまま元のデカ数字のパーツに定義し直すと、画面にゴミが表示されたように見えてしまいます。 温度や時刻を高速に書き換える必要がなければ、黒丸を一旦消去する必要はありません。
デカ文字、温度と時刻。小数点(黒丸)は文字コード0~7に動的に割り当て。デカ数字で0~7全て使用済みならo(オー)で代用。小さい文字は 黒丸を割り当てた文字コード。oの文字コード6Fがちょくちょく現れる。 pic.twitter.com/j5HTYwZCtQ
— 『昼夜逆転』工作室 (@jsdiy) May 5, 2020
— 『昼夜逆転』工作室 (@jsdiy) May 5, 2020
何年も前に知り、いつか自分でもやってみようと思っていたデカ文字。 最近キャラクタLCDをいじっていたので、ついでに楽しむことができました。 フォント作りは面白いです。