字体映射演算法
基本信息
中文名称
字体映射演算法
外文名称
Font mapper
属性
Windows编程接口函数
领域
计算机编程
目录
1概念
2指南
折叠编辑本段概念
在设定了逻辑字体结构后,呼叫CreateFontIndirect来得到逻辑字体代号。当呼叫SelectObject把逻辑字体选入装置内容时,Windows寻找与所需字体最接近匹配的实际字体。它使用「字体映射演算法」。结构的某些栏位要比其他栏位更重要一些。
折叠编辑本段指南
了解字体映射的最好方式是花一些时间试验PICKFONT。以下是几条指南:
lfCharSet(字元集)栏位是非常重要的。如果您指定了OEM_CHARSET(255),会得到某种笔划字体或终端机字体,因为它们是唯一使用OEM字元集的字体。然而,随著TrueType「Big Fonts」的出现(在第六章〈TrueType和大字体〉一节讨论过),单一的TrueType字体能映射到包括OEM字元集等不同的字元集。您需要使用SYMBOL_CHARSET(2) 来得到Symbol字体或Wingdings字体。
lfPitchAndFamily栏位的FIXED_PITCH间距值很重要,因为您实际上告诉Windows不想处理变宽字体。
lfFaceName栏位很重要,因为您指定了所需字体的字样。如果让lfFaceName设定为NULL,并在lfPitchAndFamily栏位中将组值设定为FF_DONTCARE以外的值,因为指定了字体系列,所以该栏位也很重要。
对于点阵字体,Windows会试图配合lfHeight值,即使需要增加较小字体的大小。实际字体的高度总是小於或等于所需的字体,除非没有更小的字体满足您的要求。对于笔划或TrueType字体,Windows仅简单地将字体缩放到需要的高度。
可以通过将lfQuality设定为PROOF_QUALITY来防止Windows缩放点阵字体。这么做可以告诉Windows所需的字体高度没有字体外观重要。
如果指明了对于显示器的特定纵横比不协调的lfHeight和lfWeight值,Windows能映射到为显示器或其他不同纵横比的设备设计的点阵字体。这是得到细或粗字体的技巧(当然,对于TrueType字体是不必要的)。一般而言,您可能想避免为另一种设备挑配字体。您可以通过单击标有「Match Aspect」的核取方块,在PICKFONT中完成。如果选中了核取方块,PICKFONT会使用TRUE参数呼叫SetMapperFlags。