Hatena::ブログ(Diary)

kenichis::TechNotes

2010-06-25

Flash Player 10.1でFlex Sparkの日本語インライン入力とサロゲートペア

Flash Player 10.1からIIMEClientインタフェースが実装されたのか、Spark系のテキスト入力部品で日本語のインライン入力が可能になりました。

Spark系のテキスト入力部品は、mx系では出来なかったサロゲートペア文字の入力が可能になっています。

Flex/Flash文字列は、AVMの内部ではUTF-16で扱われるので、Javaと同様サロゲートペアの問題を抱えます。つまり、Stringがサロゲートペアに対応していません。

Flex/Flashサロゲートペア文字を検出するには、flashx.textLayout.utils.CharacterUtilを使います。

こんな感じでしょうか。

public function hasSurrogatePair(value:String):Boolean
{
	for(var i:int=0; i<value.length-1; i++) {
		if(	CharacterUtil.isHighSurrogate(value.charCodeAt(i)) &&
			CharacterUtil.isLowSurrogate(value.charCodeAt(i+1)))
		{
			return true;
		}
	}
	return false;
}

Spark系のテキスト入力部品は、デフォルトではよく分からないフォントになっているので、サロゲートペアを表示できるメイリオJIS2004対応MSゴシックMS明朝等を指定しておく必要があることに注意してください。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kenichis/20100625/1277475909