Gerät im Vergleich zu Entwurfseinheiten
Eine Anwendung kann Schriftartmetriken für eine physische Schriftart erst abrufen, nachdem die Schriftart in einem Gerätekontext ausgewählt wurde. Wenn eine Schriftart in einem Gerätekontext ausgewählt wird, wird sie für das Gerät skaliert. Die für das Gerät spezifischen Schriftartmetriken werden als Geräteeinheiten bezeichnet.
Portable Metriken in Schriftarten werden als Entwurfseinheiten bezeichnet. Um auf ein angegebenes Gerät anzuwenden, müssen Entwurfseinheiten in Geräteeinheiten konvertiert werden. Verwenden Sie die folgende Formel, um Entwurfseinheiten in Geräteeinheiten zu konvertieren.
DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution
Die Variablen in dieser Formel haben die folgende Bedeutung.
Variable | BESCHREIBUNG |
---|---|
DeviceUnits | Gibt die Schriftartmetrik DesignUnits an, die in Geräteeinheiten konvertiert wird. Dieser Wert befindet sich in den gleichen Einheiten wie der für DeviceResolution angegebene Wert. |
DesignUnits | Gibt die Schriftartmetrik an, die in Geräteeinheiten konvertiert werden soll. Dieser Wert kann eine beliebige Schriftartmetrik sein, einschließlich der Breite eines Zeichens oder des aufsteigenden Werts für eine gesamte Schriftart. |
unitsPerEm | Gibt die quadratische Größe für die Schriftart an. |
PointSize | Gibt die Größe der Schriftart in Punkt an. (Ein Punkt entspricht 1/72 Zoll.) |
DeviceResolution | Gibt die Anzahl der Geräteeinheiten (Pixel) pro Zoll an. Typische Werte sind 300 für einen Laserdrucker oder 96 für einen VGA-Bildschirm. |
Diese Formel sollte nicht verwendet werden, um Geräteeinheiten wieder in Entwurfseinheiten zu konvertieren. Geräteeinheiten werden immer auf das nächste Pixel gerundet. Der verteilte Rundungsfehler kann sehr groß werden, insbesondere wenn eine Anwendung mit Bildschirmgrößen arbeitet.
Um Entwurfseinheiten anzufordern, erstellen Sie eine logische Schriftart, deren Höhe als unitsPerEm angegeben ist. Anwendungen können den Wert für unitsPerEm abrufen, indem sie die EnumFontFamilies-Funktion aufrufen und das ntmSizeEM-Element der NEWTEXTMETRIC-Struktur überprüfen.