我正在尝试在 IPA 字符字符串中插入空格,例如ɔ̃wɔ̃tɨ
变成ɔ̃ w ɔ̃ t ɨ
. 使用 split/join 是我的第一个想法:
s = ɔ̃w̃ɔtɨ
s.split('').join(' ') #=> ̃ ɔ w ̃ ɔ p t ɨ
正如我通过检查结果发现的那样,带有变音符号的字母实际上被编码为两个字符。经过一番研究,我找到了 UnicodeUtils 模块,并使用了 each_grapheme 方法:
UnicodeUtils.each_grapheme(s) {|g| g + ' '} #=> ɔ ̃w ̃ɔ p t ɨ
这工作得很好,除了倒置的短标记。代码更改̑a
为̑ a
. 我尝试了标准化(UnicodeUtils.nfc
, UnicodeUtils.nfd
),但无济于事。我不知道为什么该each_grapheme
方法对这个特殊的变音符号有问题,但我注意到在 gedit 中,短号也被视为一个单独的字符,而不是波浪号、重音符号等。所以我的问题如下:是有一种直接的归一化方法,即将Latin Small Letter A
和的组合Combining Inverted Breve
变成Latin Small Letter A With Inverted Breve
?