フォントの属性を定義します。
#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;
フォントの文字セルまたは文字の高さを論理単位で指定します。
正数を指定した場合は文字セルの高さとして解釈されます。 0 を指定するとデフォルトの高さとして解釈されます。負数を指定するとその絶対値が文字の高さ(文字セルの高さから内部レディング (アクセント記号などのためのスペース) の高さを引いたもの)として解釈されます。フォントマッパーは、要求されたサイズを超えない最大のフォントを探します。
フォントの平均文字幅を論理単位で指定します。
0 を指定すると、 lfHeight メンバで指定したフォントの高さに合った幅が自動的に指定されます。
文字送りの方向と X 軸との角度を、10 分の 1 度単位で指定します。文字送りの方向は、テキストの列のベースラインと平行です。
Windows NT/2000/XP: GM_ADVANCED グラフィックモードでは、 lfEscapement メンバと lfOrientation メンバを個々に設定できます。 GM_COMPATIBLE グラフィックモードでは、 lfEscapement メンバは文字送りの方向と文字の方向の両方を定義します。 lfEscapement メンバと lfOrientation メンバの値は同じにしてください。
Windows 95/98/Me: lfEscapement メンバは文字送りの方向と文字の方向の両方を定義します。 lfEscapement メンバと lfOrientation メンバの値は同じにしてください。
各文字のベースラインと X 軸との角度を、 10 分の 1 度単位で指定します。
フォントの太さを、 0 から 1000 までの値で指定します。 0 を指定すると、デフォルトの太さが選択されます。
便宜上、定数名が定義されています。
定数名 | 値 |
---|---|
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 |
イタリック体にするかどうかを指定します。 1 (TRUE) を指定するとイタリック体になります。 0 (FALSE) を指定するとイタリック体になりません。
下線付きのフォントを選択するかどうかを指定します。 1 (TRUE) を指定すると下線が付けられます。 0 (FALSE) を指定すると下線が付けられません。
打ち消し線付きフォントを選択するかどうかを指定します。1 (TRUE) を指定すると打ち消し線が付けられます。 0 (FALSE) を指定すると打ち消し線が付けられません。
キャラクタセットの値を指定します。定義済みキャラクタセットを以下に示します
キャラクタセット | 値 |
---|---|
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 |
出力精度を指定します。次の値のいずれかを指定します。
値 | 意味 |
---|---|
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: 使用しません。 |
クリッピングの精度を指定します。この値は、文字の一部がクリッピング領域の外にはみ出たときに、その文字をクリップする方法を定義します。次の値のいずれか、または組み合わせを指定します。
値 | 意味 |
---|---|
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) | 読み取り専用の埋め込みフォント |
出力品質を指定します。この値は、 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 アンチエイリアスメソッドを使用してレンダリングされます。 |
フォントのピッチとファミリを指定します。ピッチを指定する値とフォントファミリを指定する値をひとつずつ 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 など。 |
フォントのタイプフェイス名を表す文字列が格納されます。この文字列の長さはヌル文字も含めて 32 バイト(Unicode 版の場合は 32 文字)以下でなければなりません。
空文字列を指定すると、ほかのメンバで指定された属性に合うフォントの中から最初に見つけられたフォントが選択されます。
Windows 95 以降 / Windows NT 3.1 以降
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
; とすることもできます