IPA 文字列にスペースを挿入しようとしています。たとえばɔ̃wɔ̃tɨ
、ɔ̃ w ɔ̃ t ɨ
. 分割/結合を使用することが私の最初の考えでした:
s = ɔ̃w̃ɔtɨ
s.split('').join(' ') #=> ̃ ɔ w ̃ ɔ p t ɨ
結果を調べて分かったのは、分音記号付きの文字は実際には 2 文字としてエンコードされていることです。いくつかの調査の後、UnicodeUtils モジュールを見つけ、each_grapheme メソッドを使用しました。
UnicodeUtils.each_grapheme(s) {|g| g + ' '} #=> ɔ ̃w ̃ɔ p t ɨ
逆ブレーブマークを除いて、これはうまくいきました。コードは に変わり̑a
ます̑ a
。UnicodeUtils.nfc
正規化 ( 、 )を試みUnicodeUtils.nfd
ましたが、役に立ちませんでした。メソッドがこの特定の分音記号で問題を抱えている理由はわかりませんがeach_grapheme
、gedit では、チルダやアクセントなどとは対照的に、breve も別の文字として扱われていることに気付きました。私の質問は次のとおりです。正規化の簡単な方法があります。つまり、 と のLatin Small Letter A
組み合わせCombining Inverted Breve
をLatin Small Letter A With Inverted Breve
?