漢字をグラフィック画面
(8-Bit
Backgrounds) に表示するモジュールです。
漢字フォントは scfont.fon から読み取ります。
内容:
フォントファイル scfont.fon (scfont などのサイトから入手出来ます) が必要です。
putfont.lua をmicroSDカードの任意のディレクトリに置きます。
microSDカードのルートディレクトリ或いは putfont.lua と同じディレクトリに scfont.fon が置かれている事を確認して下さい。
サンプルプログラム 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版 |
|
070416版 | unicode2utf8関数で正しい文字を返却しない場合があるバグを修正 |
071020版 | scfont.fon がルートディレクトリの他 putfont.lua と同じディレクトリに置かれていてもよいようにした |