LOGFONT成员含义
LONG lfHeight; // 指定逻辑单位的字符或者字符元高度,0默认值。
LONG lfWidth; // 指定逻辑单位的字体字符的平均宽度。
LONG lfEscapement; // 指定每行文本输出时相对于设备x轴的角度,其单位为1/10度(整行字符)。
LONG lfOrientation; // 指定字符基线相对于设备x轴的角度,其单位为1/10度(单个字符)。
LONG lfWeight; // 指定字体的重量(粗细),范围0~1000,0默认, 400正常,700粗体(常用FW_xxxx定义的枚举)。
BYTE lfItalic; // 此值为TRUE时,字体为斜体。
BYTE lfUnderline; // 此值为TRUE时,字体带下划线。
BYTE lfStrikeOut; // 此值为TRUE时,字体带删除线。
BYTE lfCharSet; // 指定所使用的字符集,如GB2312_CHARSET,CHINESEBIG5_CHARSET等。
BYTE lfOutPrecision; // 指定输出精度(枚举OUT_xxxx),它定义了输出与所要求的字体相接近的程度。
BYTE lfClipPrecision; // 指定剪辑精度(枚举CLIP_xxxx),它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式。
BYTE lfQuality; // 指定输出质量,它定义了GDI在匹配逻辑字体属性到实际的物理字体时所使用的方式。
BYTE lfPitchAndFamily; // 指定字体的字符间距(xxxx_PITCH)和族(FF_xxxx)。
TCHAR lfFaceName[LF_FACESIZE]; // 字体名称(以'\0'结尾的字符串,NULL默认字体)
注释:
(1)逻辑单位
设备逻辑单位的具体含义由设备的环境映射方式确定(参见SetMapMode/GetMapMode).
特别的,MM_TEXT表示逻辑单位是像素.
根据GetDeviceCaps(hDC, LOGPIXELSY)获取像素和物理尺寸的换算关系,可以计算物理尺寸对应的逻辑尺寸.
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72); // 1(磅)=1/72(英寸)
(2)字体名
系统文件夹Fonts下列出了系统已经安装的所有字体.
也可用函数载入其他的字体文件,比如
AddFontResource / RemoveFontResource
AddFontResourceEx / RemoveFontResourceEx
AddFontMemResourceEx / RemoveFontMemResourceEx
(2)字符集
显示Unicode字符串时,应使用 DEFAULT_CHARSET
可以使用GetFontUnicodeRanges确定当前字体支持的UNICODE字符范围.
当显示多种语言的字符的时候,需要"Big Font"支持.
参见
http://msdn.microsoft.com/en-us/library/cc194830.aspx
http://msdn.microsoft.com/zh-cn/goglobal/bb688134
(3)输出质量
由于TrueType可以任意缩放,所以不用这个字段.