Tatsu still writes something... Fourth season

これからも私はなにかをしてなにかを書く

Windows 8.1のフォントサイズがよくわからない

これ書いてる本日、2015年7月20日Meiryo UIも大っきらい!! Version 2.15をリリースしました。

今回のプログラムの変更点の大半は前の週末に書いていましたが、フォントサイズの扱いを
調べてテストするのに手こずったので本日のリリースとなりました。

何にてこずったかというと、
Win 32 APIでLOGFONT構造体を使ってフォントを設定する際のサイズの指定は
ポイント数からピクセル数に直して指定するのだが、ここでWindows 8/8.1の
ディスプレイダイアログだけ、ポイント数を整数で表す時の扱いが異なると
いうことである。

Windows 7以前のOSやWindows 8/8.1のコモンダイアログではMSDNのLOGFONT構造体の説明
ある計算式で文字の高さから逆算したポイント数の小数点以下が0.5以上の場合、
切り上げている。

これに対し、Windows 8/8.1のディスプレイコントロールパネルでテキストサイズを指定した場合は
10ポイント以下ではポイント数の小数点以下が0.5以上の場合小数点以下を切り上げているが、
10ポイント以上では小数点以下を切り捨てるという動作になっていた。

Windows 8/8.1のMeiryo UIも大っきらい!! Version 2.15では
初期状態でディスプレイダイアログのテキストサイズに合わせるようにしたが、
同じWindows 8/8.1でコモンダイアログとディスプレイコントロールパネルの
フォントサイズの扱いが異なるというのは何とも奇妙なものである。