nyagos と文字の幅問題

文字の幅については nyagos において頭が痛い問題です。

mattn/go-runewidth でカーソルを戻す時に発行するバックスペースの個数を算出しています。ですが、Windows のコンソールでの実際の文字幅は Unicode の規格のものと微妙に違うので、文字によってはカーソル位置が狂ってしまうという問題が発生します。

以前は文字が出力する度にカーソル位置を計測して文字幅を記録するような対応をしていたのですが、速度的に不利であるので、現在は無効にしています。(仮想マシン内ではコンソールがすごく遅くなる時があるので、速度を下げる要因を少しでも減らしたかったんですね。これをやると出力のバッファリングもやりにくくなるので)

また、Linux 対応に伴って、せっかく入力は mattn/go-tty 、出力は mattn/go-colorable と I/O を外出しているわけですので、あまり直接コンソールを触るのははばかられるというのもありました。 (まぁ、場合分けすればいいだけの話なのですが)

ということで、理想的な解決案不在のまま、文字幅問題はずっと先送りしているという状況です。Windowsのコンソールでの文字幅の決定ルールが明確に分かれば、問題は綺麗に片付くのですがね…マイクロソフトの人、教えてくれないかなぁ…