矢量字体研究

由于多画面项目需要使用质量字体进行显示字符信息,在以前的项目中采用的都是点阵字库,对字形没有过多的要求。一般使用16*1624*24的字库文件,比较典型的就是税控机使用的GB18030的汉字库了,这个字库还是收费字库,据说版权费好几万呢。

点阵字库可以在固定的分辨率的显示屏上显示出固定大小的点阵位图,不能进行随意缩放,缩放后会产生失真。这个在实际的应用中已经充分验证,尤其在多画面的项目中更不能使用了。

介于以上的原因,考虑使用矢量字库。

矢量字库只是了解,并没有在实际的应用中使用过,存在很多的技术障碍。

开始不了解WINCE能否支持矢量字体,后来偶然想到WINCE下的word程序,将WINCEWORD程序打开后,创建了一个文件,然后输入汉字和字符,通过更改字体的大小,发现字体的大小发生变化,但字形并没有发生变形,从中可以得出这样的结论:WINCE支持矢量字体。

下一步就是着手了解WINCE如何操作矢量字体了,通过一系列的测试,摸清了字体的显示方式,这些在另外的笔记中已经做了记录,这些就不再重复。

先将目前的几个疑问做一总结,已经得到答疑,还需进一步的验证测试。

createfont的函数中,最后一个参数一直没有搞清楚。

函数原型: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)

 

系统如何确定指向指定字体的字样名

通过

函数原型:int AddFontResource(LPCTSTR lpszFilename)

参数:

  lpszFilename:指向含有一个有效的字体文件的文件名,它是以\0结束的字符串的指针,此文件名可以指定一个.FON字体资源文件、一个.FNT未加工位图字体文件、一个.TTF未加工TrueType文件或一个.FON TrueType资源文件。

  返回值:如果函数调用成功,则返回值为增加的字体数;如果函数调用失败,返回值是0

 

可以通过字体的文件名加载字体文件,但是这个字体的文件明并不是lpszFace

 

后来在另外的一篇博客中发现了这个答案,

LOGFONT logFont;
logFont.lfFaceName=_T("msyh")
AddFontResource
_T("msyh.ttf") --- 这里请填入字体文件的全路径,无论放在哪个文件夹下都可以,没有必要打包到nk
logFont.lfFaceName ---
是指字体名字而不是文件名,至于字体名字是什么,xp下双击字体文件就可以看到了

 

 

 

 

 

 

通过上面的博客来看,可以确定了字体名称和字体文件名之间的联系了。

AddFontResource是和文件名称进行关联,调用后WINCE OS会将这个文件的字体名称解析出来,在CreateFont的最后一个参数指定字体名称时,调用CreateFont的应用程序就和字体文件名建立联系了。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13771794/viewspace-675463/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13771794/viewspace-675463/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值