最重要的值是tmHeight,它是tmAscent和tmDescent的和。这两个值表示了基准线上下字元的最大纵向高度。「间距」(leading)指印表机在两行文字间插入的空间。在TEXTMETRIC结构中,内部的间距包括在tmAscent中(因此也在tmHeight中),并且它经常是重音符号出现的地方。tmInternalLeading栏位可被设成0,在这种情况下,加重音的字母会稍稍缩短以便容纳重音符号。
TEXTMETRIC结构还包括一个不包含在tmHeight值中的栏位tmExternalLeading。它是字体设计者建议加在横向字元之间的空间大小。在安排文字行之间的空隙时,您可以接受设计者建议的值,也可以拒绝它。在系统字体中tmExternalLeading可以为0,因此我没有在图4-3中显示它。(尽管我不想告诉你们,图4-3确实就是Windows在640×480的显示解析度中使用的系统字体。)
TEXTMETRICS结构包含有描述字元宽度的两个栏位,即tmAveCharWidth(小写字母加权平均宽度)和tmMaxCharWidth(字体中最宽字元的宽度)。对於定宽字体,这两个值是相等的(图4-3中这些值分别为7和14)。
本章的范例程式还需要另一种字元宽度,即大写字母的平均宽度,这可以用tmAveCharWidth乘以150%大致计算出来。
必须认识到,系统字体的大小取决於Windows所执行的视讯显示器的解析度,在某些情况下,取决於使用者选取的系统字体的大小。Windows提供了一个与装置无关的图形介面,但程式写作者还是有事情要处理的。不要想当然耳地猜测字体大小来写作Windows程式,也不要把值定死,您可以使用GetTextMetrics函式取得这一资讯。
格式化文字
Windows启动後,系统字体的大小就不会发生改变,所以在程式执行过程中,程式写作者只需要呼叫一次GetTexM