libc的にはwcwidth()を使えばカラム数は取得できる。
もちろんlocale依存だけど。