East_Asian_Width

文字幅の概算計算する方法がないのか調べてみました。もちろん実際の表示幅はフォントによって変わってくるのですが、コンソールなどで日本語文書を表示するときは暗黙のうちにASCIIは半角、日本語は全角といった慣習があるので、その慣習がライブラリとして実装されていないかということです。
調べてみたところ東アジア全般でそのような慣習があったらしく、Unicodeでは各文字にEast_Asian_Widthというプロパティが定義されているようです。これで簡単に解決かというといくつか問題があるようで、文字分類の中には「特性値 A (曖昧)」というものがあるらしくコンテキストによって全角なのか半角なのかが変わるようです。プログラミング的にはおそらくロケールによって変えることになるのでしょう。
あとこのEast_Asian_WidthはJDK標準にはなっていないようです。IBMのICU4Jではあるそうですが、このためだけにICUというものちょっと。JDKに入ったら使ってみたいと思います。