Javaでの文字数カウント(サロゲートペア)に関する実験2

正規化できないアイヌ語表記用文字の扱いに関して
前回の記事で、サロゲートペアが含まれていた時の文字数カウントについて書いた。
Javaでの文字数カウント(サロゲートペア)に関する実験1
その中で対処方法の一つとして、合成文字(「か」+「゛」(濁点)のような)が含まれていた場合に、java.text.Normalizerを使って正規化する方法を紹介した。合成文字を単一の符号位置の文字に変換してしまうやり方である。

しかし、この方法だとまだ穴があった。
「か」+「゜」(丸) のようなアイヌ語表記用の片仮名や鼻濁音表記用の平仮名・片仮名が来た場合である。

これらのアイヌ語表記用の文字(25文字)はUnicode上に単一の符号位置が与えられていない。そのため正規化しようとしても当然できないということになる。

これらの文字が含まれることを考慮し、厳密に文字数をカウントしたい場合は、正規化ではなくjava.text.BreakIteratorを使う方法が確実だと言える。

いやしかし、文字数のカウントだけでこんなに色々書くことになるとは思わなかった・・・。それだけ文字コードというものが複雑なものだということかもしれない。
参考図書