10点字体读起来很舒服。小於10点的字体不益於长时间阅读。
Windows系统字体-不考虑是大字体还是小字体,也不考虑所选择的视频图素大小-固定假设为10点字体和12点行距。这听起来很奇怪,如果字体都是10点,为什么还把它们称为大字体和小字体呢?
解答是: 当您在「控制台」的「显示」程式上选择小字体或大字体时,实际上是选择了一个假定的视讯显示解析度,单位是每英寸的点数 。当选择小字体时,即要Windows假定视讯显示解析度为每英寸96点。当选择大字体时,即要Windows假定视讯显示解析度为每英寸120点。
再看看图5-2。那是小字体,它依据的显示解析度为每英寸96点。我说过它是10点字体。10点即是10/72英寸,如果乘以96点,每英寸大概就为13图素。这即是tmHeight减去tmInternalLeading的值。行距是12点,或12/72英寸,它乘以96点,每英寸就为16图素。这即是tmHeight的值。
图5-3显示大字体。这是依据每英寸120点的解析度。同样,它是10点字体,10/72乘以120点,每英寸等於16图素,即是tmHeight减tmInternalLeading的值。12点行距等於20图素,即是tmHeight的值。(像第四章一样,再次强调所显示的是实际的度量大小,因此您可以理解它工作的方式。不要在您的程式中对此写作程式。)
在Windows程式中,您可以使用GetDeviceCaps函式取得使用者在「控制台」的「显示器」程式中选择的以每英寸的点数为单位的假定解析度。要得到这些值(如果视讯显示器不具有正方形图素,在理论上这些值是不同的),可以使用索引LOGPIXELSX和LOGPIXELSY。LOGPIXELS指逻辑图素,它的基本意思是「以每英寸的图素数为单位的非实际解析度」。
用HORZSIZE和VERTSIZE索引从GetDeviceCaps得到