LOGFONTW 結構 (wingdi.h)
LOGFONT結構會定義字型的屬性。
語法
typedef struct tagLOGFONTW {
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;
WCHAR lfFaceName[LF_FACESIZE];
} LOGFONTW, *PLOGFONTW, *NPLOGFONTW, *LPLOGFONTW;
成員
lfHeight
字型字元儲存格或字元的高度,以邏輯單位表示。 字元高度值 (也稱為 em 高度) 是字元儲存格高度值減去內部前置值。 字型對應程式會以下列方式解譯 以 lfHeight 指定的值。
值 | 意義 |
---|---|
> 0 | 字型對應程式會將此值轉換成裝置單位,並符合可用字型的資料格高度。 |
0 | 字型對應程式會在搜尋相符專案時使用預設高度值。 |
< 0 | 字型對應程式會將此值轉換成裝置單位,並符合其絕對值與可用字型的字元高度。 |
針對所有高度比較,字型對應器會尋找未超過要求大小的最大字型。
第一次使用字型時,就會發生此對應。
針對MM_TEXT對應模式,您可以使用下列公式來指定具有指定點大小的字型高度:
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
lfWidth
字型中字元的平均寬度,以邏輯單位表示。 如果 lfWidth 為零,則裝置的外觀比例會與可用字型的位數外觀比例相符,以尋找最接近的相符專案,取決於差異的絕對值。
lfEscapement
逸出向量與裝置 X 軸之間的角度,以十分之一度為單位。 逸出向量與文字列的基底線平行。
當圖形模式設定為GM_ADVANCED時,您可以指定字串的逸出角度,與字串字元的方向角度無關。
當圖形模式設定為GM_COMPATIBLE時, lfEscapement 會同時指定逸出和方向。 您應該將 lfEscapement 和 lfOrientation 設定為相同的值。
lfOrientation
每一個字元的基底線與裝置 X 軸之間的角度,以十分之一度為單位。
lfWeight
範圍 0 到 1000 中的字型粗細。 例如,400 是一般,而 700 是粗體。 如果此值為零,則會使用預設權數。
為了方便起見,定義了下列值。
值 | 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
- JOHAB_CHARSET
- ARABIC_CHARSET
- HEBREW_CHARSET
- THAI_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值來控制當作業系統包含多個具有指定名稱的字型時,字型對應器如何選擇字型。 例如,如果作業系統在點陣和 TrueType 表單中包含名為 Symbol 的字型,則指定OUT_TT_PRECIS會強制字型對應程式選擇 TrueType 版本。 指定OUT_TT_ONLY_PRECIS會強制字型對應程式選擇 TrueType 字型,即使它必須取代另一個名稱的 TrueType 字型也一樣。
lfClipPrecision
裁剪精確度。 裁剪精確度會定義如何裁剪部分超出裁剪區域的字元。 它可以是下列一或多個值。
如需座標系統方向的詳細資訊,請參閱 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
字型的音調和系列。 兩個低序位會指定字型的音調,而且可以是下列其中一個值。
- DEFAULT_PITCH
- FIXED_PITCH
- VARIABLE_PITCH
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
字型系列會以一般方式描述字型的外觀。 當所需的確切字面無法使用時,這些字型是用來指定字型。 字型系列的值如下所示。
值 | 意義 |
---|---|
FF_DECORATIVE | 新式字型。 例如古英文的字體。 |
FF_DONTCARE | 使用預設字型。 |
FF_MODERN | 具有常數筆劃寬度的字型 (單空格) ,具有或不含 serifs。 單空白字元字型通常是新式的。 Pica、Elite 和 CourierNew 是範例。 |
FF_ROMAN | 具有可變筆劃寬度的字型, (成正比) 和含 serifs。 例如 MS Serif。 |
FF_SCRIPT | 設計為看起來像手寫的字型。 例如 Script 和 Cursive。 |
FF_SWISS | 具有可變筆劃寬度的字型 (比例) ,且不含 serifs。 例如 MS Sans Serif。 |
lfFaceName[LF_FACESIZE]
null 結尾的字串,指定字型的字樣名稱。 此字串的長度不能超過 32 個 TCHAR 值,包括終止 的 Null。 EnumFontFamiliesEx函式可用來列舉所有目前可用字型的字型名稱。 如果 lfFaceName 是空字串,GDI 會使用符合其他指定屬性的第一個字型。
備註
下列情況不支援 ClearType 反鋸齒:
- 文字會在印表機上轉譯。
- 256 種色彩或更少色彩的顯示集。
- 文字會轉譯為終端機伺服器用戶端。
- 字型不是 TrueType 字型或具有 TrueType 外框的 OpenType 字型。 例如,下列專案不支援 ClearType 反鋸齒:類型 1 字型、沒有 TrueType 外框、點陣圖字型、向量字型和裝置字型的 Postscript OpenType 字型。
- 此字型已針對包含內嵌點陣圖的任何字型大小調整內嵌點陣圖。 例如,這通常發生在東亞字型中。
注意
wingdi.h 標頭會將 LOGFONT 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
標頭 | wingdi.h (包含 Windows.h) |