1 件の投稿を表示中 (合計 2 個)
  • 作成者
    投稿
  • #24273
    redakt55
    参加者

    基本多言語面(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 になります。

    #24278
    Yutaka Emura
    キーマスター

    redakt55 様

    いつもお世話になっております。江村です。

    Onigmo については、こちらでは修正しました。次のバージョンが公開されたらお試しください。

    Boost.Regex については、もう少し調べさせてください。

    よろしくお願い申し上げます。

1 件の投稿を表示中 (合計 2 個)
  • このトピックに返信するにはログインしてください。