LOGFONTW 結構 (shtypes.h)

定義字型的屬性。

語法

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[32];
} LOGFONTW;

成員

lfHeight

類型: LONG

指定字型字元儲存格或字元的高度,以邏輯單位表示。 字元高度值 (也稱為em高度) 是字元儲存格高度值減去內部前置值。 字型對應程式會以下列方式解譯 以 lfHeight 指定的值。

Description
> 0 字型對應程式會將此值轉換成裝置單位,並符合可用字型的數據格高度。
0 字型對應程式會在搜尋相符專案時使用預設高度值。
< 0 字型對應程式會將此值轉換成裝置單位,並符合其絕對值與可用字型的字元高度。
 

針對所有高度比較,字型對應器會尋找未超過要求大小的最大字型。

第一次使用字型時,就會發生此對應。

針對MM_TEXT對應模式,您可以使用下列公式來指定具有指定點大小的字型高度。

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

其中 MulDiv 的定義如下:

#define MulDiv(a,b,c)    (((a)*(b))/(c))

lfWidth

類型: LONG

指定字型中字元的平均寬度,以邏輯單位表示。 如果 lfWidth 不是零,則裝置的外觀比例會與可用字型的位數外觀比例相符,以尋找最接近的相符專案,取決於差異的絕對值。

lfEscapement

類型: LONG

以度數的 10 倍來指定字體斜度向量與裝置 X 軸間的角度。 逸出向量與文字列的基底線平行。

lfEscapement 成員會同時指定逸出和方向。 您應該將 lfEscapementlfOrientation 設定為相同的值。

lfOrientation

類型: LONG

以度數的 10 倍來指定每個字元之基準線與裝置 X 軸間的角度。

lfWeight

類型: LONG

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

下列值是在 Wingdi.h 中定義,方便使用。

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

類型: BYTE

TRUE 可指定斜體字型。

lfUnderline

類型: BYTE

TRUE 可指定加底線字型。

lfStrikeOut

類型: BYTE

TRUE 可指定刪除線字型。

lfCharSet

類型: BYTE

指定字元集。 預先定義下列值:

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
 
韓文視窗
JOHAB_CHARSET
 
Middle-Eastern Windows
HEBREW_CHARSET
ARABIC_CHARSET
 
泰文視窗
THAI_CHARSET
 

OEM_CHARSET值會指定與作業系統相依的字元集。

DEFAULT_CHARSET會根據目前的系統地區設定,設定為值。 例如,當系統地區設定為英文 (美國) 時,此值會ANSI_CHARSET。

具有其他字元集的字型可能存在於操作系統中。 如果應用程式使用具有未知字元集的字型,則不應該嘗試轉譯或解譯以該字型轉譯的字串。

這個成員在字型對應程式中很重要。 若要確保結果一致,請指定特定的字元集。 如果您在 lfFaceName 成員中指定字樣名稱,請確定 lfCharSet 值符合 lfFaceName 中指定的字樣字元集。

lfOutPrecision

類型: BYTE

指定輸出精確度。 輸出有效位數會定義輸出必須符合所要求字型的高度、寬度、字元方向、逸出程式、音調和字型類型有多接近。 它可以是 Wingdi.h 中定義的下列其中一個值:

Description
OUT_DEFAULT_PRECIS 指定預設字型對應程序行為。
OUT_RASTER_PRECIS 當系統包含多個具有相同名稱的字型時,指示字型對應器選擇點陣字型。
OUT_STRING_PRECIS 這個值不是由字型對應器使用,而是在列舉點陣字型時傳回。

lfClipPrecision

類型: BYTE

指定裁剪精確值。 裁剪精確度會定義如何裁剪部分超出裁剪區域的字元。 它可以是 Wingdi.h 中定義的下列一或多個值:

Description
CLIP_DEFAULT_PRECIS 指定預設裁剪行為。
CLIP_CHARACTER_PRECIS 未使用。
CLIP_STROKE_PRECIS 不是由字型對應器使用,而是在列舉點陣、向量或 TrueType 字型時傳回。

lfQuality

類型: BYTE

指定輸出品質。 輸出品質會定義 GDI 必須嘗試將邏輯字型屬性與實際實體字型的屬性相符的方式。 它可以是 Wingdi.h 中定義的下列其中一個值:

Description
ANTIALIASED_QUALITY 啟用字型的反鋸齒。 顯示驅動程式必須支援反鋸齒文字,此設定才能運作。
NONANTIALIASED_QUALITY HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing 登錄子機碼存在時,強制使用草稿品質。
CLEARTYPE_COMPAT_QUALITY 使用相容的寬度啟用字型的 ClearType 文字。 相容的寬度會產生與非 ClearType 文字相同的間距文字。
CLEARTYPE_QUALITY 啟用字型的 ClearType 文字。 顯示驅動程序必須支援 ClearType 文字,此設定才能運作。
DEFAULT_QUALITY 字型的外觀並不重要。
DRAFT_QUALITY 針對 GDI 點陣字型,會啟用縮放比例,這表示有更多字型大小可供使用,但品質可能較低。 必要時會合成粗體、斜體、底線和刪除線字型。

lfPitchAndFamily

類型: BYTE

指定字型的間距和群組。 兩個低序位會指定字型的間距,而且可以是 Wingdi.h 中定義的下列其中一個值:

  • DEFAULT_PITCH
  • FIXED_PITCH
  • MONO_FONT
  • VARIABLE_PITCH
成員的位 4 到 7 指定字型群組,而且可以是 Wingdi.h 中定義的下列其中一個值:
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
您可以使用布爾值 OR 運算符,將一個間距常數與一個系列常數聯結,即可取得適當的值。

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

Description
FF_DECORATIVE 新式字型,例如舊英文。
FF_DONTCARE 不小心或不知道。
FF_MODERN 具有常數筆劃寬度的字型 (單空格) ,具有或不含 serifs。 單空間字型通常是新式的,例如 Pica、Elite 和 Courier New。
FF_ROMAN 具有可變筆劃寬度的字型 (成正比) ,以及具有 serifs 的字型,例如 Serif。
FF_SCRIPT 設計為看起來像手寫的字型,例如腳本和 Cursive。
FF_SWISS 具有可變筆劃寬度的字型 (比例) 且不含 serifs,例如 Sans Serif。

lfFaceName[32]

類型: TCHAR[LF_FACESIZE]

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

備註

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

  • 文字會在印表機上轉譯。
  • 256 種色彩或更少色彩的顯示集。
  • 文字會轉譯為終端機伺服器用戶端。
  • 字型不是 TrueType 字型或具有 TrueType 外框的 Microsoft OpenType 字型。 例如,下列專案不支援 ClearType 反鋸齒:類型 1 字型、沒有 TrueType 外框、位圖字型、向量字型和裝置字型的 Postscript OpenType 字型。
  • 此字型已針對包含內嵌位圖的任何字型大小調整內嵌點陣圖。 例如,這通常發生在東亞字型中。
這個結構會先出現在 Windows Vista 中的 Shtypes.idl 和 Shtypes.h 中,以便與 IVisualProperties 介面的成員搭配使用。 不過,相同結構定義於舊版 Windows 的 Wingdi.h 和 Windows.h 中。

注意

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

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 shtypes.h (包括 Shtypes.h、Dimm.h)

另請參閱

IVisualProperties::GetFont

IVisualProperties::SetFont