设备与设计单位
只有在将字体选入设备上下文后,应用程序才能检索物理字体的字体指标。 将字体选入设备上下文时,会针对设备缩放字体。 特定于设备的字体指标称为设备单位。
字体中的可移植指标称为设计单位。 若要应用于指定设备,必须将设计单位转换为设备单位。 使用以下公式将设计单位转换为设备单位。
DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution
此公式中的变量具有以下含义。
变量 | 说明 |
---|---|
DeviceUnits | 指定转换为设备单位 的 DesignUnits 字体指标。 此值的单位与为 DeviceResolution 指定的值相同。 |
DesignUnits | 指定要转换为设备单位的字体指标。 此值可以是任何字体指标,包括字符的宽度或整个字体的升序值。 |
unitsPerEm | 指定字体的 em 平方大小。 |
PointSize | 指定字体的大小(以磅为单位)。 (1 磅等于 1/72 英寸。) |
DeviceResolution | 指定每英寸的设备单位数 (像素) 。 对于激光打印机,典型值可能是 300,对于 VGA 屏幕,其典型值可能是 96。 |
不应使用此公式将设备单位转换回设计单位。 设备单位始终舍入到最接近的像素。 传播的舍入误差可能会变得非常大,尤其是在应用程序使用屏幕大小时。
若要请求设计单位,请创建高度指定为 unitsPerEm 的逻辑字体。 应用程序可以通过调用 EnumFontFamilies 函数并检查 NEWTEXTMETRIC 结构的 ntmSizeEM 成员来检索 unitsPerEm 的值。