情報: 論理の高さとフォントのポイント サイズを計算します。

概要

必要なポイント サイズのみを指定した Microsoft Windows グラフィカルな環境でフォントを作成するにCreateFont()CreateFontIndirect()関数では、論理ユニットを使用して、高さを指定するため、アプリケーションは論理フォントの高さを計算する必要があります。


ユーザーにフォントを記述するには、アプリケーションは、高さの指定、フォントのポイント サイズを計算できます。この資料では、MM_TEXT マッピング モードでは、これらの計算を実行するために必要な数式を提供します。新しいマップ モードを別のフォント サイズを計算する数式を取得する必要があります。

詳細

論理高さを計算するには、次の数式を使用します。

                                Point Size * LOGPIXELSY
height = Internal Leading + -------------------------
72

LOGPIXELSY は、デバイス上の論理インチのピクセル数です。LOGPIXELSY インデックスを持つGetDeviceCaps()関数を呼び出すことによって、この値が取得されます。72 の値は、1 インチは 72 ポイントを含んでいるため大幅です。


この計算の問題では、まだ作成されていないために、フォントの内部につながるかを判断する方法はありません。この問題を回避するには、数式の次のバリエーションを使用します。

            -(Point Size * LOGPIXELSY)
height = --------------------------
72

この数式は次のように記述することも可能です。

   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
アプリケーションは、 CreateFont()またはCreateFontIndirect()関数を呼び出すし、高さのパラメーターに負の値を指定、フォント マッパーは、セルの高さではなく、文字の高さに最も近いを提供します。セルの高さと文字の高さの違いは、次の図に示すよう内部のレディングです。

   ----------  <------------------------------
| | |- Internal Leading |
| | | | <--------- |
| | | | | |- Cell Height
| |---| | |- Character Height |
| | | | | |
| | | | | |
---------- <------------------------------

次の数式は、フォントのポイント サイズを計算します。

                (Height - Internal Leading) * 72
Point Size = --------------------------------
LOGPIXELSY

高さと内部の先頭の値を取得します
受け取るデータ構造体です。LOGPIXELSY の値を取得します
上記のように関数を調べるためです。


計算されたラウンドのポイント サイズの最も近い整数にします。ウィンドウ
MulDiv()関数は、その結果を四捨五入し、前の計算を実行するのには最適な選択。
プロパティ

文書番号:74299 - 最終更新日: 2017/02/01 - リビジョン: 1

フィードバック