罫線文字の字幅がフォントによって異なる件
罫線文字の字幅がフォントによって異なるということを最近知った。罫線文字は今ではobsoleteであるとはいえ、これは等幅フォントとしてあるまじきことだろう。罫線文字に限らず、日本語フォントと英語フォントでmonospaceの幅が一致しないという現象はしばしばある。ソースコードをWebページに仕上げるときに、そういう違いに戸惑う。
DOS/Vコードページ932の半角罫線素片をUnicodeに変換するにあたって、フォントによる表示の違いに混乱させられた。
記事トップ画像は本来意図した通りの表示。上のテキストボックスはCP932の半角罫線文字をMS UI Gothicで表示、下はUnicodeのBOX DRAWINGS DOUBLEをMS ゴシックで表示している。
BOX DRAWINGS DOUBLE
MS UI Gothic
CP932の半角罫線文字は一重罫線になっているが崩れてはいない。一方、Unicodeの二重罫線は崩れてしまっている。
MS ゴシック
CP932の半角罫線文字は崩れている。Unicodeの二重罫線は崩れずに正しく表示されている。
BOX DRAWINGS
Windows上でMS ゴシックの表示で罫線文字を使って作表し、それをCP932の半角罫線文字に変換してみる。変換するとき、半角罫線文字は2個分並べて全角として表示されていた時と字幅が変わらないようにしている。
MS ゴシック
スペースの幅は変わらずに罫線文字だけ半角よりも小幅になるので体裁が崩れる。
MS UI Gothic
こちらも正しく表示されない。
Terminal (Shiftjis)
ところがコマンドプロンプトからTYPEコマンドで出力するとちゃんと表示される。これが本来意図していた表示。
欧文フォントでの罫線文字の表示
monospaceなCourier Newで表示してみる。
BOX DRAWINGS DOUBLE
BOX DRAWINGS
MSゴシックでは罫線文字が全角相当になったため体裁が崩れたが、こちらは半角のままなので崩れていない。
欧文フォントでは基本的に罫線文字は半角文字で表される。一方、MSゴシックではBOX DRAWINGSは全角で表され、BOX DRAWINGS DOUBLEは半角で表示される。Glyph(字形)が同じだから全角・半角の区別無く割り当てたかのかもしれないが、さすがにこれはなあ。
等幅フォントをmonospaceとして扱うことがあるのなら、このことを知っておくべき。