CSV/TSVモードとunicodeとXの値No.08090
K'zawa さん 13/10/17 16:23
 
こんにちは、K'zawaです。

CSV/TSVモードで、unicode文字を含む行のとき、
行末のxの値がlinelenを超えていることがあるのですが、よいのでしょうか?

秀丸エディタ Version 8.32 & 8.33 Beta 7


// サンプルマクロ
newfile;
setencode 6 | 0xC0, 1, 1;
insert unichar(0x24B6) + "1234";
config "xTabMode:0";  // 通常モード
message "linelen = " + str(linelen) + "\tx = " + str(x);
config "xTabMode:1";  // TSVモード
message "linelen = " + str(linelen) + "\tx = " + str(x);

[ ]
RE:08090 CSV/TSVモードとunicodeとXの値No.08091
秀丸担当 さん 13/10/17 16:53
 

バグ情報ありがとうございます。

確かにそうなっていることが確認できました。
CSV/TSVモードに限らず、プロポーショナルフォントを選んでいるときも同様で
した。
x,yの座標系とlinelenの座標系は一致しているべきだと思います。
変更すると互換性の心配があるので慎重に考えたいところです。
内部的にUnicode文字は4として数えられているのですが、Unicode文字を1または
2として数えるように換算すると、他にも影響があるところが多くありそうです。

どちらかというとlinelenのほうをxの数え方に合わせるほうが安全です。
そういう方向で検討してみます。
x,yの座標系はもともと固定ピッチでマス目状になっていることが想定されてい
るもので、プロポーショナルフォントの場合はそれがもともと崩れているので、
4として数えてもおそらく問題にはなりにくいと思います。

とりあえずcolumn,linenoとmovetolineno/moveto2の場合はずれていないので、
現状ではそれでなんとかする方法もありそうです。

[ ]
RE:08091 CSV/TSVモードとunicodeとXの値No.08092
K'zawa さん 13/10/17 19:28
 
秀丸担当さん、こんにちは。
K'zawaです。

>x,yの座標系とlinelenの座標系は一致しているべきだと思います。
<略>
>どちらかというとlinelenのほうをxの数え方に合わせるほうが安全です。
>そういう方向で検討してみます。

はい、gettextの第3パラメータに使えるようにしていただきたいです。
よろしくお願いします。

[ ]