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明朝等を指定しておく必要があることに注意してください。