- 作成者投稿
- 2017年11月15日 10:07 am #24273
redakt55
Participant基本多言語面(BMP: Basic Multilingual Plane)外の文字(U+10000~)の検索に関して,Boost.Regex と Onigmo それぞれおかしな点を発見しました。
◎Boost.Regex
基本多言語面外の文字が 1 文字と扱われません。再現手順:
[1] 「𩸽がうまい」と打つ。𩸽(ほっけ)は U+29E3D で基本多言語面外。
[2] 検索パターンを(.)とする
[3] 置換文字列を<\1>とする
[4] 全置換正しくは
<𩸽><が><う><ま><い>となるはずだが,<�><�><が><う><ま><い>となる。
Onigmo は正しく置換します。◎Onigmo
検索で基本多言語面外の文字が見出されたあとの「次を検索」の動作がおかしい。再現手順
[1] 「𩸽がうまい」と打つ。
[2] 検索パターンを.とする
[3] 検索する
→この時点で,正しく「𩸽」が選択状態になります。この状態で何か文字を打つと,正しく「𩸽」がその文字に替わります。ここまでは正常。
[4] この状態で Shift+F3 などにより「次を検索」する
すると,「𩸽」の文字のところが,あたかも二つのスペースのように表示され,その二つめのほうが選択状態になります。(「𩸽」という文字は見えなくなります)。
low surrogate が選択状態になったような感じですね。
この状態で例えば「a」と打つと,「𩸽」だったところが U+D867+aになります。2017年11月17日 11:22 am #24278Yutaka Emura
Keymasterredakt55 様
いつもお世話になっております。江村です。
Onigmo については、こちらでは修正しました。次のバージョンが公開されたらお試しください。
Boost.Regex については、もう少し調べさせてください。
よろしくお願い申し上げます。
- 作成者投稿
- このトピックに返信するにはログインしてください。