|
いろいろご指摘ありがとうございます。
U+200Dでつながった絵文字は、一応現状でも一部対応がありました。
[その他]→[動作環境]→[編集]→[高度な編集2]の「結合文字を1つの文字として扱
う」と、
[その他]→[動作環境]→[表示/操作]→[文字の描画]の「3Dグラフィックスアクセラ
レータによる文字の描画」と「カラー絵文字」もONにする必要があります。
例えば、
1F468 200D 1F469 200D 1F467 200D 1F466
は4人が1つになった文字になります。
順番が違ったり、肌の色の文字が組み合わさったりすると、ご指摘の通りうまくいき
ませんでした。
ICUなどの情報もありがとうございます。
もしICUでやるとしたら、Windowsの対応も新しめのようなので、秀丸エディタは従来
の動作もできるハイブリッドか段階的かになるので、全面的にICUにするのは簡単で
はなさそうでした。
秀丸エディタの現状では、カラー絵文字の組み合わせの対応は独自判断をしていてい
たりします。
とりあえずわかっている範囲のことだけでもできたらと思います。
全ての組み合わせがリストアップされたようなものをもしご存知でしたら教えてもら
えると助かります。(たぶん組み合わせがすごい数なのでリストアップは現実的では
ないかもしれませんが)
文字数計算は、書記素クラスター単位のような数え方は確かに対応していませんでし
た。
やってみないとわからないこともありますが、カラー絵文字が結合しているときの
カーソル移動と同じようにできればいいと思います。
Unicodeの文字コードの入力は、「制御コード入力...」コマンドを拡張してやるとい
うネタもあったので、今後やろうかと思います。
現状でよく使う場合は、マクロでもできるので、マクロにしておくといいです。
マクロの例:
$a=input("Unicode16進数入力","U+1F468");
if(leftstr($a,2)=="U+"){
$a=rightstr($a,strlen($a)-2);
}
insert unichar(val("0x"+$a));
endmacro;
grepの場合で、マクロを使わずgrepダイアログのままでやるとしたら、正規表現をON
にして、HmJreであれば「[\U00003042]」といったように書くとできます。
参考までの情報として、マクロでも他に各種の書き方があります。
setcompatiblemode 0x20000;
insert "\u3042"; //文字列16進数4桁
insert "\U00003042"; //文字列16進数8桁
insert unichar(0x3042); //数値
insert unichar(val("0x3042")); //16進数文字列を数値に変換
searchdown "\u3042";//マクロの文字列として検索
searchdown "\U00003042";//マクロの文字列として検索
searchdown "[\\u3042]",regular;//正規表現16進数4桁として検索
//または @"[\u3042]",regular;
searchdown "[\\U00003042]",regular;//正規表現16進数8桁として検索
//または @"[\U00003042]",regular;
endmacro;
マクロでサロゲートペアを1個とするような数え方や、書記素クラスター単位の数え
方も確かに無いです。
現状では、サロゲートペアは、一文字目のコードが0xD800から0xDBFFで二文字目が0x
DC00から0xDFFFであるとか、そういった面倒なことをする必要があると思います。
書記素クラスター単位であれば、現状のカラー絵文字で一部対応できている範囲にお
いては、実際にエディタ上に挿入するなどをしてright;で一文字分とかで数えるとか
になってしまうと思います。
もっと簡便にできたらいいと思います。
複雑なこともあってすぐに対応しますと言い切れないところもありますが、いろいろ
検討したいと思います。
|
|