文字の全角半角チェック
縦書きノベル制作日記の続き。
縦書き表示をするときに必要なのが、半角文字を回転表示させるための全角・半角チェック。いつものように軽くググってみると、半角カナなどの問題によりUnicodeできちんと判別するのは面倒ということで、Shift-JIsコードで文字のバイト数(全角2バイト、半角1バイト)を調べる方法でいくことに。
一応、実装前にテストしておこうということで、サイトで見つけたコードをちょいちょいと拝借して、下記のコードを実行。
string test = "テスト文字列aaa";
char[] chars = test.ToCharArray();
this.GetComponent<Text>().text = test + "\n";
Encoding chk = Encoding.GetEncoding("shift_jis"); //全角半角チェック用
for (int index = 0; index < chars.Length; index++) {
string work = string.Format("'{0}' - {1} byte(s)", chars[index], chk.GetByteCount(chars, index, 1)) + "\n";
this.GetComponent<Text>().text += work;
}
this.GetComponent<Text>().text += "チェック終了";
実行画面(エディタ上)
ふーん、こうなるのかぁ、と思いつつ、何気なくAndroid実機でビルドしてみると、、、、
実行画面(freetel FT142A上)
見ての通り、何故か、
Encoding chk = Encoding.GetEncoding("shift_jis");
以降のテキストが表示されなくなってしまいました。
しばらく、調べたりじたばたしてみましたが、理由はわからず。結局、文字コードで全角・半角を判別しているサンプルを見つけて実装する事になりました。しっかし、やればやるほどわからないことが増えていく、、、がんばろ。