系统字体是一种「点阵字体」,这意味著字元被定义为图素块(在第十七章,将讨论TrueType字体,它是由轮廓定义的)。至於确切的大小,系统字体的字元大小取决於视讯显示器的大小。系统字体设计为至少能在显示器上显示25行80列文字。
字元大小
要用TextOut显示多行文字,就必须确定字体的字元大小,可以根据字元的高度来定位字元的後续行,以及根据字元的宽度来定位字元的後续列。
系统字体的字元高度和平均宽度是多少?这个问题取决於视讯显示器的图素大小。Windows需要的最小显示大小是640×480,但是许多使用者更喜欢800×600或1024×768的显示大小。另外,对於这些较大的显示尺寸,Windows允许使用者选择不同大小的系统字体。
程式可以呼叫GetSystemMetrics函式以取使用者介面上各类视觉元件大小的资讯,呼叫GetTextMetrics取得字体大小。GetTextMetrics传回装置内容中目前选取的字体资讯,因此它需要装置内容代号。Windows将文字大小的不同值复制到在WINGDI.H中定义的TEXTMETRIC型态的结构中。TEXTMETRIC结构有20个栏位,我们只使用前七个:
这些栏位值的单位取决於选定的装置内容映射方式。在内定装置内容下,映射方式是MM_TEXT,因此值的大小是以图素为单位。
要使用GetTextMetrics函式,需要先定义一个结构变数(通常称为tm):
在需要确定文字大小时,先取得装置内容代号,再呼叫GetTextMetrics:
此後,您就可以查看文字尺寸结构中的值,并有可能保存其中的一些以备将来使用。
文字大小:细节
TEXTMET