除了检索单个字符的字符宽度数据之外,应用程序还需要计算整个字符串的宽度和高度。两个函数检索字符串宽度和高度测量值:GetTextExtentPoint32和GetTabbedTextExtent.如果字符串不包含制表符,应用程序可以使用GetTextExtentPoint32函数来检索指定字符串的宽度和高度。如果该字符串包含制表符,则应用程序应调用GetTabbedTextExtent函数。
Windows还支持一种特殊功能,称为GetTextExtentExPoint,应用程序可用于文字包装操作。此函数返回适合给定空间的指定字符串中的字符数。
字体Ascender和Descenders
一些应用程序通过使用字体的最大上升和下降来确定不同大小的文本行之间的行间距。应用程序可以通过调用GetTextMetrics函数并检查TEXTMETRIC的tmAscentca和tmDescent成员来检索这些值。
最大上升和下降与印刷上升和下降不同。在TrueType字体中,印刷上升和下降通常是“f”字形的顶部,“g”字形的底部。应用程序可以通过调用GetOutlineTextMetrics函数并检查OUTLINETEXTMETRIC结构的otmMacAscent和otmMacDescent成员中的值来检索TrueType字体的排版上升和下降。请注意,TrueType字体指标与Windows栅格字体的指标完全不一致,因为TrueType字体指标是由Apple Computer Inc.公司设计的以便在各种显示和输出设备之间保持一致。
下图显示了NEWTEXTMETRIC和OUTLINETEXTMETRIC结构中返回的垂直文本度量值之间的差异。(以【OTM】开头的名称是OUTLINETEXTMETRIC结构的成员。)
字体尺寸
应用程序可以通过调用GetOutlineTextMetrics函数来检索TrueType字体的物理尺寸。应用程序可以通过调用GetTextMetrics函数来检索任何其他字体的物理尺寸。要确定输出设备的尺寸,应用程序可以调用GetDeviceCaps功能。GetDeviceCaps返回物理和逻辑维。
一个逻辑的英寸是Windows用来在屏幕上显示清晰字体的尺寸,比物理英寸大约多30到40%。使用逻辑英寸排除屏幕输出和打印机之间的精确匹配。开发人员应该注意到,屏幕上的文本不仅仅是将出现在页面上的文本的缩放版本,特别是如果图形被并入到文本中。