スプライトにプロポーショナルフォントを書き込む

文字をスプライトに出力するdll - 永字八法の続き。
時間切れで中途半端なところだけれども、一応アップする。
http://www.eiji8pou.pics/download/font20100906.zip

概要

指定したスプライトに文字列を書き込む。

使い方

必要な物は

  • font.dll
  • utility.lua
  • font.lua
  1. これらを全て同じディレクトリに置く。
  2. system.luaの中に以下を記述する。
NL_dofile("utility.lua")
NL_dofile("font.lua")

以上。

NScripter側に追加される命令

savesprite
スプライトを外部のbmpとして保存する。第一引数には保存したいスプライト番号、第二引数にはファイル名を与える。加工した後のスプライトや、:sや:mタグを使ったスプライトでも一枚のbmpになる。
settext
第一引数に文字列を与えると、その文字列を解析して内部に保存する。保存した文字列を出力したい場合は、次のtext2spriteを使う。
text2sprite
事前にスプライトを作成しておく。第一引数にそのスプライトの番号、第二引数にはセル番号を指定する。settextされた内容を、そのスプライトに禁則処理をしつつ書き込む。

settextの仕様

現時点でいくつかの仕様に対応している。将来的には通常のテキストでできること全てに対応する予定。

ルビ記法
(爆霊地獄/ヴェノン)
途中の色変え
#FF0000
途中サイズ変更
<x>
<h>

この部分は通常の表示文のルールにない追加の仕様なので、今後一切の予告なく変更されるおそれがある。
現時点では、

フォントサイズをタテヨコ2倍にする。
フォントサイズをタテヨコ2分の1にする。

のみ実装されている。

付属のサンプルについて

settextで解析された内容は、繰り返し使用することができる。
今回のサンプルはそれを利用して、書き込まれるスプライトのサイズを変更し、変更の都度文字を禁則処理しながら書き込んでいった場合どうなるかを示している。インターネットブラウザのように、大きさを変えたら文字の配置も変更されるイメージである。

今後の予定

  • 時間を指定して書き込みをコントロールする(通常の動作のように、文字が順番に表示されるようにする)
  • ドロップシャドウ、影の色変更、影の位置変更
  • 袋文字
  • 書き込み位置の変更(現状0,0からのみのため)
  • 途中フォント変更
  • 縦書き
  • 縦中横

先は長いなあ。