ビットマップフォントで遊ぶ:未定義文字をトウフで埋める
前回の記事フォントに絵文字を入れ込むの続きです。
<続きクエー
複数の文字として1つの画像をまとめてフォントに登録する
自分の作ったUtilクラスに、サブタイトルのような機能を持たせませした。先に結果とコードを載せます。
英数字フォントで未定義である平仮名・カタカナコード部分に、俗に言う"とうふ画像"を登録して埋めています。
// トウフビットマップ文字の作成
var tofuChar:BitmapChar =
BitmapFontUtil.createBitmapCharByTexture(
0 , // charcodeはなんでもいい
_assetManager.getTexture("tofu"), 0, 4, 12);
// tofuCharを範囲指定で登録
BitmapFontUtil.fillBitmapChars(
tofuChar,
eijiFont, // 対象フォント
CharCodeUtil.getIdListByCodeRange(0x3000, 0x30ff), //ひらがなとカタカナの範囲
true, // 上書きしない設定
true // BitmapCharを使いまわす設定
);
// 画面に表示(_doHelperはデモ用に画面表示を楽に行うためのインスタンス)
_doHelper.locateDobj(
_doHelper.createSpriteText(
"ABCあいうえあ〜ワヲンDEF", eijiFont.name, 200),
50, 40);
BitmapFontUtil.fillBitmapCharsという部分がキモの命令です。フルコードはこちらに(前回の記事のデモも含む。)
https://github.com/harayoki/-qiita1/blob/replaceBitmapCharByTexture/src/StarlingMain.as
トウフ画像とパック済みフォント画像は1つのアトラス画像にパックされています。(前回の記事参照)カナフォント画像やカラーバー画像もアトラス画像に含まれていますが、今回のデモでは使われていません。
注意
fillBitmapCharsの第五引数、"BitmapCharを使いまわす設定"というのだけ、注意が必要です。BitmapCharインスタンスをフォントに登録する際、本来は1文字1文字別のBitmapCharインスタンスを使わなくてはいけない(BitmapCharは登録されるidのプロパティをもっている)のですが、今回のような目的では無駄にメモリを浪費してしまうので、デフォルトでは1つのインスタンスでまかなう処理になっています。今の所誤動作はしていませんが、利用される方がおり、何か問題が出た場合はここをfalse指定にしてください。
まとめ
今回の記事のやりかたで、Starlingのテキストフィールドが、未定義文字があってもエラーtraceを書き出すだけでそのまま文字を表示しないでスルーしてしまうのを、目視でトウフ確認できる状態に変更できるので、そのような際に役に立つかもしれません。。まあ、そもそもTextField側のコードを直したい感じではありますね。
Author And Source
この問題について(ビットマップフォントで遊ぶ:未定義文字をトウフで埋める), 我々は、より多くの情報をここで見つけました https://qiita.com/harayoki/items/f52217f0401bf4ba9a37著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .