miで行われているUnicode正規化について

  • さきほどのエントリの補足。文字列をmiにペーストした際に行われているUnicode正規化がNFCだという点について。
  • 下図右下のウインドウは、miで1行目の「オリジナル:」以降(これを「文字列A」と呼ぶ)をコピーし、2行目の「ペースト後:」以降にペーストしたもの(これを「文字列B」と呼ぶ)。下図左下のウインドウは、文字列の符号位置を比較する機能を持ったUnicodeCheckerというツール。その「Input」欄に文字列Aを、「Cpmpare with」欄に文字列Bをコピー&ペーストして符号位置を比較した。


  • 一度miでペーストされた文字列(文字列B)では、たとえば「グレーブアクセント付きa」を表現する結合文字列(U+0061 U+0300)が、合成済み文字(U+00E0)に置き換わっていることがわかる。NFDやNFKDは分解方向への正規化なので、結合文字列が合成済み文字に置き換わることはない。またNFKCなら、上図のような置換に加え、全角英数字、半角片仮名、丸付き数字も、より汎用的な文字に置き換わることとなる。