CJK拡張文字の置き換えNo.05928
santoku さん 10/08/17 17:51
 
Windows XP, 秀丸 8.01a

補助漢字(CJK統合漢字拡張B/C)の文字に対して、下記のマクロを実行します。
結果、文字が失われます。
再現しますか?

    20000..2A6DF; CJK Unified Ideographs Extension B
    2A700..2B73F; CJK Unified Ideographs Extension C

// 再現マクロ
newfile;
// MSゴシックには字形がない
config "f(メイリオ)"; //config "f(IPAゴシック)";
insert unichar(0x2000B) + unichar(0x20213) + unichar(0x2032B);
message "文字確認";
replaceall ".", "\\0\n", casesense, regular, nohilight;
endmacro;

[ ]
RE:05928 CJK拡張文字の置き換えNo.05936
秀丸担当 さん 10/08/18 12:26
 

>補助漢字(CJK統合漢字拡張B/C)の文字に対して、下記のマクロを実行します。
>結果、文字が失われます。
>再現しますか?

マクロの通りにして再現させることができました。
これらの文字はサロゲートペアという2文字ぶんで1文字を表しているのですが、
その1文字目だけをタグの範囲をして抽出して置換するため、そうなってしまう
ようです。

秀丸エディタ本体としては、とりあえずタグの範囲を抽出するときに半分になら
ないように調整して抽出するように修正させていただきます。
しかし本体の対策だけでは、"(.)(.)"を"\1\2"に置換すると文字が二重になって
しまうという問題がでてきます。

HmJre.dllのほうでも"."でサロゲートペアを認識して2文字を1文字扱いにする
としたら対策できると思います。

一方で、HmJre.dllでは"[\uD800-\uDBFF]."で拡張文字だけを検索できるという
方法を紹介したことがあって、"."でサロゲートペアを認識してしまうとこれが
通用するかどうかがあやふやになりそうです。
こういった問題をクリアする必要があると思うので、慎重に検討したいと思いま
す。

[ ]