共用方式為


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 為零,則裝置的外觀比例會與可用字型的位數外觀比例相符,以尋找最接近的相符專案,取決於差異的絕對值。

lfEscapement

在逸出器向量與裝置的 X 軸之間,以十分之一度為單位的角度。 逸出向量與文字列的底線平行。

當圖形模式設定為GM_ADVANCED時,您可以指定字串的逸出角度,與字串字元的方向角度無關。

當圖形模式設定為GM_COMPATIBLE時,lfEscapement 同時指定逸出器和方向。 您應該將 lfEscapementlfOrientation 設定為相同的值。

lfOrientation

每一個字元的基底線與裝置的 X 軸之間的角度,以十分之一的度為單位。

lfWeight

範圍 0 到 1000 的字型粗細。 例如,400 是正常的,而 700 是粗體。 如果此值為零,則會使用預設權數。

為了方便起見,定義了下列值。

價值 重量
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 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值來控制字型對應工具選擇字型的方式。 例如,如果操作系統在點陣和 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
成員的位 4 到 7 指定字型系列,而且可以是下列其中一個值。
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
您可以使用布爾 OR 運算符,將一個音調常數與一個系列常數聯結,以取得適當的值。

字型系列以一般方式描述字型的外觀。 當無法使用確切的字樣時,這些字型是用來指定字型。 字型系列的值如下所示。

價值 意義
FF_DECORATIVE 新奇字型。 舊英文是一個例子。
FF_DONTCARE 使用預設字型。
FF_MODERN 具有常數筆劃寬度 (單一空格),且不含 serifs 的字型。 Monospace 字型通常為新式。 Pica、Elite 和 CourierNew 是範例。
FF_ROMAN 具有可變筆劃寬度 (比例) 和 Serifs 的字型。 MS Serif 是範例。
FF_SCRIPT 設計為看起來像手寫的字型。 腳本和 Cursive 是範例。
FF_SWISS 具有可變筆劃寬度(比例)且不含 serifs 的字型。 MS Sans Serif 是一個例子。

lfFaceName[LF_FACESIZE]

以 Null 結尾的字串,指定字型的字樣名稱。 此字串的長度不能超過 32 TCHAR 值,包括終止 NULLEnumFontFamiliesEx 函式可用來列舉目前所有可用字型的字樣名稱。 如果 lfFaceName 是空字串串,GDI 會使用符合其他指定屬性的第一個字型。

言論

下列情況不支援 ClearType 反鋸齒:

  • 文字會在印表機上呈現。
  • 顯示設定為 256 種色彩或更少。
  • 文字會轉譯至終端伺服器用戶端。
  • 字型不是 TrueType 字型或具有 TrueType 外框的 OpenType 字型。 例如,下列不支援 ClearType 反鋸齒:類型 1 字型、Postscript OpenType 字型,不含 TrueType 外框、位圖字型、向量字型和裝置字型。
  • 字型已針對包含內嵌位圖的任何字型大小調整內嵌點陣圖。 例如,這通常發生在東亞字型中。

注意

wingdi.h 標頭會根據 UNICODE 預處理器常數的定義,將 LOGFONT 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
標頭 wingdi.h (包括 Windows.h)

另請參閱

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

字型和文字結構

字型和文字概觀