のらぬこの日常を描く

ノージャンルのお役立ち情報やアニメとゲームの話、ソフトウェア開発に関する話などを中心としたブログです。

tmuxだと全角記号系文字は半角扱いになるんですかね・・?

utf-8文字コードで、表示文字幅(全角or半角)が未定義な件、なんとか解決策を見出してくれないだろうか・・・

日本向けに作られた文書に限るなら、utf-8sjisに変換して、変換結果ば2バイト文字だったら全角文字(罫線を除く?)とみなせば問題なさそうですが。

このあたりの標準仕様がそもそもあるのか、ざっと調べてみたがよくわからなかった。

さて、tmuxでは、日本でいう全角記号は大体半角文字として扱われている様子*1

プログラムが半角文字として想定している文字を、仮想端末アプリケーションが全角文字として表示した場合、表示位置がずれる等のバグとして問題が表面化する。

もっとも、Puttyで接続する場合に限って言えば、設定画面の文字コードを設定する箇所で、UTF-8(Non-CJK)を選択すれば、少なくとも表示位置がずれる等の問題は回避できる。

f:id:mikenekoDX:20100227152233p:image

ただし、この設定は、問題となる全角記号(→、■、△、☆、Ⅷ、等)を無理やり半角に潰して表示するだけなのものなので、とにかく見た目カッコ悪い。

また、大抵の日本製テキストドキュメントは、全角記号は2バイト前提でレイアウトされているため、これらの見た目もずれてしまう。

f:id:mikenekoDX:20100227152232p:image

そんなわけで、tmuxをutf8(cjk(ちゃいな・じゃばん・こーりゃん))の表示幅に対応させ、utf8の表示モード(cjk/non-cjk)をコマンドラインオプション等で切り替えられるようにするパッチ*2をちょっと書いてみようと思う。

これくらいは、本家でもいずれやると思うがw

*1:ある文字が表示上半角として扱うのか全角として扱うのかは、utf-8.c でハードコーディングされている

*2:ちゃいな&こーりゃんのことは考えないと思うが