只有在将字体选择到设备上下文中之后,应用程序才能检索物理字体的字体度量。当将字体选择到设备上下文中时,将为设备进行缩放。设备特有的字体度量称为设备单位。
字体中的便携式指标称为设计单位。要应用于给定的设备,设计单位必须转换为设备单位。使用以下公式将设计单位转换为设备单位。
【DeviceUnits】 = (【DesignUnits】/【unitsPerEm】) * (【PointSize】/72) * 【DeviceResolution】
该公式中的变量具有以下含义。
变量 | 描述 |
【DeviceUnits】 | 指定转换为设备单位的【DesignUnits】字体度量。该值与【DeviceResolution】给出的值的单位相同。 |
【DesignUnits】 | 指定要转换为设备单位的字体度量。该值可以是任何字体度量,包括字符的宽度或整个字体的上升值。 |
【unitsPerEm】 | 指定字体的em方形尺寸。 |
【PointSize】 | 以点为单位指定字体的大小。(一点等于1/72英寸) |
【DeviceResolution】 | 指定每英寸的设备单位数(像素)数。激光打印机的典型值可能为300,VGA屏幕为96。 |
该公式不应用于将设备单元转换回设计单位。设备单位总是四舍五入到最近的像素。传播的四舍五入误差可能变得非常大,特别是当应用程序正在使用屏幕尺寸时。
要请求设计单位,请创建一个高度指定为 - 【unitsPerEm】的逻辑字体。应用程序可以通过调用EnumFontFamilies功能并检查NEWTEXTMETRIC结构的ntmSizeEM成员来检索【unitsPerEm】的值。