アーカイブ

2010 年 2 月 17 日 のアーカイブ

ZY-FGD1442701V1(5)

2010 年 2 月 17 日 コメントはありません

長い前フリでしたが(?)
やっと本題。

絵が出たので、次は文字列ですかね。

そーいうわけで、FONTファイルを探してたのですが
結局SJISの$FONTX2形式しか見つからなかったので
UnicodeからSJISへ変換しながら使うか、
それとも
フォントファイルをUnicodeで再構成してしまうか、ですが。

その前に、過去の経験からの話。

家庭用ゲーム機と呼ばれるものは、パソコンとは違って性能は
基本的に一定なわけです。
当然、使えるメモリサイズも一度決まってしまえば変わりませんね。

ここでは、各機の詳細は抜きで書きますけど
CPUから見えるメモリー範囲は一定であり、その時々によって中身が書き換わって、
ゲーム機のプログラムってのは動いています。
CD-ROMから読み込む、っていうのが、その書き換え行為そのものなのですが。

メモリが限られているわけですから、当然持てるデータが限られます。
たとえばRPGで、メッセージを出すために、すべてのフォントデータを常に丸ごと
メモリに置いてるか、といえば、そんなはずはありませんよね。

そのマップで、そのシーンで、必要な最低限をメモリにロードします。
メッセージ(文字列)は、開発過程で確定しますので、必要な文字はどれとどれか、ってのは
既に決まってるのです。
だから、そのフォントデータを抜き出して、番号を振りなおして、決まった場所に置いて、
メッセージはその再生順序を示すコードの列に置き換えられています。

たとえば

に 1
わ 2
に 1
は 3
に 1
わ 2
、 4
に 1
わ 2
と 5
り 6
が 7
い 8
る 9(振りなおした番号)

14文字が、9文字分のデータに圧縮されます。

このデータをメッセージ表示の際に再生すれば、この文字列は再現できるわけです。

さて。
今回やってるマイコンでの画面表示ですが。
マイコンでも、同じようにメモリサイズは決まってますし、ROMサイズも決まっています。
ただ救いなのは、CD-ROMよりも大容量な(!)MicroSDが味方についてます。

たとえば、作ろうとしているものが、MP3プレイヤーだとしたら。

プレイリストをPC上で作らせて、その際にタグを解析して必要な文字列を全部洗い出して
必要な文字のフォントだけを集めて再構成し、文字列も全部プレイリストの中に持ってしまうのが
おそらく一番レスポンスよく動いてくれると思います。

その代わり、リストにないファイルについては、表示できなくなります。

まあ、最終的にどこを目指すかによるけど、とりあえずは、そうではなく。
もっと一般的に文字列を表示することを考えます。

そうすると、先の
Unicodeでフォントファイルを再構成する、という案が浮上してくるのです。
問題なのは、コードが飛び飛びになってること。

その辺をうまく使って、ファイルを分割するようにすれば、多少は速くなるんじゃないかと
思ったりもするのですが。

書き方次第、かな。

とりあえず、$FONTX2は、いつか来た道、なので。
まずはFONTの再編成から。

カテゴリー: Project, 電子工作 タグ:

フォントファイル

2010 年 2 月 17 日 コメントはありません

ここ数日、FONTを探してました。

WindowsがLFNでUnicodeを使うというので、
その配置で使える、$FONTX2形式を。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

そんなもん、ありませぬ ○| ̄|_

それよりも、
「文字コード、この乱立っぷりは一体何!何なの!」

英語圏は確かにASCIIコードで事足りるのかもしれないけど、
我々漢字圏は数万文字を持つわけで
確かに、昔から頭痛の種ではあったのですが。

日本には恐らく元々JISコードというものがあり、漢字にコードが振られていたのに
それをなぜかMicrosoftを含む数社が再マッピングしたShift-JIS、
ここ20年で国際化が進み、2バイトコードの標準化の過程で出てきた
EUC、そして、Unicode。

ややこしいのは、日本の漢字コードの規格化の過程において、幾度となく追加と修正が
行われ、そのたびにJISの規格番号が追加されていること。
その辺も含めないと、表示できない文字が出てきたりする。

・・・・・コード体系についてはかなり深いいきさつの元で成立してるようなので、
これ以上は突っ込みたくないな。

それ以上に、フォントファイルの形式がいっぱいありすぎて、
その殆どは仕様が公開されていない。
それらの相互変換を完璧にこなすようなツールもない。

Windowsで使われるttf形式とPostScript形式の変換は出来るようだが
旧来の$FONTX2形式にはならないらしい。。。

・・・・FatFsの説明書きをつらつらと読んでたら
どうも、SJISとUnicodeの変換テーブルを持ってるらしい。
使うにはcc932_avr.cをリンクしなさい、と。

ソースを覗いてみると・・・まあ、確かにあるね。
これでとりあえず、誤魔化せるのかしら。

じゃあ、変換するためのテーブルを探すか!と
検索すると・・・
ここでも、テーブルの内容にいくつものローカルなものが存在するらしい。

まぢですか~ ○| ̄|_

Unicodeの文字をSJISのどの文字のコードに変換するか、というのは
実はそうそう簡単な話ではないらしい。
この辺の話も、掘り下げればかなり深いのかもしれないけど
ここでは書きません。

スルーして、じゃあどの変換テーブルが当面安全なのか、というと
JAVA 1.4.0以降のテーブルと同じだ、というテーブル表に行き着いた。

とはいえ、こんなデカイテーブル、マイコンのメモリに納まるわけがないのは
明白なわけで。

どうしますかねぇ・・・

カテゴリー: 電子工作 タグ: