LOGFONT

フォントの属性を定義します。

#define LF_FACESIZE    32

typedef struct tagLOGFONT {
    LONG  lfHeight;                  // 文字セルまたは文字の高さ
    LONG  lfWidth;                   // 平均文字幅
    LONG  lfEscapement;              // 文字送りの方向とX軸との角度
    LONG  lfOrientation;             // ベースラインとX軸との角度
    LONG  lfWeight;                  // フォントの太さ
    BYTE  lfItalic;                  // イタリック体指定
    BYTE  lfUnderline;               // 下線付き指定
    BYTE  lfStrikeOut;               // 打ち消し線付き指定
    BYTE  lfCharSet;                 // キャラクタセット
    BYTE  lfOutPrecision;            // 出力精度
    BYTE  lfClipPrecision;           // クリッピングの精度
    BYTE  lfQuality;                 // 出力品質
    BYTE  lfPitchAndFamily;          // ピッチとファミリ
    TCHAR lfFaceName[LF_FACESIZE];   // フォント名
} LOGFONT *PLOGFONT, NEAR *NPLOGFONT, FAR *LPLOGFONT;

メンバ

lfHeight

フォントの文字セルまたは文字の高さを論理単位で指定します。

正数を指定した場合は文字セルの高さとして解釈されます。 0 を指定するとデフォルトの高さとして解釈されます。負数を指定するとその絶対値が文字の高さ(文字セルの高さから内部レディング (アクセント記号などのためのスペース) の高さを引いたもの)として解釈されます。フォントマッパーは、要求されたサイズを超えない最大のフォントを探します。

lfWidth

フォントの平均文字幅を論理単位で指定します。

0 を指定すると、 lfHeight メンバで指定したフォントの高さに合った幅が自動的に指定されます。

lfEscapement

文字送りの方向と X 軸との角度を、10 分の 1 度単位で指定します。文字送りの方向は、テキストの列のベースラインと平行です。

Windows NT/2000/XP: GM_ADVANCED グラフィックモードでは、 lfEscapement メンバと lfOrientation メンバを個々に設定できます。 GM_COMPATIBLE グラフィックモードでは、 lfEscapement メンバは文字送りの方向と文字の方向の両方を定義します。 lfEscapement メンバと lfOrientation メンバの値は同じにしてください。

Windows 95/98/Me: lfEscapement メンバは文字送りの方向と文字の方向の両方を定義します。 lfEscapement メンバと lfOrientation メンバの値は同じにしてください。

lfOrientation

各文字のベースラインと X 軸との角度を、 10 分の 1 度単位で指定します。

lfWeight

フォントの太さを、 0 から 1000 までの値で指定します。 0 を指定すると、デフォルトの太さが選択されます。

便宜上、定数名が定義されています。

定数名
FW_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_ULTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_REGULAR400
FW_MEDIUM500
FW_SEMIBOLD600
FW_DEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_ULTRABOLD800
FW_HEAVY900
FW_BLACK900
lfItalic

イタリック体にするかどうかを指定します。 1 (TRUE) を指定するとイタリック体になります。 0 (FALSE) を指定するとイタリック体になりません。

lfUnderline

下線付きのフォントを選択するかどうかを指定します。 1 (TRUE) を指定すると下線が付けられます。 0 (FALSE) を指定すると下線が付けられません。

lfStrikeOut

打ち消し線付きフォントを選択するかどうかを指定します。1 (TRUE) を指定すると打ち消し線が付けられます。 0 (FALSE) を指定すると打ち消し線が付けられません。

lfCharSet

キャラクタセットの値を指定します。定義済みキャラクタセットを以下に示します

キャラクタセット
ANSI_CHARSET 0
DEFAULT_CHARSET 1
SYMBOL_CHARSET 2
SHIFTJIS_CHARSET 128
HANGUL_CHARSET 129
GB2312_CHARSET 134
CHINESEBIG5_CHARSET 136
韓国語版 Windows: JOHAB_CHARSET 130
中東語版 Windows: HEBREW_CHARSET 177
中東語版 Windows: ARABIC_CHARSET 178
GREEK_CHARSET 161
TURKISH_CHARSET 162
VIETNAMESE_CHARSET 163
タイ語版 Windows: THAI_CHARSET 222
EASTEUROPE_CHARSET 238
RUSSIAN_CHARSET 204
MAC_CHARSET 77
BALTIC_CHARSET 186
OEM_CHARSET 255
lfOutPrecision

出力精度を指定します。次の値のいずれかを指定します。

意味
0 (OUT_DEFAULT_PRECIS)

デフォルトの動作に任せます。

1 (OUT_STRING_PRECIS)

使用されません。(ただし、ラスタフォントが列挙されるときには返されます。)

2 (OUT_CHARACTER_PRECIS)

使用されません。

3 (OUT_STROKE_PRECIS)

Windows NT/2000/XP: 使用しません。(ただし、 TrueType フォントやその他のアウトラインベースのフォント、ベクトルフォントが列挙されるときには返されます。)

Windows 95/98/Me: ベクトルフォントを選択するよう指示します。( TrueType フォントやベクトルフォントが列挙されるときにも返されます。)

4 (OUT_TT_PRECIS)

同じ名前のフォントが複数あった場合は、 TrueType フォントを選択するよう指示します。

5 (OUT_DEVICE_PRECIS)

同じ名前のフォントが複数あった場合は、デバイスフォントを選択するよう指示します。

6 (OUT_RASTER_PRECIS)

同じ名前のフォントが複数あった場合は、ラスタフォントを選択するよう指示します。

7 (OUT_TT_ONLY_PRECIS)

TrueType フォントだけを選択するよう指示します。システムに TrueType フォントが組み込まれていないときは、デフォルトの動作になります。

8 (OUT_OUTLINE_PRECIS)

Windows NT/2000/XP: TrueType フォントやその他のアウトラインベースのフォントを選択するよう指示します。

Windows 95/98/Me: 使用しません。

lfClipPrecision

クリッピングの精度を指定します。この値は、文字の一部がクリッピング領域の外にはみ出たときに、その文字をクリップする方法を定義します。次の値のいずれか、または組み合わせを指定します。

意味
0 (CLIP_DEFAULT_PRECIS)

デフォルトの動作に任せます。

1 (CLIP_CHARACTER_PRECIS)

使用されません。

2 (CLIP_STROKE_PRECIS)

使用されません。(ただし、ラスタフォント、ベクトルフォント、TrueType フォントが列挙されるときには返されます。)

Windows NT/2000/XP: 互換性のため、フォント列挙時には常にこの値が返されます。

15 (CLIP_MASK)

使用されません。

16 (CLIP_LH_ANGLES)

座標系が右手座標系か左手座標系かによって、すべてのフォントの回転方向を決めるようにします。この値を指定しない場合は、デバイスフォントは常に反時計回りに、その他のフォントは座標系の向きしたがって回転します。

32 (CLIP_TT_ALWAYS)

使用されません。

128 (CLIP_EMBEDDED)

読み取り専用の埋め込みフォント

lfQuality

出力品質を指定します。この値は、 GDI が、論理フォントの属性と実際の物理フォントの属性とをどの程度まで一致させるかを定義するものです。

意味
0 (DEFAULT_QUALITY)

フォントの文字品質は重視されません。

1 (DRAFT_QUALITY)

フォントの文字品質は、 PROOF_QUALITY を使用したときほどは重視されません。

2 (PROOF_QUALITY)

フォントの文字品質が、論理フォントの属性を正確に一致させることよりも重視されます。

3 (NONANTIALIASED_QUALITY)

Windows 95 以降 / NT 4.0 以降: フォントはアンチエイリアス表示されないようにします。

4 (ANTIALIASED_QUALITY)

Windows NT 4.0/2000/XP: フォントがアンチエイリアスをサポートしている場合はアンチエイリアス表示になります。

Windows 95 Plus!/98/Me:

5 (CLEARTYPE_QUALITY)

Windows XP: ClearType アンチエイリアスメソッドを使用してレンダリングされます。

lfPitchAndFamily

フォントのピッチとファミリを指定します。ピッチを指定する値とフォントファミリを指定する値をひとつずつ OR 演算子“|”で組み合わせて指定します。

ピッチを指定するのに以下の値のいずれかを指定します。

意味
0 (DEFAULT_PITCH) デフォルト
1 (FIXED_PITCH) 固定幅
2 (VARIABLE_PITCH) 可変幅

フォントファミリを指定するのに以下の値のいずれかを指定します。

意味
0 (FF_DONTCARE)

一般的なファミリが指定されます。フォントに関する情報が存在しない場合や、重要ではないときに使用します。

16 (FF_ROMAN)

セリフ(H, I などの上下にあるひげ飾り)のあるプロポーショナルフォントが指定されます。 Times New Roman など。

32 (FF_SWISS)

セリフ(H, I などの上下にあるひげ飾り)のないプロポーショナルフォントが指定されます。 Arial など。

48 (FF_MODERN)

セリフ(H,I などの上下にあるひげ飾り)のある、またはセリフのないモノスペースフォントが指定されます。 Pica, Elite, Courier New など。

64 (FF_SCRIPT)

手書き風のデザインのフォントが指定されます。 Script, Cursive など。

80 (FF_DECORATIVE)

装飾付きフォントが指定されます。 Old English など。

lfFaceName

フォントのタイプフェイス名を表す文字列が格納されます。この文字列の長さはヌル文字も含めて 32 バイト(Unicode 版の場合は 32 文字)以下でなければなりません。

空文字列を指定すると、ほかのメンバで指定された属性に合うフォントの中から最初に見つけられたフォントが選択されます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降

変数との対応(ANSI 版の場合)

HSP 変数 メンバ
メンバ名 オフセット サイズ
logfont.0 lfHeight 0 4
logfont.1 lfWidth 4 4
logfont.2 lfEscapement 8 4
logfont.3 lfOrientation 12 4
logfont.4 lfWeight 16 4
logfont.5 1バイト目 lfItalic 20 1
2バイト目 lfUnderline 21 1
3バイト目 lfStrikeOut 22 1
4バイト目 lfCharSet 23 1
logfont.6 1バイト目 lfOutPrecision 24 1
2バイト目 lfClipPrecision 25 1
3バイト目 lfQuality 26 1
4バイト目 lfPitchAndFamily 27 1
logfont.7 lfFaceName 28 32
logfont.14

構造体に lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily, lfFaceName を格納するには

poke logfont, 20, lfItalic
poke logfont, 21, lfUnderline
poke logfont, 22, lfStrikeOut
poke logfont, 23, lfCharSet
poke logfont, 24, lfOutPrecision
poke logfont, 25, lfClipPrecision
poke logfont, 26, lfQuality
poke logfont, 27, lfPitchAndFamily
poke logfont, 28, lfFaceName       ; lfFaceNameは文字列または文字列変数
;  memcpy logfont, lfFaceName, 32, 28, 0
;  とすることもできます

構造体から lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily, lfFaceName を取得するには

peek lfItalic,         logfont, 20
peek lfUnderline,      logfont, 21
peek lfStrikeOut,      logfont, 22
peek lfCharSet,        logfont, 23
peek lfOutPrecision,   logfont, 24
peek lfClipPrecision,  logfont, 25
peek lfQuality,        logfont, 26
peek lfPitchAndFamily, logfont, 27
peek lfFaceName,       logfont, 28  ; lfFaceNameは文字列変数
;  memcpy lfFaceName,  logfont, 32, 0, 28
;  とすることもできます