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;

1成员

lfHeight:

以逻辑单位指定字体字符元(character cell)或字符的高度。字符高度值为字符元高度值减去内部行距(internal-leading)值。当lfHeight大于0时,字体映射程序将该值转换为设备单位,并将它与可用字体的字符元高度进行匹配;当该参数为0时,字体映射程度将使用一个匹配的默认高度值;如果参数的值小于0,则将其转换为设备单位,并将其绝对值与可用字体的字符高度进行匹配。对于任何一种情况,字体映射程度最终得到的字体高度值不会超过所指定的值。以MM_TEXT映射模式下,字体高度值和磅值有如下的换算公式:lfHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth:

以逻辑单位指定字体字符的平均宽度。如果lfWidth的值为0,则根据设备的纵横比从可用字体的数字转换纵横中选取最接近的匹配值,该值通过比较两者之间的差异的绝对值得出。

lfEscapement:

以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。

I、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,图形设备接口将使用默认的字体名。

时间: 2024-10-15 13:59:22

LOGFONT::在Windows内部,字体是以一个名为LOGFONT的结构来表示。的相关文章

windows客户端开发--如何测量一个字符串显示的物理长度

首先需要说明的是,我所说的字符串的长度,不是string的length,也不是string的size.我指的是显示的长度,即物理长度. 缘由: 之所以要提到这个,是因为遇到了一些问题. 再使用duilib进行开发时,发现label控件不能自适应宽度. 思考: 这显示是这个库的一个不足,但是我们可以试图去修改一下这个库.但是本着开源的精神,或许这个库的设计初衷就是label不能自适应字符串的宽度呢? 所有只有走第二条路,我们首先获得要显示字符串的宽度width值,然后把这个label的宽度设置为w

Linux应用环境实战05:在Ubuntu 14.10中借用Windows的字体 (转)

阅读目录 设置系统字体 安装微软的英文字体 查看系统的配置文件 借用Windows的字体 编写配置文件 在前一篇随笔中,我详细讨论了字体的分类及用途,也以Fedora 20为例,展示了字体配置的思路和方法.我在配置Fedora 20系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的配置文件,所有的配置从头开始.事实上,任何一个Linux发行版本身已经做了很多的字体配置工作,完全将系统默认的配置弃之不用并不是最好的办法.配置系统字体还可以采用锦上添花的方式,也就是保持系统原有的配置文

【转载】深入研究Windows内部原理绝对经典的资料

原文:深入研究Windows内部原理绝对经典的资料 另一篇资料:深入研究Windows内部原理系列 (为了方便大家下,我打包了放在一下地址: 1-6:http://download.csdn.net/detail/wangqiulin123456/4601530 7-12:http://download.csdn.net/detail/wangqiulin123456/4601508 13-16:http://download.csdn.net/detail/wangqiulin123456/4

windows矢量字体点阵数据的提取(转)

源:windows矢量字体点阵数据的提取 1.提取原理 在windows系统当中提取矢量字体的字模有很多方法,下面介绍一种利用GetGlyphOutline来实现字模点数数据的提取. GetGlyphOutline是windows系统的API函数,利用这个函数,可以方便快捷提取矢量字体字符点阵数据,并且可以很好的支持从文本文件中读取字符.面对用大量字符数据输入时,获取点阵数据所需要的时间量也是很少. GetGlyphOutline函数声明如下: DWORD GetGlyphOutline( HD

Windows下C/C++创建一个新进程

本文翻译自:XQQ524148626的专栏,http://blog.csdn.net/xqq524148626/article/details/4960513 本文地址:http://blog.csdn.net/qingdujun/article/details/41808261 VC++6.0运行通过,示例: #include <iostream> #include <windows.h> using namespace std; int main() { STARTUPINFO

Windows 注册和取消注册一个dll或者ocx

原文:Windows 注册和取消注册一个dll或者ocx 一.DLL是什么        DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库.        DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件.动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数.函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数.DLL 还有助于共享数据和资源.多个应用程序可同时访问内

MFC_1——采用windows API函数来生成一个窗口显示helloword

//采用windows API函数来生成一个窗口显示helloword: #include <windows.h> LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam); //进入WinMain函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

你知道么?Windows 7里藏着一个XP!&lt;1&gt;

还记得在Windows7发布前夕,曾经有朋友特别激动地问,“听说Windows7里面藏了一个XP?”藏……相信这个家伙年轻的时候一定很喜欢躲猫猫的游戏;还有一个朋友也问过我,“是不是Windows7高喊一声‘Transform!’就能直接变成XP?”呃……我觉得他应该是变形金刚看多了;最近也有朋友向我打听,“微软是不是卖一个Windows7,搭一个XP?”,我对这种占便宜没够的心情相当理解…… 沈阳整形医院他们都在说什么呢? 有的人可能知道,有的人可能不知道,今天就准备来说一说,这个玩意到底是个

关于ios下字体描边的一个细节

转载请注明,来自:http://blog.csdn.net/skyman_2001 CGContextSetTextDrawingMode(context, kCGTextStroke); CGContextSetRGBStrokeColor(context, pInfo->strokeColorR, pInfo->strokeColorG, pInfo->strokeColorB, 1); CGContextSetLineWidth(context, pInfo->strokeS