6.2 字体的介绍

特殊说明:版权归个人所有,请勿转载,谢谢合作。

字体,又称书体,是指文字的风格式样,是一套具有一定的尺寸和外观的字符类型集合。在实际应用中,系统所提供的字体往往不能满足程序上的需求,可以使用CreateFont函数或CreateFontIndirect函数来创建自定义的字体风格。CreateFont函数原型如下:

 

HFONT CreateFont(
  int nHeight,                // logical height of font
  int nWidth,                 // logical average character width
  int nEscapement,            // angle of escapement
  int nOrientation,           // base-line orientation angle
  int fnWeight,               // font weight
  DWORD fdwItalic,            // italic attribute flag
  DWORD fdwUnderline,         // underline attribute flag
  DWORD fdwStrikeOut,         // strikeout attribute flag
  DWORD fdwCharSet,           // character set identifier
  DWORD fdwOutputPrecision,   // output precision
  DWORD fdwClipPrecision,     // clipping precision
  DWORD fdwQuality,           // output quality
  DWORD fdwPitchAndFamily,    // pitch and family
  LPCTSTR lpszFace            // pointer to typeface name string
);

 

参数nWidth,字体的宽度,如果需要Windows计算合适的宽度,可将这个字段置为0。参数nHeight,字体的高度,取0则采用系统默认值,使用逻辑单位。

参数nEscapement,每行文字相对于页底的角度,即每行字体显示的角度,以十分之一度为单位。移位向量平行于正文行的基线。字体正常打印时,这个字段的值为0;值为90时,垂直向上打印;值为180时,字体头朝下向后打印;值为270时,垂直向下打印。

参数nOrientation,字体的角度,每个文字相对于页底的角度,即每个字显示的角度,以十分之一度为单位。

参数fnWeight,字体的磅数,在Windows中,字体磅数这个术语用来指代字体的粗细程度。fnWeight的范围为0到1000,正常情况下的字体为400,粗体为700。如果fnWeight为0,则使用默认的字体值。

参数fdwItalic,是否为斜体字。如果设置为TRUE,则字体设置为斜体。

参数fdwUnderline,是否为带下划线的字体。如果设置为TRUE,则字体增加下划线。

参数fdwStrikeOut,是否为带删除线的字体。如果设置为TRUE,则字体增加删除线。

参数fdwCharSet,字体使用的字符集,指定值有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字符集是与操作系统相关的。

参数fdwOutputPrecision,指定输出精度,要求的字体高度、宽度、字符定位、移位、字符间距和字符类型的匹配程序,它可取表6.2值之一:

 

  • 表6.2 fdwOutputPrecision参数值
含义
OUT_CHARACTER_PRECIS 未用
OUT_DEFAULT_PRECIS 指定缺省的字体行为
OUT_DEVICE_PRECIS 指示字体映射器选择一种设备字体时,该系统包含多个名称相同的字体
OUT_OUTLINE_PRCIS 在Windows NT中此值指示字体映射器从TrueType和其他基于边框的字体中选择
OUT_RASTER_PRECIS 指示字体映射器选择一种光栅字体时,该系统包含多个名称相同的字体
OUT_STRING_PRECIS 此值没有被字全映射器使用,但是当扫描字体被列举时作为返回值
OUT_STROKE_PRECIS 在Windows NT中此值没有被字体映射器使用,但是当TrueType字体、其他基于边框的字体和向量字体被列举时,作为返回值
OUT_TT_ONLY_PRECIS 指示字体映射器仅从TrueType字体中选择,如果系统中没有安装TrueType字体,则字体映射返回缺省状态
OUT_TT_PRECIS 指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体

 

参数fdwClipPrecision,指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符,它可取表6.3中一个或多个值。

 

  • 表6.3  fdwClipPrecision参数值
含义
CLIP_DEFAULT_PRECIS 指定缺省裁剪状态
CLIP_CHARACTER_PRECIS 未用
CLIP_STROKE_PRECIS 未被字体映射器使用,但是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回
CLIP_MASK 未用
CLIP_EMBEDDED 要使用嵌入式只读字体必须使用此标志
CLIP_LH_ANGLES 当此值被使用时,所有字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。如果未使用此值,设备字体总是逆时针方向旋转,但其他字体的旋转依赖于坐标系统的定向。要得到更多关于坐标系统定向的信息,参见参数orientation
CLIP_TT_ALWAYS 未用

 

参数fdwQuality,定义输出质量。输出质量定义了图形设备接口在匹配逻辑字体属性到实际的物理字体的所使用的方式,它可取表6.4中值之一。

 

  • 表6.4 fdwQuality参数值
含义
DEFAULT_QUALITY 默认质量,字体的外观不重要
DRAFT_QUALITY 草稿质量,字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用
PROOF_QUALITY 正稿质量,字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。尽管当使用PROOF_QUALITY时,选择字 体大小并不完全匹配,但字体的质量很高,并没有外观上的变形。如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用

 

参数fdwPitchAndFamily,不存在能够完全满足要求的字体时,帮助和指导Windows选择其他代用字体。一般赋值常量FF_ROMAN。

参数lpszFace,所要使用的字体的名称。

 

CreateFontIndirect函数功能与CreateFont函数相同,不一样的是CreateFontIndirect函数参数列表是LOGFONT类型的指针。

 

HFONT CreateFontIndirect(
  CONST LOGFONT *lplf   // pointer to logical font structure
);

 

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;

 

参数列表与CreateFont函数参数列表的含义相同,这里就不一一介绍了。

 

转载请附上原文出处链接及本声明
李老师的博客 » 6.2 字体的介绍

发表评论

提供最优质的文章集合

立即查看 了解详情