Windows的字体LOGFONT

从‘最速控制’到代码:深入拆解韩京清ADRC中TD跟踪器的fhan函数(含Matlab/Simulink实例) 本文深入解析韩京清ADRC中的fhan函数,从理论到代码实现,详细拆解其在Matlab/Simulink中的应用。通过分析最速控制问题和非线性TD的连续形式,揭示fhan函数在信号处理和噪声抑制中的独特优势,并提供工程实践中的参数整定和优化技巧。 阅读详情

Windows的字体LOGFONT

LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:

typedef struct tagLOGFONTA

{

    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;

    CHAR      lfFaceName[LF_FACESIZE];

} LOGFONTA

其各个字段的含义如下:

lfHeight:指定逻辑单位的字符或者字符元高度。

lfWidth:指定逻辑单位的字体字符的平均宽度。

lfEscapement:指定每行文本输出时相对于设备x轴的角度,其单位为1/10度。

lfOrientation:指定字符基线相对于设备x轴的角度,其单位为1/10度。此值在Win9X中和lfEscapement具有相同的值,而在WinNT下有时候可能不同。

lfWeight:指定字体的重量,Windows中字体重量表示字体的粗细程度,其范围在0~1000之间,正常为400,粗体为700,若此值为空,则使用默认的字体重量。

lfItalic:此值为TRUE时,字体为斜体。

lfUnderline:此值为TRUE时,字体带下划线。

lfStrikeOut:此值为TRUE时,字体带删除线。

lfCharSet:指定所使用的字符集,如GB2312_CHARSET,CHINESEBIG5_CHARSET等。

lfOutPrecision:指定输出精度,它定义了输出与所要求的字体高度、宽度、字符方向及字体类型等相接近的程度。

lfClipPrecision:指定剪辑精度,它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式。

lfQuality:指定输出质量,它定义了GDI在匹配逻辑字体属性到实际的物理字体时所使用的方式。

lfPitchAndFamily:指定字体的字符间距和族。

lfFaceName:指向NULL结尾的字符串的指针,此字符串即为所使用的字体名称,其长度不能超过32个字符,如果为空,则使用系统默认的字体。

 

Windows的字体

王佰营  徐丽红

    字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸等方面的属性。字样是字符书写和显示时表现出的特定模式,例如,对于汉字通常有宋体、楷体、隶书、黑体以及魏碑林等多种字样;字体风格主要表现为字体的粗细和是否倾斜等特点;字体尺寸是用来指定字符所占区域的大小,通常用字符高度来描述。字体尺寸可以取毫米或英寸作为单位,但为了直观也常常采用一种称为点的单位,一点约折合为1/72英寸。对于汉字,还常用号数来表示字体尺寸,初号字最大,以下依次为小初、小一、二号、小二等,如此类推,字体尺寸越来越小。

根据字体的构造技术,可以把字体分为三种基本的技术类型:点阵字体、矢量字体和TrueType字体。点阵字体也称光栅字体或位图字体,其中每个字符的原型都是以固定的位图形式存储在字库中,如System,MS Serif,FixedSys,Terminal和Small Fonts等等;矢量字体也称为笔画字体或绘图仪字体,则是把字符分解为一系列直线而存储起来,如Modern,Roman和Script等等;TrueType字体有可称为写真字体,其字符原型是一系列直线和曲线指令的线索的集合,如Courier New, Times New Roman,Symbol和Arial等等。点阵字体依赖于特定的设备分辨率,是与设备相关的字体;矢量字体和TrueType字体都是与设备无关的,可以任意缩放。TrueType字体的生成速率较快,使用也最广泛。

为了编程的方便,又将字体分为逻辑字体与物理字体:逻辑字体与逻辑画笔和逻辑画刷相似,逻辑字体是应用程序对于理想字体的一种描述方式。而实际安装在操作系统中的和存在于设备中的字体都称为物理字体。应用程序在使用逻辑字体绘制文字时,系统会采用一种特定的算法把一种逻辑字体映射为最匹配的物理字体。windows的字体一般放在C:\WINDOWS\Fonts,如果对WINDOWS本身默认的字体不满意,可下载新字体安装在C:\WINDOWS\Fonts目录下即可。

在Windows中,逻辑字体的具体属性由LOGFONT结构描述。LOGFONT结构定义如下:

      typedef struct tagLOGFONTA

      {

             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;  //选择字体的间距和字体家族

             CHAR      lfFaceName[LF_FACESIZE]; //字体的名称

      } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;

      typedef struct tagLOGFONTW

      {

             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;  //选择字体的间距和字体家族

             WCHAR     lfFaceName[LF_FACESIZE]; //字体的名称

      } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;

      #ifdef UNICODE

      typedef LOGFONTW  LOGFONT;

      typedef PLOGFONTW  PLOGFONT;

      typedef NPLOGFONTW  NPLOGFONT;

      typedef LPLOGFONTW  LPLOGFONT;

      #else

      typedef LOGFONTA  LOGFONT;

      typedef PLOGFONTA  PLOGFONT;

      typedef NPLOGFONTA  NPLOGFONT;

      typedef LPLOGFONTA  LPLOGFONT;

      #endif // UNICODE

              

其中:

(1)、LONG      lfWeight; 设置字体线条的宽度选项:

       符号                     数值                意义

       FW_DONTCARE             0                任意值

       FW_THIN                       100               非常细

       FW_EXTRALIGHT         200               极细

       FW_ULTRALIGHT         200               超细

       FW_LIGHT                     300                细

       FW_NORMAL               400               正常

       FW_REGULAR              400               标准

       FW_MEDIUM                500               中等

       FW_SEMIDBOLD          600               1/2粗

       FW_DEMIBOLD            600               3/4粗

       FW_BOLD                      700                粗

       FW_EXTRABOLD          800               特粗

       FW_ULTRABOLD          800               极粗

       FW_BLACK                    900                黑体

       FW_HEAVY                    900                黑体

(2)、BYTE      lfCharSet;        //字符集选项:

#define ANSI_CHARSET            0

#define DEFAULT_CHARSET         1

#define SYMBOL_CHARSET          2

#define SHIFTJIS_CHARSET        128

#define HANGEUL_CHARSET         129

#define HANGUL_CHARSET          129

#define GB2312_CHARSET          134

#define CHINESEBIG5_CHARSET     136

#define OEM_CHARSET             255

#define JOHAB_CHARSET           130

#define HEBREW_CHARSET          177

#define ARABIC_CHARSET          178

#define GREEK_CHARSET           161

#define TURKISH_CHARSET         162

#define VIETNAMESE_CHARSET      163

#define THAI_CHARSET            222

#define EASTEUROPE_CHARSET      238

#define RUSSIAN_CHARSET         204

(3)、BYTE      lfOutPrecision;    //字体的精确度选项:

#define OUT_DEFAULT_PRECIS          0

#define OUT_STRING_PRECIS           1

#define OUT_CHARACTER_PRECIS        2

#define OUT_STROKE_PRECIS           3

#define OUT_TT_PRECIS               4

#define OUT_DEVICE_PRECIS           5

#define OUT_RASTER_PRECIS           6

#define OUT_TT_ONLY_PRECIS          7

#define OUT_OUTLINE_PRECIS          8

#define OUT_SCREEN_OUTLINE_PRECIS   9

(4)、BYTE      lfClipPrecision;    //裁剪字符的方法选项:

#define CLIP_DEFAULT_PRECIS     0

#define CLIP_CHARACTER_PRECIS   1

#define CLIP_STROKE_PRECIS      2

#define CLIP_MASK               0xf

#define CLIP_LH_ANGLES          (1<<4)

#define CLIP_TT_ALWAYS          (2<<4)

#define CLIP_EMBEDDED           (8<<4)

(5)、BYTE      lfQuality;         //字体质量选项:

#define DEFAULT_QUALITY         0

#define DRAFT_QUALITY           1

#define PROOF_QUALITY           2

#define NONANTIALIASED_QUALITY  3

#define ANTIALIASED_QUALITY     4

 

(6)、BYTE      lfPitchAndFamily;  //选择字体的间距和字体家族

#define DEFAULT_PITCH           0  表示可缺省的间距

#define FIXED_PITCH             1  固定的间距

#define VARIABLE_PITCH          2  可变的间距

 

(7)、WCHAR     lfFaceName[LF_FACESIZE]; //字体的名称选择:

        " Arial "

        " Bell MT "

        " Californian FB "

        " Elephant "

        " Forte "

        " Garamond "

        " Heallenschweiler "

        " Impact "

        " Jokerman "

        " Kartika "

        " Latha "

        " Mangal "

        " Niagara Solid "

        " Onyx "

        " Papyrus "

        " Roman "

        " Synbol "

        " Tunqa "

        " Verdana "

        " Wide Latin "

        "方正舒体"

        "方正姚体"

        "仿宋体"

        "黑体"

        "华文彩云"

        "华文仿宋"

        "华文琥珀"

        "华文楷体"

        "华文隶书"

        "华文宋体"

        "华文细黑"

        "华文新魏"

        "华文行楷"

        "华文中宋"

        "楷体"

        "隶书"

"宋体 &新宋体"

        "宋体-方正超大字符集"

        "幼圆"

    这仅仅是字体的名称的一部分,更详细的字体名称请查自己电脑上文件夹:C:\WINDOWS\Fonts。

    Windows环境下的显示是GDI对象通过设备描述表进行的,而字体对象就是GDI对象之一。实际上,Windows下的不同字体就是通过选择不同的逻辑字体而输出的。如同其他的GDI对象(如画笔、调色板)一样,字体对象不但具有固有的字体,我们可以建立所需要的逻辑字体,然后选进设备描述表就可以了。下面以VC 6.0环境为例加以说明。在VC 6.0中字体对象对应的类就是CFont类。CFont类有两个成员函数CreateFont和CreatePointFontIndirect,用这两个函数都可创建逻辑字体。函数定义如下:

BOOL CreateFont( int nHeight, //字体高度.>0:字体的高度值;=0:字体采//用缺省直.<0:此值的绝对值为高度.

 int nWidth,  //字体宽度.

int nEscapement,    //文本行的倾斜度

int nOrientation,     //字符基线的倾斜度

int nWeight,         //字体的粗细

BYTE bItalic,         //字体是否为斜体

BYTE bUnderline,    //字体是否带下划线

BYTE cStrikeOut,    //字体是否带删除线

BYTE nCharSet,     //字体的字符集

BYTE nOutPrecision, //字符的输出精度

BYTE nClipPrecision, //字符裁剪的精度

BYTE nQuality,      //字符的输出质量

BYTE nPitchAndFamily,// 字符间距和字体族

LPCTSTR lpszFacename //字体名称

);

    该函数的各个参数和LOGFONT结构的对应的成员意义相同。

BOOL CreatePointFontIndirect(Const LOGFONT *lpLogFont);

用这个函数要定义一个LOGFONT结构体,用上一个函数就不用。以下为使用例程:

void CMainWindow::OnPaint ()

{

CRect rect;

GetClientRect(&rect);

 

    CPaintDC dc (this)

    dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);

 

    LONGFONT lf;

    ::ZeroMemory(&lf,sizeof(lf);

    lf.lfHight = 160;

lf.lfWeight = WF_BOLD;

::lstrcpy(lf.lfFaceName,_T("Arial");

 

Cfont font;

Font. CreatePointFontIndirect(&lf);

CFont *pOldFont = dc.SelectObject(&font);

 

dc.Text(0,0,CString(_T("MFC HELL!")));

 

        dc.SelectObject(pOldFont);

}

 

Windows C的使用例程如下:

     HFONT      hFont ;

     LOGFONT    lf ;

TCHAR szBuffer[] = _T("Windows C---SDK!");

   case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

        lf.lfHeight         = - (int) (fabs (pt.y) / 10.0 + 0.5) ;

        lf.lfWidth          = 0 ;

        lf.lfEscapement     = 0 ;

        lf.lfOrientation      = 0 ;

        lf.lfWeight         = 5;

        lf.lfItalic           = 0 ;

        lf.lfUnderline       = 0 ;

        lf.lfStrikeOut       = 0 ;

        lf.lfCharSet        = DEFAULT_CHARSET ;

        lf.lfOutPrecision    = 0 ;

        lf.lfClipPrecision    = 0 ;

        lf.lfQuality         = 0 ;

        lf.lfPitchAndFamily  = 0 ;

        lstrcpy (lf.lfFaceName, _T("Arial") ;

    

        hFont = CreateFontIndirect (&lf) ;

        Se

 

【WRF模拟】保存wrf输出文件到指定目录+仅输出指定空间域/变量文件 修改wrf命令以更改指定输出文件目录等 阅读详情

相关推荐

逆向选择启示录:一个失败高频策略如何意外跑赢市场

本文探讨了高频交易中的逆向选择现象,揭示了一个失败的高频策略如何通过简化意外跑赢市场。通过加密货币市场的实证分析和蒙特卡洛模拟,研究发现低预测性的简单策略反而更具鲁棒性,有效规避了逆向选择风险。文章还提供了小币种做市策略的优化框架和实践建议,为量化交易者提供了宝贵洞见。

weixin_29191669的博客 401

LOGFONT设置字体

LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下: typedef struct tagLOGFONTA {     LONG      lfHeight;     LONG      lfWidth;     LONG      lfEscapement;     LONG      lfOrientation;     LONG      lfW

u010755499的专栏 4501

Habitat-v0.1.7安装全网最详细教程(解决habitat-sim下载时网络问题)

Habitat-v0.1.7安装全网最详细教程(解决habitat-sim下载时网络问题)

shannanshouyin的博客 1327

详细解析LOGFONT

​​LOGFONT​​(Logical Font)是 Windows 系统中用于描述字体属性的核心数据结构,定义在 <wingdi.h>中。它通过 14 个成员完整定义了字体的外观特征,常用于CreateFont函数创建字体对象,或通过GetObject获取现有字体属性。// 字体高度// 字体平均宽度// 行文本倾斜角度// 字符基线倾斜角度// 字体粗细// 是否斜体// 是否下划线// 是否删除线// 字符集// 输出精度// 剪辑精度// 输出质量// 字体间距与族。

felicity_one的博客 863

ADS 2023 实战:手把手教你仿真一个中心频率 2.4GHz 的带通滤波器(附工程文件)

本文详细介绍了使用ADS 2023软件设计和仿真中心频率2.4GHz带通滤波器的全流程,包括工程准备、指标定义、原理图设计、仿真优化及实际电路实现。通过切比雪夫滤波器拓扑和参数优化,实现高性能的带通滤波器设计,适用于无线通信系统。附有工程文件和常见问题解决方案,助力工程师快速掌握射频滤波器设计技巧。

weixin_30790841的博客 482

保姆级避坑指南:Mid-360雷达到手后,用livox_ros_driver2从接线到出点云的完整流程

本文提供Mid-360雷达到手后的完整使用指南,涵盖从硬件接线、网络配置到livox_ros_driver2驱动的安装与调试,帮助用户避开常见陷阱,实现点云数据的稳定输出与可视化。重点解析了配置文件的参数设置和点云格式选择,确保用户能够高效部署和使用Mid-360雷达。

weixin_30733003的博客 484

windows的字体结构 LOGFONT

<br /><br />在Windows内部,字体是以一个名为LOGFONT的结构来表示<br /> <br />结构体原型:<br /> <br />  typedef struct tagLOGFONT <br />  { <br />      LONG lfHeight;  //以逻辑单位指定字体字符元(character cell)或字符的高度。<br />  LONG lfWidth;   //以逻辑单位指定字体字符的平均宽度<br />  LONG lfEscapement;    //以十分

halibobo520的专栏 5753

京东联盟API实战:5分钟搞定商品返利链接生成(附Python代码)

本文详细介绍了如何利用京东联盟API快速构建自动化商品返利链接生成系统。通过Python代码实战,从API申请、环境配置到核心功能封装,手把手教你实现批量商品信息查询与推广链接生成,帮助内容创作者和开发者大幅提升电商推广效率。

weixin_29216957的博客 673

LOGFONT

这个结构体定义了字体的属性。 struct LOGFONT { LONG lfHeight; LONG lfWidth LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality;

enter回车键 494

为什么桥式传感器(Bridge Sensor)需要用到仪表放大器?

仪表放大器在桥式传感器的应用里起到关键作用,本文介绍桥式传感器的原理、特性,以及信号调理过程,并附上了一个 TINA - TI 的仿真电路。

疯狂的运放 1527

STM32G0/G4电机控制中三角函数与浮点运算优化实战

三角函数(sin/cos)和浮点运算是电机矢量控制(FOC)的核心基础,直接影响Clark/Park变换、SVPWM及观测器的实时性与精度。在资源受限的MCU上,标准math.h库因无硬件FPU支持而引发严重时序抖动,导致电流环延迟、转矩脉动增大甚至系统复位。通过硬件加速(如STM32G4的CORDIC协处理器)或定制化定点算法(如STM32G0的查表+线性插值),可将sin/cos计算从数十微秒压缩至1–3 μs量级,提升30倍以上效率。该方案广泛适用于BLDC/PMSM驱动、伺服控制及高动态响应嵌入式运

weixin_35751412的博客 109

Windows字体结构LOGFONT

LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下: typedef struct tagLOGFONTA { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline

weixin_43108793的博客 1814

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

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

结构体原型: typedef struct tagLOGFONT { // lf LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCha...

weixin_30840573的博客 211

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用LOGFONT修改windows sdk下字体为系统字体

<br />刚开始搞sdk的开发发现字体很难看,上网找资料一般都说的是CreateFont,但是这个出来的是等款和系统的字体还是不一样也不是很好看,最后请教之前的上海万臣的同事终于扎到解决办法,是用LOGFONT来搞定的,下面直接看代码吧.<br /> <br /> <br />HFONT hfont; LOGFONT font; HDC hdc; hdc = GetDC(hwnd); memset(&font, 0, sizeof(font)); hfont = Create

silence1214的专栏 1726

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【转】MFC 字体LOGFONT

Windows的字体LOGFONT LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:typedef struct tagLOGFONTA{LONGlfHeight;LONGlfWidth;LONGlfEscapement;LONGlfOrientation;...

weixin_30257433的博客 176

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CFont与LOGFont、HFont的关系

CFont ftItems; CFont ftHotItems; LOGFONT lf; HFONT hf = (HFONT) GetStockObject(DEFAULT_GUI_FONT); CFont * gf = CFont::FromHandle(hf); gf->GetLogFont(&lf); lf.lfUnderline = TRUE; ftHotItems.

Lydia的博客 3193
上一篇: mfc中的隐式转换
下一篇: GDI到底是什么
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值