漢字を表示するモジュール

漢字をグラフィック画面 (8-Bit Backgrounds) に表示するモジュールです。
漢字フォントは scfont.fon から読み取ります。

ダウンロード

putfont.zip

内容:

他に必要なもの

フォントファイル scfont.fon (scfont などのサイトから入手出来ます) が必要です。

インストール方法

1. モジュールの格納

putfont.lua をmicroSDカードの任意のディレクトリに置きます。

2. フォントファイルの確認

microSDカードのルートディレクトリ或いは putfont.lua と同じディレクトリに scfont.fon が置かれている事を確認して下さい。

3. 動作確認

サンプルプログラム putfont_sample.lua をDSLuaのファイラから指定して実行します。
なお putfont_sample.lua を putfont.lua と異なる場所に置いた場合は、

dofile('putfont.lua' )

引数 を変更して下さい(フルパスにするなど)。

DSの上画面に次のように表示されればOKです。

関数の仕様

呼び出し方:

dofile('putfont.lua')
 …
x1, y1 = symbol(BG8Bit, x0, y0, color, string)

引数:

BG8Bit 8-Bit Backgrounds のオブジェクト。
Screen.Load8BitBG() で生成しておき、 Screen.Initialize() によって初期化しておく事。
x0 文字列を出力し始めるX方向グラフィック座標(≧0)。
y0 文字列を出力し始めるY方向グラフィック座標(≧0)。
color 色番号。 Plot() の第3引数と同様。
string 出力する文字列。漢字コードはUTF-8である事。

返り値:

x1 表示した文字列の直後のX座標
y1 表示した文字列の直後のY座標

表示しきれない場合は自動的に改行します。

使用可能な文字

Unicode(UCS-2)で0x0000~0xFFFFの文字が表示出来ます。
このうち0x0000~0x007Fと0xFF60~0xFF9Fは半角文字、 他は全角文字と見做しています。 全角文字は12×12ドット、半角文字は6×12ドットで表示しています。
勿論上記コードの範囲でも、 scfont.fonにフォントデータが格納されていない文字は表示出来ません。

半角文字の扱いについて

前項の半角文字のうち、0x0000~0x007Fの範囲はASCII文字、 0xFF60~0xFF9Fはいわゆる半角カナ文字の領域です。
半角文字は対応する全角文字を横方向 1/2 に圧縮して表示しています。

但しASCII文字については、 scfont.fonの0x0000~0x007Fの位置にフォントデータが格納されている場合はそれをそのまま表示しています (6×12ドットで左詰めで格納されているものとしています)。
※この部分は動作未確認です(_o_)

その他の関数

前述のsymbol関数に加え、次の関数も提供しています。

関数名 引数 返り値 機能
box BG8Bit, x0, y0, x1, y1, c 無し グラフィック画面 BGBbit の座標 (x0, y0)~(x1, y1) に、色 c で長方形を描く。長方形の内部は塗り潰される。
utf8chop str 1個 UTF-8文字列 str から最後の1文字を削除したものを返却する。
utf8last str 1個 UTF-8文字列 str の最後の1文字を返却する。
utf8top str 2個 UTF-8文字列 str を先頭文字と残り(2文字目以降)に分割して、返却する。
utf82unicode str 2個 UTF-8文字列 str の先頭文字のUnicode値と2文字目以降の文字列を返却する。
unicode2utf8 u 1個 Unicode値 u に対応するUTF-8の文字を返却する。

余談:本モジュールについて

昔々、8ビットパソコンを使っていた頃、BASICにKANJI文というのがありました。 それは漢字をグラフィック画面に図形として描画するものでした。
DSでも、テキスト画面への表示は無理にせよ、 せめてグラフィック画面に手軽に漢字を表示出来たらいいなと思い、 本モジュールを作りました。

やっている事は単純です。 指定された文字のコードをUTF-8からUCS-2に変換し、 scfont.fon から該当のフォントデータを読み込み、 所定の位置にPlot()で描いているだけです。
インタプリタですので、見ての通り表示は遅いです。(^_^;)

更新履歴

070306版 初版
070414版
  • scfont.fon のオープンに失敗した場合は長方形(豆腐)を表示するようにした
  • 次の関数を追加: box、utf8chop、utf8last、utf8top、utf82unicode、unicode2utf8
070416版 unicode2utf8関数で正しい文字を返却しない場合があるバグを修正
071020版 scfont.fon がルートディレクトリの他 putfont.lua と同じディレクトリに置かれていてもよいようにした