漢字のROM化

以前、5×7ドットマトリクスLEDに漢字を出すための実験をしたことがあるが、その時、漢字フォントをEEPROMに入れたことがあった。今回ISシリーズのLCDに漢字を出すために新たに8×8ドットのELISAフォントをROM化しようと思う。

(意外と「漢ロム」シールがウケたw)

前回は5×7ドットマトリクスだったのでk6x8フォントを使ったのだが、今回は8×8ドットなのでELISAフォントが使えてうれしい。

ROM化するにあたり、すべてのフォントを入れるには56KBの容量が必要なので512kのEEPROMを使用することとして、文字コードテーブルなどどうするかを考えないといけない。

前回は処理を簡単にすることと256kのROMに入れることの両立を図るために次のような工夫をしている

1.不連続になっている文字コードxx7fは詰める

2.処理をラクにするためにxx40~xx9eの94文字とxx9f~xxfcの94文字のエリア単位で処理し、空いているとこには空白を挿入

3.あまり使わない第2水準(小さすぎて読めない文字多し)とロシア文字を含まない

以上から、記号やかななど8140-83fcまで188×3=564文字、第1水準+αが889f-98fcまで94+188×16=3102文字。

合計3666文字を格納した。

ELISAフォントは1文字8バイトなので同じ工夫をすれば256kのROMに格納できるが、スキップしたすべての文字を入れるとすれば、3482文字追加になるので512kのROMが必要となる。

ということでROMのメモリマップは次のようになる

記号、かななど:8140~84fc(84bf~84fcは空白)までの188×4=752文字

第1水準:889f~989e(9873~989eは空白)までの94+188×15+94=3008文字

第2水準:989f~9ffcとe040~eafc(eaa3~eafcは空白)までの94+188×7+188×11=3478文字

合計752+3008+3478=7238文字、つまり57,904bytesで463,232bitsとなる。
今回もちゃんとシールを貼ってみましたw

残念ながら、フォント作者の意向により変換したデータの公開は無許可ではできないので、ここで作ったデータを公開できないのはちょっと残念・・・。
データの作り方は、簡単に言えばここに置いてあるFONTX形式のファイルをC言語のソースにするツールを使ってELISAフォントを変換し、出力されたCソースをちょこちょこっといじって、バイナリ出力するプログラムを足してやって実行するだけで完成となる。バイナリ出力するプログラムをまじめに書けば、ちょこちょこCソースをいじらなくても半自動でどんなFONTX形式フォントでもROM用のバイナリファイルを作れるのだが、自分で使うだけなので当面このままでもよいかと・・・w
k6x8フォントの方はデータを公開してもかまわないみたいなので要望があればアップすることにしよう!

  1. その後、半角フォントも入れて800バイト増えました

  1. トラックバックはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。