转自http://ufownl.blog.163.com/blog/static/12501222008315105723191/

函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。

函数原型:HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace);

参数:

nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以如下方式解释nHeight指定的值,各值含义为:

>0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。

0:字体映射器转换在选择匹配时用一个缺省的高度值。

<0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。

比较所有的高度,字体映射器选择不超过要求大小的最大字体。

此映射当字体第一次被使用时发生。

对于MM_TEXT映射方式,可以用下面的公式为一种指定了点大小的字体确定高度:

nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)

nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。

nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。

Windows NT:当图形设备设置为GM_ADVANCED时,可以不依赖字符串的字符的定位角而指定字符串的移位角。

当图形模式被设置为GM_COMPATIBLE时,nEscapement同时指定移位角和定位角,可以设置nEscapement和nOrientation为相同的值。

Windows 95:nEscapement同时指定移位角和定位角,可设置nEscapement和nOrientation为相同的值。

nOrientation:指定每个字符的基线和设备X轴之间的角度。

FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。

为方便定义,可使用如下值:

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_SEMIBOLD;600;FW_DEMIBOLD;600;

FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。

fdwItalic:如果设置为TRUE则指定斜体。

fdwUnderline:如果设置为TRUE,则指定加下划线的字全。

fdwStrikeOut:如果设置为TRUE,则strikeout指定字体。

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。

韩国Windows:JOHAB_CHARSET;

中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET

泰国Windows:THAI_CHARSET

OEM_CHARSET指定的字符集与操作系统有关。

可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。

操作系统中存在其他字符集的字体。如果一个应用程序用一种未知字符集的字体,则应用程序不会试图去翻译或解释用那种字体写出来的字符串。

在字体映射过程中此参数很重要。为确保获得一致的结果,指定一个特殊的字符集。如果在lpszFace参数中指定了一个字体名,确定fdwCharSet值与由lpszFace指定的字体字符集是否匹配。

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字体、其他基于边框的字体和向量字体被列举时,作为返回值。

Windows 95:此值没有被字体映射器使用,但是当TrueType字体或向量字体被列举时,作为返回值。

OUT_TT_ONLY_PRECIS:指示字体映射器仅从TrueType字体中选择,如果系统中没有安装TrueType字体,则字体映射返回缺省状态。、

OUT_TT_PRECIS:指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体。

当操作系统含有多种与指定名字同名的字体时,应用程序可以使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制字体映射器如何选择一种字体,例如,如果操作系统含有名字Symbol的光栅和TrueType两种字体,指定OUT_TT_PRECIS使字体映射器选择TrueType方式。指定OUT_TT_ONLY_PRECIS使字体映射器选择一种TrueType字体,尽管这会给TrueType字体换一个名字。

fdwClipPrecision;指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符,它可取一个或多个下列值:

CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。

CLIP_STROKE_PRECIS:未被字体映射器使用,但是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回。

CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式只读字体必须使用此标志。

CLIP_LH_ANGLES:当此值被使用时,所有字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。

如果未使用此值,设备字体总是逆时针方向旋转,但其他字体的旋转依赖于坐标系统的定向。要得到更多关于坐标系统定向的信息,参见参数orientation。

CLIP_TT_ALWAYS:未用。

fdwQuality:指向输出质量,输出质量定义GDI如何仔细地将逻辑字体属性与实际物理字体属性相匹配。它可取下列值之一:

DEFAULT_QUALITY:字体的外观不重要。

DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。

PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。尽管当使用PROOF_QUALITY时,选择字体大小并不完全匹配,但字体的质量很高,并没有外观上的变形。如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。

fdwPitchAndFamily:指定字体间距和字体族,低端二位指定字体的字符间距,它可取下列值之一:

DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH

高端四位指定字体族,可取下列值之一:

FF_DECORATIVE:新奇的字体,如老式英语(Old English)。FF_DONTCARE:不关心或不知道。

FF_MDERN:笔划宽度固定的字体,有或者无衬线。如Pica、Elite和Courier New。

FF_ROMAN:笔划宽度变动的字体,有衬线。如MS Serif。

FF_SCRIPT:设计成看上去象手写体的字体。如Script和Cursive。

FF_SWISS:笔划宽度变动的字体,无斜线。如MS Sans Serif。

应用程序可以用运算符OR将字符间距和字体族组合起来给fdwPitchAndFamily赋值。

字体族描述一种字体的普通外观,当所有的精确字样都不能使用时,可用它们来指定字体。

lpszface:指向指定字体的字样名的、以/0结束的字符串指针,字符串的长度不能超过32个字符(包括字符/0),函数EnumFontFamilies可用来列举所有当前可用字体的字样名。

如果lpszFace为NULL或指向一个空串,GDI使用能匹配其他属性的第一种字体。

返回值:如果函数调用成功,返回值是一种逻辑字体句柄;如果函数调用失败,返回值为NULL。

Windows NT:若想获得更多错误信息,请调用GetLastError函数。

备注:当一种字体不再使用时,可用DeleteObject来删除。

为保护那些提供字体给Windows和Windows NT的卖主的版权,基于Win32的应用程序总是列出所选择字体的准确名字。由于不同的系统会使用不同的字体,不要认为所选择字体就是要求的字体。例如,如果要求名叫Palatino的字体,但系统没提供那样一种字体,则字体映射器将会以一种不同名但有相似属性的字体取而代之。系统总是将用户选择的字体名报告出来。

CreateFont(MFC)字体设计相关推荐

  1. 零基础ui设计培训一定要知道字体设计规则

    作为一名UI设计师,最最重要的就是字体设计这方面,很多UI设计工作中,字体是必不可缺的,下面小编就为大家详细的介绍一下零基础ui设计培训一定要知道字体设计规则. 零基础ui设计培训一定要知道字体设计规 ...

  2. 【UI设计培训】字体设计-偏旁部首变形

    UI设计培训中字体设计也是非常重要的一节课,字体在UI设计岗位中可以说用到的频率是非常高的,是设计师必须学会并且要有娴熟运用的一项必备技能,在进行汉字设计的时候,可以把汉字拆分成几个偏旁部首的形式进行 ...

  3. 原始样式增加标题_好看又实用! 10个标题字体设计技巧

    很多新手设计师刚做海报设计的时候,经常直接使用字库的字体,觉得字体设计很难,所以很少自己去设计字体,其实字体设计有很多种形式,今天我们分享10种常见适用于标题的字体设计技巧,好看又实用,足够让你设计出 ...

  4. Illustrator+FontLab 进行字体设计教程

    2019独角兽企业重金招聘Python工程师标准>>> Illustrator 提供了强悍的绘图工具以及丰富的笔刷,让你简单高效的绘制字体形状.但当你在 Illustrator 中完 ...

  5. X4扭曲字体或图形 coreldraw_20种字体设计与创意方法(超全,超实用)

    是不是曾经为字体设计而烦恼?福利来了~ 字体均由人工设计.我们常用的各类字体是由各个字体设计师设计,即绘制或构建而成.这些设计师通常默默无闻地劳动,但其作品却被我们每天使用.就像各种书法字体一样,一个 ...

  6. 如何给字体添加底色indesign_“美哉汉字”2020字体设计专家工作坊预告+报名

    中文标点如何处理? 什么是标点挤压? 段落处理的规则是什么? 中文的网格如何形成? 这个周末让我们一起聆听...... ▼ "美哉汉字"2020字体设计专家工作坊于12月06日在上 ...

  7. 矩形法_字体设计 | 新手必学,超简单的矩形造字法!!

    点击蓝字关注,创智助你长姿势 作为一个刚刚踏入设计界的"萌新"来说,字体设计可能是除了版式设计之外最简单的功课了,那么今天教学内容就是最简单的字体设计:矩形造字法. 矩形造字法是以 ...

  8. 字体设计灵感|浓墨重彩!代表“墨”字设计案例

    做中国风海报字体不好看? 如今越来越多国潮崛起, 中国风设计也越来越受到关注 而将传统中国风字体运用到现代平面设计中 不仅可以丰富设计的视觉效果 增加设计的文化韵味,还能体现设计的民族性. 集设网 w ...

  9. 字体设计灵感合集|字体决定了设计

    字体设计合集 这是集设网收集的一系列美丽的,鼓舞人心的字体和字体集合. 惊艳的海报字体,装饰脚本和一切之间! 为你的下一个设计项目找到完美的字体,不妨先到集设网 www.ijishe.com 看看收集 ...

最新文章

  1. IDEA 强大的 Live Templates,代码生成利器
  2. matlab仿真散射信道,无线信道建模原理及SUI-3信道的MATlab仿真.doc
  3. iphone开发 如何在NSMutableDictionary中放入基本数据类型
  4. Remove Duplicates from Sorted ListII
  5. 使用SDL打造游戏世界之入门篇 - 6
  6. 【剑指offer】面试题57:和为s的两个数字(Java)
  7. 《iPad开发从入门到精通》——6.2节系统主界面
  8. 深度学习神经网络的预测间隔
  9. MTK ELT工具,驻网
  10. 图像 YUV与RGB格式转换
  11. 概率论复习笔记【3条件概率】
  12. 【机器学习】金融风控评分卡建模全流程!
  13. 乱得那么认真|阿里小二办公桌上的秘密~内部流出
  14. 百度网盘无限扩容技术,外面399,无论自己用还是用做引流都可以
  15. 最新版!国内IT软件外包公司汇总~
  16. vue路由详解 --基础
  17. 音频频谱显示-显示音频文件静态频谱图(一)
  18. 西邮Linux兴趣小组2019-2021年纳新面试题解析
  19. 经典网页设计:20个简约风格的电子商务网站
  20. 中医行业与软件行业的职业发展比较

热门文章

  1. 《统计学习方法》(李航)第1章主要内容介绍(统计学习概述、分类、三要素)
  2. 数据库、MySQL基本知识
  3. 流媒体-RTP/RTCP
  4. ssh连接失败报错:Socket error Event: 32 Error: 10053.
  5. MySQL中支持的字符集和排序规则
  6. 网络流量分析/网络流量监测
  7. 【linux】内核模块管理:lsmod、insmod、rmmod、modinfo、modprobe、depmod命令
  8. python在手机上可以画图吗_python可以画图么
  9. 如何实现Word、PDF、TXT文件的全文内容检索?
  10. PS 之AD命令之Get-ADuser!