次の方法で共有


デバイスとデザイン ユニット

アプリケーションは、デバイス コンテキストでフォントが選択された後にのみ、物理フォントのフォント メトリックを取得できます。 フォントがデバイス コンテキストに選択されると、そのフォントはデバイスに合わせてスケーリングされます。 デバイスに固有のフォント メトリックは、デバイス単位と呼ばれます。

フォントの移植可能なメトリックは、デザイン ユニットと呼ばれます。 指定したデバイスに適用するには、設計単位をデバイス単位に変換する必要があります。 デザイン単位をデバイス単位に変換するには、次の式を使用します。

DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution

この数式の変数の意味は次のとおりです。

変数 形容
DeviceUnits DesignUnits フォント メトリックをデバイス単位に変換することを指定します。 この値は、DeviceResolutionに指定された値と同じ単位です。
DesignUnits デバイス単位に変換するフォント メトリックを指定します。 この値には、文字の幅やフォント全体のアセンダー値など、任意のフォント メトリックを指定できます。
unitsPerEm する フォントの em の正方形のサイズを指定します。
PointSize フォントのサイズをポイント単位で指定します。 (1 ポイントは 1/72 インチに相当します)。
DeviceResolution 1 インチあたりのデバイスユニット数 (ピクセル数) を指定します。 一般的な値は、レーザー プリンターの場合は 300、VGA 画面の場合は 96 です。

 

この数式は、デバイス単位をデザイン 単位に変換するために使用しないでください。 デバイスユニットは常に最も近いピクセルに丸められます。 特にアプリケーションが画面サイズを操作している場合は、伝達されるラウンドオフ エラーが非常に大きくなる可能性があります。

デザイン 単位を要求するには、高さが unitsPerEm として指定論理フォントを作成します。 アプリケーションは、EnumFontFamilies 関数を呼び出し、NEWTEXTMETRIC 構造体の ntmSizeEM メンバーを確認することで、unitsPerEm の値を取得できます。