asatakuの日記: どんどんkonsole
大体現象が把握できました。
文字のピッチがあってないっていうのはフォントの問題ですね。
どうやら、そのあたりは私が確認している現象とは違うようです。
正確に言うと、私はfixedフォント以外での動作は確認していません。
konsoleの内部ではフォントのサイズはfixedだと仮定してコードが書かれています、実は。
これはオリジナルからそうです。
(オリジナルは実はもっと悲惨で、全ての文字のフォントサイズは等しいと仮定しています。
漢字も英字も数字もお構いなしです)
そして、表示時には速度を稼ぐために、同じ属性の文字は文字列列にまとめて、
Qtの関数で一気に描画します。そのため、フォントのサイズが違う場合には
描いたつもりのピクセル数と、実際に描いたピクセル数が違う事があり、
カーソルなどの反転表示などで属性が違うところでは
文字数から位置を計算し直すために、本来ならあるはずのない空間が空いてしまいます。
で、もっと悲惨な事に、文字の消去はスペースで行なっているために、
スペースの幅が小さい場合には文字を十分に消去できない事があります。
原因としてはこれでしょう。
現状ではfixedフォントにはきちんとfixedなフォントを指定しておく事をお勧めします。
本来なら、フォントのサイズが違っても描画するときに一文字ずつ描く、
もしくは、ピッチがずれていてもそれなりに表示するという手をとるべきなのでしょうが、
ただでさえ遅いkonsole、さらに遅くなる事が考えられます。
けど、後者の対処法なら、行なう価値はあるのかな。
前者は処理として重過ぎになるはず。
後者のやつは日本語パッチで近い事をやっていた時期もあるし。
ちなみにkonsoleの内部構造については富山でのセミナーの資料が若干参考になるかも。