LOGFONT

LOGFONT

在Windows內部,字體是以一個名為LOGFONT的結構來表示。

結構體原型


typedef struct tagLOGFONT
{ // lf 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;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;

成員


lfHeight

以邏輯單位指定字體字元元(character cell)或字元的高度。字元高度值為字元元高度值減去內部行距(internal-leading)值。當lfHeight大於0時,字體映射程序將該值轉換為設備單位,並將它與可用字體的字元元高度進行匹配;當該參數為0時,字體映射程度將使用一個匹配的默認高度值;如果參數的值小於0,則將其轉換為設備單位,並將其絕對值與可用字體的字元高度進行匹配。對於任何一種情況,字體映射程度最終得到的字體高度值不會超過所指定的值。以MM_TEXT映射模式下,字體高度值和磅值有如下的換算公式:lfHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

以邏輯單位指定字體字元的平均寬度。如果lfWidth的值為0,則根據設備的縱橫比從可用字體的數字轉換縱橫中選取最接近的匹配值,該值通過比較兩者之間的差異的絕對值得出。

lfEscapement

以十分之一度為單位指定每一行文本輸出時相對於頁面底端的角度。

lfOrientation

以十分之一度為單位指定字元基線相對於頁面底端的角度。

lfWeight

指定字體重量。在Windows中,字體重量這個術語用來指代字體的粗細程度。lfWeight的範圍為0到1000,正常情況下的字體重量為400,粗體為700。如果lfWeight為0,則使用默認的字體重量。

lfItalic

當lfItalic為TRUE時使用斜體

lfUnderline

當lfUnderline為TRUE時給字體添加下劃線

lfStrikeOut

當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。
其中,OEM_CHARSET 表示字符集依賴本地操作系統。
DEFAULT_CHARSET 表示字符集基於本地操作系統。例如,系統位置是 English (United States),字符集將設置為 ANSI_CHARSET。

lfOutPrecision

指定輸出精度。輸出精度定義了輸出與所要求的字體高度、寬度、字元方向等的接近程度。它可以為下面的值之一:OUT_CHARACTER_PRECIS、OUT_DEFAULT_PRECIS、OUT_STRING_PRECIS、OUT_STROKE_PRECIS。

lfClipPrecision

指定剪輯精度。剪輯精度定義了當字元的一部分超過剪輯區域時對字元的剪輯方式,它可以為下列值之一:CLIP_CHARACTER_PRECIS、CLIP_DEFAULT_PRECIS、CLIP_STROKE_PRECIS。

lfQuality

定義輸出質量。輸出質量定義了圖形設備介面在匹配邏輯字體屬性到實際的物理字體的所使用的方式,它可以為下列值之一:DEFAULT_QUALITY (默認質量)、DRAFT_QUALITY (草稿質量)、PROOF_QUALITY (正稿質量)。

lfPitchAndFamily

指定字體的字元間距和族。最低兩位指定字體的字元間距為以下值之一:DEFAULT_PITCH、FIXED_PITCH、VARIABLE_PITCH第4到7位指定字體族為以下值之一:FF_DECORATIVE、FF_DONTCARE、FF_MODERN、FF_ROMAN、FF_SCRIPT、FF_SWISS這些值的具體含義可以參考Visual C++中關於結構LOGFONT的文檔。字元間距和字體族可以使用邏輯或(OR)運算符來進行組合。

lfFaceName

一個指定以NULL結尾的字元串,它指定的所用的字體名。該字元串的長度不得超過32個字元,如果lfFaceName為NULL,圖形設備介面將使用默認的字體名。