Appareil et unités de conception
Une application peut récupérer les métriques de police d’une police physique uniquement une fois que la police a été sélectionnée dans un contexte d’appareil. Lorsqu’une police est sélectionnée dans un contexte d’appareil, elle est mise à l’échelle pour l’appareil. Les métriques de police spécifiques à l’appareil sont appelées unités d’appareil.
Les métriques portables dans les polices sont appelées unités de conception. Pour s’appliquer à un appareil spécifié, les unités de conception doivent être converties en unités d’appareil. Utilisez la formule suivante pour convertir des unités de conception en unités d’appareil.
DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution
Les variables de cette formule ont les significations suivantes.
Variable | Description |
---|---|
DeviceUnits | Spécifie la métrique de police DesignUnits convertie en unités d’appareil. Cette valeur se trouve dans les mêmes unités que la valeur spécifiée pour DeviceResolution. |
DesignUnits | Spécifie la métrique de police à convertir en unités d’appareil. Cette valeur peut être n’importe quelle métrique de police, y compris la largeur d’un caractère ou la valeur ascendante pour une police entière. |
unitsPerEm | Spécifie la taille carrée de la police. |
PointSize | Spécifie la taille de la police, en points. (Un point est égal à 1/72 de pouce.) |
DeviceResolution | Spécifie le nombre d’unités d’appareil (pixels) par pouce. Les valeurs classiques peuvent être 300 pour une imprimante laser ou 96 pour un écran VGA. |
Cette formule ne doit pas être utilisée pour reconvertit les unités d’appareil en unités de conception. Les unités d’appareil sont toujours arrondies au pixel le plus proche. L’erreur de arrondi propagée peut devenir très volumineuse, en particulier lorsqu’une application fonctionne avec des tailles d’écran.
Pour demander des unités de conception, créez une police logique dont la hauteur est spécifiée en tant que unitsPerEm. Les applications peuvent récupérer la valeur de unitsPerEm en appelant la fonction EnumFontFamilies et en vérifiant le membre ntmSizeEM de la structure NEWTEXTMETRIC .