Windows的字体

更新时间:2023-08-11 21:38:29 阅读: 评论:0

Windows的字体
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;//字符集
brethrenBYTE lfOutPrecision;//字体的精确度
soonestBYTE lfClipPrecision;//裁剪字符的⽅法
belialBYTE 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;
#el
typedef LOGFONTA LOGFONT;
typedef PLOGFONTA PLOGFONT;
typedef NPLOGFONTA NPLOGFONT;doe培训
typedef LPLOGFONTA LPLOGFONT;
#endif//UNICODE
其中:
(1)、LONG lfWeight;设置字体线条的宽度选项:
符号数值意义
FW_DONTCARE0任意值
FW_THIN100⾮常细
FW_EXTRALIGHT200极细
FW_ULTRALIGHT200超细
FW_LIGHT300细
FW_NORMAL400正常
FW_REGULAR400标准
永远的爱人spanishFW_MEDIUM500中等
FW_SEMIDBOLD6001/2粗
FW_DEMIBOLD6003/4粗
FW_BOLD700粗
FW_EXTRABOLD800特粗
FW_ULTRABOLD800极粗
FW_BLACK900⿊体
FW_HEAVY900⿊体
(2)、BYTE lfCharSet;//字符集选项:
#define ANSI_CHARSET0
#define DEFAULT_CHARSET1
#define SYMBOL_CHARSET2
#define SHIFTJIS_CHARSET128
#define HANGEUL_CHARSET129
#define HANGUL_CHARSET129
#define GB2312_CHARSET134
#define CHINESEBIG5_CHARSET136
#define OEM_CHARSET255
#define JOHAB_CHARSET130
#define HEBREW_CHARSET177
#define ARABIC_CHARSET178
#define GREEK_CHARSET161
#define TURKISH_CHARSET162
#define VIETNAMESE_CHARSET163
#define THAI_CHARSET222
#define EASTEUROPE_CHARSET238
#define RUSSIAN_CHARSET204
(3)、BYTE lfOutPrecision;//字体的精确度选项:#define OUT_DEFAULT_PRECIS0
#define OUT_STRING_PRECIS1
#define OUT_CHARACTER_PRECIS2
#define OUT_STROKE_PRECIS3
#define OUT_TT_PRECIS4
#define OUT_DEVICE_PRECIS5
#define OUT_RASTER_PRECIS6
#define OUT_TT_ONLY_PRECIS7
#define OUT_OUTLINE_PRECIS8
#define OUT_SCREEN_OUTLINE_PRECIS9(4)、BYTE lfClipPrecision;//裁剪字符的⽅法选项:
#define CLIP_DEFAULT_PRECIS0
#define CLIP_CHARACTER_PRECIS1
#define CLIP_STROKE_PRECIS2
#define CLIP_MASK0xf
#define CLIP_LH_ANGLES(1<<4)
#define CLIP_TT_ALWAYS(2<<4)
#define CLIP_EMBEDDED(8<<4)
(5)、BYTE lfQuality;//字体质量选项:
#define DEFAULT_QUALITY0
#define DRAFT_QUALITY1
#define PROOF_QUALITY2
#define NONANTIALIASED_QUALITY3
#define ANTIALIASED_QUALITY4
(6)、BYTE lfPitchAndFamily;//选择字体的间距和字体家族
#define DEFAULT_PITCH0表⽰可缺省的间距
#define FIXED_PITCH1固定的间距
#define VARIABLE_PITCH2可变的间距
(7)、WCHAR lfFaceName[LF_FACESIZE];//字体的名称选择:"Arial"
toaster"Bell MT"
"Californian FB"
"Elephant"
"Forte"
"Garamond"
"Heallenschweiler"
"Impact"
"Jokerman"
火星有地下水系统
"Kartika"
"Latha"
"Mangal"
"Niagara Solid"
"Onyx"
"Papyrus"
"Roman"
"Synbol"
"Tunqa"
"Verdana"
"Wide Latin"
"⽅正舒体"
"⽅正姚体"
"仿宋体"
"⿊体"
"华⽂彩云"
"华⽂仿宋"
"华⽂琥珀"
"华⽂楷体"
"华⽂⾪书"
"华⽂宋体"
"华⽂细⿊"
"华⽂新魏"
"华⽂⾏楷"
"华⽂中宋"
"楷体"
"⾪书"
long long ago"宋体&新宋体"
"宋体-⽅正超⼤字符集"
"幼圆"
这仅仅是字体的名称的⼀部分,更详细的字体名称请查⾃⼰电脑上⽂件夹:
C:\WINDOWS\Fonts。
Windows环境下的显⽰是GDI对象通过设备描述表进⾏的,⽽字体对象就是GDI对象之⼀。实际上,Windows下的不同字体就是通过选择不同的逻辑字体⽽输出的。如同其他的GDI对象(如画笔、调⾊板)⼀样,字体对象不但具有固有的字体,我们可以建⽴所需要的逻辑字体,然后选进设备描述表就可以了。下⾯以VC6.0环境为例加以说明。在VC6.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,//字体是否带删除线

本文发布于:2023-08-11 21:38:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/194050.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字体   逻辑   字符
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图