Unidades de dispositivo frente a unidades de diseño
Una aplicación puede recuperar las métricas de fuente de una fuente física solo después de seleccionar la fuente en un contexto de dispositivo. Cuando se selecciona una fuente en un contexto de dispositivo, se escala para el dispositivo. Las métricas de fuente específicas del dispositivo se conocen como unidades de dispositivo.
Las métricas portátiles en fuentes se conocen como unidades de diseño. Para aplicar a un dispositivo especificado, las unidades de diseño deben convertirse en unidades de dispositivo. Use la fórmula siguiente para convertir unidades de diseño en unidades de dispositivo.
DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution
Las variables de esta fórmula tienen los significados siguientes.
Variable | Descripción |
---|---|
DeviceUnits | Especifica la métrica de fuente DesignUnits convertida en unidades de dispositivo. Este valor se encuentra en las mismas unidades que el valor especificado para DeviceResolution. |
DesignUnits | Especifica la métrica de fuente que se va a convertir en unidades de dispositivo. Este valor puede ser cualquier métrica de fuente, incluido el ancho de un carácter o el valor ascendente de una fuente completa. |
unitsPerEm | Especifica el tamaño em cuadrado de la fuente. |
PointSize | Especifica el tamaño de la fuente, en puntos. (Un punto es igual a 1/72 de pulgada). |
DeviceResolution | Especifica el número de unidades de dispositivo (píxeles) por pulgada. Los valores típicos pueden ser 300 para una impresora láser o 96 para una pantalla VGA. |
Esta fórmula no se debe usar para volver a convertir unidades de dispositivo en unidades de diseño. Las unidades de dispositivo siempre se redondean al píxel más cercano. El error de redondeo propagado puede llegar a ser muy grande, especialmente cuando una aplicación está trabajando con tamaños de pantalla.
Para solicitar unidades de diseño, cree una fuente lógica cuyo alto se especifique como unitsPerEm. Las aplicaciones pueden recuperar el valor de unitsPerEm llamando a la función EnumFontFamilies y comprobando el miembro ntmSizeEM de la estructura NEWTEXTMETRIC .