LOGFONTA 構造体 (wingdi.h)

LOGFONT 構造体は、フォントの属性を定義します。

構文

typedef struct tagLOGFONTA {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;

メンバー

lfHeight

フォントの文字セルまたは文字の高さを論理単位で指定します。 文字の高さの値 (em height とも呼ばれます) は、文字セルの高さの値から内部の先頭の値を引いた値です。 フォント マッパーは、 lfHeight で指定された値を次のように解釈します。

意味
> 0 フォント マッパーは、この値をデバイス単位に変換し、使用可能なフォントのセルの高さと一致します。
0 フォント マッパーは、一致を検索するときに既定の高さの値を使用します。
< 0 フォント マッパーは、この値をデバイス単位に変換し、その絶対値を使用可能なフォントの文字の高さに一致します。
 

すべての高さの比較では、フォント マッパーは、要求されたサイズを超えない最大のフォントを検索します。

このマッピングは、フォントが初めて使用されるときに発生します。

MM_TEXT マッピング モードでは、次の数式を使用して、指定したポイント サイズのフォントの高さを指定できます。


lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

フォント内の文字の平均幅 (論理単位)。 lfWidth が 0 の場合、デバイスの縦横比は、使用可能なフォントのデジタル化縦横比と照合され、最も近い一致を見つけ、差の絶対値によって決定されます。

lfEscapement

脱走ベクトルとデバイスの x 軸の間の角度を 10 分の 1 の角度で指定します。 エスケープメント ベクターは、テキスト行の基本行と平行です。

グラフィックス モードが GM_ADVANCED に設定されている場合は、文字列の文字の向き角度とは無関係に、文字列のエスケープ角度を指定できます。

グラフィックス モードをGM_COMPATIBLEに設定すると、 lfEscapement はエスケープメントと方向の両方を指定します。 lfEscapementlfOrientation を同じ値に設定する必要があります。

lfOrientation

各文字の基本線とデバイスの x 軸の間の角度を 10 分の 1 の角度で指定します。

lfWeight

0 ~ 1000 の範囲のフォントの太さ。 たとえば、400 は標準で、700 は太字です。 この値が 0 の場合は、既定の重みが使用されます。

便宜上、次の値が定義されています。

Weight
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900

lfItalic

TRUE に設定されている場合は斜体フォント。

lfUnderline

TRUE に設定されている場合は、下線付きフォント。

lfStrikeOut

TRUE に設定されている場合の取り消し線フォント。

lfCharSet

文字セット。 次の値が定義済みです。

  • ANSI_CHARSET
  • BALTIC_CHARSET
  • CHINESEBIG5_CHARSET
  • DEFAULT_CHARSET
  • EASTEUROPE_CHARSET
  • GB2312_CHARSET
  • GREEK_CHARSET
  • HANGUL_CHARSET
  • MAC_CHARSET
  • OEM_CHARSET
  • RUSSIAN_CHARSET
  • SHIFTJIS_CHARSET
  • SYMBOL_CHARSET
  • TURKISH_CHARSET
  • VIETNAMESE_CHARSET
Windows の韓国語版:
  • JOHAB_CHARSET
Windows の中東言語エディション:
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Windows のタイ語版:
  • THAI_CHARSET
OEM_CHARSET値は、オペレーティング システムに依存する文字セットを指定します。

DEFAULT_CHARSETは、現在のシステム ロケールに基づいて値に設定されます。 たとえば、システム ロケールが英語 (米国) の場合、ANSI_CHARSETとして設定されます。

他の文字セットを含むフォントは、オペレーティング システムに存在する可能性があります。 アプリケーションで不明な文字セットを持つフォントを使用する場合、そのフォントでレンダリングされる文字列の翻訳や解釈を試みてはなりません。

このパラメーターは、フォント マッピング プロセスで重要です。 フォントの作成時に一貫した結果を得るには、OEM_CHARSETまたはDEFAULT_CHARSETを指定しないでください。 lfFaceName メンバーに書体名を指定する場合は、lfCharSet 値が lfFaceName で指定された書体の文字セットと一致していることを確認します。

lfOutPrecision

出力精度。 出力精度は、要求されたフォントの高さ、幅、文字の向き、エスケープメント、ピッチ、フォントの種類と出力がどれだけ近いかを定義します。 次のいずれかの値を指定できます。

意味
OUT_CHARACTER_PRECIS 使用されていません。
OUT_DEFAULT_PRECIS 既定のフォント マッパー動作を指定します。
OUT_DEVICE_PRECIS システムに同じ名前の複数のフォントが含まれている場合に、フォント マッパーにデバイス フォントを選択するように指示します。
OUT_OUTLINE_PRECIS この値は、TrueType やその他のアウトライン ベースのフォントから選択するようにフォント マッパーに指示します。
OUT_PS_ONLY_PRECIS PostScript フォントからのみ選択するようにフォント マッパーに指示します。 システムに PostScript フォントがインストールされていない場合、フォント マッパーは既定の動作に戻ります。
OUT_RASTER_PRECIS システムに同じ名前の複数のフォントが含まれている場合に、フォント マッパーにラスター フォントを選択するように指示します。
OUT_STRING_PRECIS この値はフォント マッパーでは使用されませんが、ラスター フォントを列挙すると返されます。
OUT_STROKE_PRECIS この値はフォント マッパーでは使用されませんが、TrueType、その他のアウトライン ベースのフォント、ベクター フォントが列挙されると返されます。
OUT_TT_ONLY_PRECIS TrueType フォントからのみ選択するようにフォント マッパーに指示します。 システムに TrueType フォントがインストールされていない場合、フォント マッパーは既定の動作に戻ります。
OUT_TT_PRECIS システムに同じ名前の複数のフォントが含まれている場合に、フォント マッパーに TrueType フォントを選択するように指示します。
 

アプリケーションでは、OUT_DEVICE_PRECIS、OUT_RASTER_PRECIS、OUT_TT_PRECIS、OUT_PS_ONLY_PRECISの値を使用して、オペレーティング システムに指定した名前のフォントが複数含まれている場合にフォント マッパーがフォントを選択する方法を制御できます。 たとえば、オペレーティング システムに Raster および TrueType フォームに Symbol というフォントが含まれている場合、OUT_TT_PRECISを指定すると、フォント マッパーは TrueType バージョンを強制的に選択します。 OUT_TT_ONLY_PRECIS指定すると、別の名前の TrueType フォントに置き換える必要がある場合でも、フォント マッパーは TrueType フォントを強制的に選択します。

lfClipPrecision

クリッピングの精度。 クリッピング精度は、クリッピング領域の一部外にある文字をクリップする方法を定義します。 次の値の 1 つ以上を指定できます。

座標系の向きの詳細については、 nOrientation パラメーターの説明を参照してください。

意味
CLIP_CHARACTER_PRECIS 使用されていません。
CLIP_DEFAULT_PRECIS 既定のクリッピング動作を指定します。
CLIP_DFA_DISABLE Windows XP SP1: フォントのフォントの関連付けをオフにします。 このフラグは、Windows Server 2003 以降のどのプラットフォームにも影響を与える保証はされないことに注意してください。
CLIP_EMBEDDED 埋め込み読み取り専用フォントを使用するには、このフラグを指定する必要があります。
CLIP_LH_ANGLES この値を使用する場合、すべてのフォントの回転は、座標系の向きが左利きか右利きかによって異なります。使用しない場合、デバイス フォントは常に反時計回りに回転しますが、他のフォントの回転は座標系の向きによって異なります。
CLIP_MASK 使用されていません。
CLIP_DFA_OVERRIDE フォントのフォントの関連付けをオフにします。 これはCLIP_DFA_DISABLEと同じですが、状況によっては問題が発生する可能性があります。使用する推奨フラグはCLIP_DFA_DISABLE。
CLIP_STROKE_PRECIS フォント マッパーでは使用されませんが、ラスター、ベクター、または TrueType フォントが列挙されると返されます。 互換性のために、この値はフォントを列挙するときに常に返されます。
CLIP_TT_ALWAYS 使用されていません。

lfQuality

出力品質。 出力品質では、グラフィックス デバイス インターフェイス (GDI) が論理フォント属性と実際の物理フォントの属性との照合をどの程度慎重に試みなければならないかを定義します。 次のいずれかの値を指定できます。

意味
ANTIALIASED_QUALITY フォントがサポートされていて、フォントのサイズが小さすぎたり大きすぎたりしない場合、フォントは常にアンチエイリアスされます。
CLEARTYPE_QUALITY 設定した場合、テキストは ClearType アンチエイリアシング メソッドを使用してレンダリングされます (可能な場合)。 詳細については、「解説」を参照してください。
DEFAULT_QUALITY フォントの外観は関係ありません。
DRAFT_QUALITY フォントの外観は、PROOF_QUALITYを使用する場合よりも重要ではありません。 GDI ラスター フォントの場合、スケーリングが有効になります。つまり、使用可能なフォント サイズが増えますが、品質が低くなる可能性があります。 太字、斜体、下線、取り消し線のフォントは、必要に応じて合成されます。
NONANTIALIASED_QUALITY フォントがアンチエイリアスされることはありません。
PROOF_QUALITY フォントの文字品質は、論理フォント属性の正確な一致よりも重要です。 GDI ラスター フォントの場合、スケーリングは無効になり、サイズに最も近いフォントが選択されます。 選択したフォント サイズは、PROOF_QUALITYの使用時に正確にマップされない場合がありますが、フォントの品質は高く、外観の歪みは発生しません。 太字、斜体、下線、取り消し線のフォントは、必要に応じて合成されます。
 

ANTIALIASED_QUALITYもNONANTIALIASED_QUALITYも選択されていない場合、ユーザーがコントロール パネルでスムーズスクリーンフォントを選択した場合にのみ、フォントはアンチエイリアスされます。

lfPitchAndFamily

フォントのピッチとファミリ。 2 つの下位ビットはフォントのピッチを指定し、次のいずれかの値を指定できます。

  • DEFAULT_PITCH
  • FIXED_PITCH
  • VARIABLE_PITCH
メンバーのビット 4 から 7 はフォント ファミリを指定し、次のいずれかの値を指定できます。
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
ブール OR 演算子を使用して、1 つのピッチ定数と 1 つのファミリ定数を結合することで、適切な値を取得できます。

フォント ファミリは、フォントの外観を一般的な方法で記述します。 これらは、目的の正確な書体が使用できない場合にフォントを指定することを目的としています。 フォント ファミリの値は次のとおりです。

意味
FF_DECORATIVE ノベルティ フォント。 Old English はその一例です。
FF_DONTCARE 既定のフォントを使用します。
FF_MODERN 一定のストローク幅 (モノスペース)、セリフの有無にかかわらずフォント。 モノスペース フォントは通常モダンです。 Pica、Elite、CourierNew が例です。
FF_ROMAN 可変ストローク幅 (比例) とセリフを使用したフォント。 MS Serif はその一例です。
FF_SCRIPT 手書きのようにデザインされたフォント。 Script や Cursive などがあります。
FF_SWISS ストローク幅 (比例) が可変で、セリフがないフォント。 MS Sans Serif はその一例です。

lfFaceName[LF_FACESIZE]

フォントのタイプフェイス名を指定する null で終わる文字列。 この文字列の長さは、終端の NULL を含め、32 個の TCHAR 値を超えてはなりません。 EnumFontFamiliesEx 関数を使用すると、現在使用可能なすべてのフォントの書体名を列挙できます。 lfFaceName が空の文字列の場合、GDI は他の指定された属性と一致する最初のフォントを使用します。

解説

次の状況では、ClearType アンチエイリアシングはサポートされていません。

  • テキストはプリンターにレンダリングされます。
  • 256 色以下の表示セット。
  • テキストはターミナル サーバー クライアントにレンダリングされます。
  • フォントが TrueType フォントまたは TrueType アウトラインを持つ OpenType フォントではありません。 たとえば、ClearType アンチエイリアシングはサポートされていません。種類 1 フォント、TrueType アウトラインのない Postscript OpenType フォント、ビットマップ フォント、ベクター フォント、およびデバイス フォント。
  • フォントには、埋め込みビットマップを含むフォント サイズに合わせて、埋め込みビットマップが調整されています。 たとえば、これは一般的に東アジアのフォントで発生します。

Note

wingdi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして LOGFONT を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
ヘッダー wingdi.h (Windows.h を含む)

関連項目

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

フォントとテキストの構造

フォントとテキストの概要