フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんばんは。今日はやりかけだった不死女を久しぶりに進め、ようとしました。

私のゲームでの文字列は、その場で生成したビットマップフォントをテクスチャに書き込んで表示しています。ところが、このとき単純に一文字単位で書き込んでいるため、例えば行頭に「、」や「。」が来てしまってもそのままなのです。また英単語が行を跨ぐ場合もそのまま泣き別れになってしまいます。

これを修正するにはどうすればよいか。一つには、私が禁則処理を全部プログラムすることです。ダケドネェ!禁則処理問題はァ…グズッ句読点のみならずぅう!!括弧とか…日本語全体の問題やないですかぁ!文字通り命がけでプログラムするのも気が遠くなるんですわっ!

ところが、このFC2ブログもそうであるように、現在のほとんどのテキストは適切な禁則処理がなされています。これは、Windows APIのようにすでに出来上がった禁則処理プログラムがあり、それらを使っているからです。であれば!うちもAPIを利用すれば簡単に禁則処理を実現できる。そう考えていた時期が、私にもありました…。

Windows APIでテクスチャと同じサイズのビットマップを作り、DrawTextし、そっくりコピーする。確かに描画はできました。前作「記憶」ならこれでも十分でした(というか、記憶はC#で書いてたので元々この方式でした)。しかし今回は文字入力をするところがあり、そこでキャレット(「I」みたいなアレ)を表示する必要があります。そのためにはそれぞれの文字の位置情報が必要です。

…一文字ずつ自分で処理していれば副産物として取得できますが、そこを丸々DrawTextに投げているので解りません。

一応それぞれの文字幅を足していけば多分ほぼ同じ値が得られると思いますが、なんとなく嫌でした。DrawTextが結局どの位置に出力したかという情報を同時に返してくれればいいんですがね。取り敢えず今までの整形なしのバージョンに戻して、これについてはまた後で余裕があったら改良しようと思います。本編をほんとにそろそろ作らないといけないので(汗)
関連記事

[2014/08/13 00:45] | 不死女 -Immortal girl-
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。