字符串宽度和高度
除了检索单个字符的字符宽度数据外,应用程序还需要计算整个字符串的宽度和高度。 两个函数检索字符串宽度和高度度量: GetTextExtentPoint32 和 GetTabbedTextExtent。 如果字符串不包含制表符,应用程序可以使用 GetTextExtentPoint32 函数检索指定字符串的宽度和高度。 如果字符串包含制表符,则应用程序应调用 GetTabbedTextExtent 函数。
应用程序可以使用 GetTextExtentExPoint 函数执行换行操作。 此函数返回指定字符串中适合指定空格的字符数。
字体升序和降序
某些应用程序使用字体的最大升序符和降序符确定不同大小文本行之间的行距。 应用程序可以通过调用 GetTextMetrics 函数,然后检查 TEXTMETRIC 的 tmAscent 和 tmDescent 成员来检索这些值。
最大上升和下降不同于版式上升和下降。 在 TrueType 和 OpenType 字体中,版式上升和下降通常是字形的顶部和字形的底部。 应用程序可以通过调用 GetOutlineTextMetrics 函数并检查 OUTLINETEXTMETRIC 结构的 otmMacAscent 和 otmMacDescent 成员中的值,检索 TrueType 或 OpenType 字体的版式升序和降序。
下图显示了 NEWTEXTMETRIC 和 OUTLINETEXTMETRIC 结构中返回的垂直文本指标值之间的差异。 (以 otm 开头的名称是 OUTLINETEXTMETRIC 结构的成员。)
字体尺寸
应用程序可以通过调用 GetOutlineTextMetrics 函数来检索 TrueType 或 OpenType 字体的物理尺寸。 应用程序可以通过调用 GetTextMetrics 函数来检索任何其他字体的物理尺寸。 若要确定输出设备的尺寸,应用程序可以调用 GetDeviceCaps 函数。 GetDeviceCaps 返回物理维度和逻辑维度。
逻辑英寸是系统用来在屏幕上显示清晰字体的度量值,比物理英寸大大约 30% 到 40%。 使用逻辑英寸会排除屏幕和打印机输出之间的完全匹配。 开发人员应注意,屏幕上的文本不仅仅是将显示在页面上的文本的缩放版本,尤其是在图形合并到文本中时。