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