Shift-JISで、Unicodeの制御コードが入っNo.07966
h-tom さん 13/06/12 23:28
 

h-tom です。

秀丸エディタ Ver.8.31β1(32bit)

エンコードがShift-JISの場合に、制御コードのU+0092(PU2)がはいっていると、
変な動きになります。

//再現用マクロ
newfile;
gofiletop;
insert "can";
insert unichar(0x92);
insert "t";
insertreturn;
insert "xxxx";
gofiletop;
golineend2;
message "tの後ろになぜか空白が入っている。\n"
        +"行末の改行を削除すると、カーソル位置がおかしい。";
delete;
endmacro;
//ここまで

エンコードが、Shift-JISだと、U+0092が表示されません。
その為、表示がずれてしまっているようです。
エンコードを、unicode系にすれば、問題はないです。
(U+0092が空白として表示される。)

[ ]
RE:07966 Shift-JISで、Unicodeの制御コーNo.07969
秀まるお さん 13/06/13 14:28
 
 秀丸担当が調べた所、3Dグラフィックスアクセラレータを使った文字描画の方
のバグらしいということが分かり、僕の方で調べました。

 そしたら、すみませんが僕の作った処理の方のバグでした。大変失礼しました。

 U+0092の文字を描画する時に、フォントによって、これの「グリフ」というの
が存在しないことになって、それで内部的に想定してない事態が起きて、固定ピ
ッチフォントだけども文字幅0になって、それで「can」と「t」がくっついた描
画になってしまってました。

 エンコードをUnicode系にすれば直るのは、フォントの種類のせいだと思いま
す。(Terminal / FixedSysだとダメで、MSゴシック等では起きない。プロポー
ショナルフォントだとそもそも大丈夫)

 さっそくHmDWrite.dllを修正させていただきまして、次の秀丸エディタβ版に
添付させていただきます。

[ ]
RE:07969 Shift-JISで、Unicodeの制御コーNo.07972
h-tom さん 13/06/13 20:57
 

h-tom です。

> 秀丸担当が調べた所、3Dグラフィックスアクセラレータを使った文字描画の方
>のバグらしいということが分かり、僕の方で調べました。
<省 略>
> エンコードをUnicode系にすれば直るのは、フォントの種類のせいだと思いま
>す。(Terminal / FixedSysだとダメで、MSゴシック等では起きない。プロポー
>ショナルフォントだとそもそも大丈夫)
こちらので使っているフォントを、連絡し忘れました。FixedSys でした。

> さっそくHmDWrite.dllを修正させていただきまして、次の秀丸エディタβ版に
>添付させていただきます。
β2で、問題ありません。

[ ]