在.Net Micro Framework中显示汉字(下)

开发 后端
MF平台支持的字体是专有格式,扩展名为tinyfnt,需要用专门的转化工具才能把windows平台上的字体转换为tinyfnt字体。在.Net Micro Framework SDK中提供了一个叫做TFConvert.exe的工具,我们可以用它在命令行下将PC机上的TrueType或者OpenType字体文件生成tinyfnt字体,供.Net Micro Framework的应用程序使用。使用TFconvert 工具进行字体转化,首先需要创建一个.fntdef 的文件其是字体的定义文件,其实它就是一个是TEXT文本文件,但是以.fntdef结尾的。本文阐述了在.Net Micro Framework 中以PC机上的字体显示汉字的步骤。

重新编译后,在模拟器中就能看到中文字体了,如下图:

在模拟器中就能看到中文字体了


5.扩展汉字文件

在前面的实验中,虽然正确的显示出了汉字,但是也许有人会问,为什么fntdef文件中FN会是“宋体”呢,不是华文行楷么?事实上,当你尝试把FN从宋体改为其他名称是,目前版本的TFConvert会在命令行中打印出一条错误信息:“Font cannot be found matching Selectfont descriptor Facename .Expected ‘??’,found ‘??’”。下面我们就来看看,如何解决这个问题,而达到正常显示所有中文字体的目的。

首先,我们需要使用fontcreator工具来修改中文字体的“font name” 该工具大家可以在网上下载,这里简单介绍下如何使用该工具来修改

A.使用fontcreator 工具打开选定的中文字体,如“微软雅黑”

B.选择菜单中“Format”,选择“Naming”出现如下图:

选择菜单中“Format”,选择“Naming”


在“Platform”中选择“Microsoft unicode BMP only”,在“Language”中选择“Chinese-PRC”

注意其中的“Include font family name”、“Include unique font identifier” 和“Include full font name”选项,由于该fontcreator工具没有汉化,所有这些选项显示都是字符而不是具体的中文字体的名称

C.在上面的界面中在“Language”选择“English-united states”出现如下图:

在“Language”选择“English-united states”


同时注意其中的“Include font family name”、“Include unique font identifier” 和“Include full font name”选项,这些选项都包含了“Microsoft YaHei”的字样

D.开始修改:把C步骤中的“Microsoft YaHei”字样内容复制到B步骤中的相应选项中,如下图:

“Microsoft YaHei”字样内容复制


修改后按“ok”,并保存该字体。

E.同时修改.fntdef 中的内容:
◆AddFontToProcess C:"SampleFonts"MSYH.ttf
◆SelectFont "WE:400,FN:Microsoft YaHei"
◆#import upper case letters
◆ImportRange 32 126
◆ImportRange 19968 40869

这样你重新运行Tfconvert工具进行转换的时候就不会出现如下的错误提示:

Tfconvert工具进行转换时不会出现的错误


说明:上面所修改的选项中的内容可以替换为MsYaHei ,或其他可以代表微软雅黑字体的英文名称都可以,同时你可以试着把这些选项的内容替换为“宋体”,这样你用Tfconvert进行转换的时候也不会出现错误提示。个人认为在.Net Micro Framework 的中文字体转换中目前只支持以中文“宋体”为face name(FN)的转换,其他像微软雅黑、华文细黑、幼圆为显示名称的中文字体,都要把名称修改为英文名称才能正常转换。

下图显示的是经过上述处理后的华文行楷字体:

处理后的华文行楷字体

 

参考资料:

http://blog.csdn.net/yefanqiu/archive/2007/11/01/1862300.aspx

【编辑推荐】

  1. .Net Micro Framework中的Shapes命名空间
  2. 浅谈.NET Micro Framework性能优化
  3. .Net Micro Framework线程技术详解
  4. 详解.Net Micro Framework中的TCP/IP通信
  5. 在.Net Micro Framework中访问硬件
责任编辑:佚名 来源: 博客园
相关推荐

2009-07-17 13:46:52

.Net Micro

2009-07-16 15:02:33

Shapes命名空间Net Micro F

2009-07-09 09:28:19

.Net Micro

2009-06-29 10:19:42

.NET Micro性能优化

2009-07-17 13:35:12

IO模拟器研究.Net Micro

2009-11-17 10:29:39

.NET Micro

2010-10-08 17:03:59

.NET Micro Visual Stud

2009-05-11 09:24:53

微软.Net Micro 源代码

2009-07-17 14:51:22

.Net Micro

2009-07-17 14:38:49

Micro Frame

2009-04-11 15:12:24

.Net MicroI2C总线模拟器

2022-09-02 10:45:58

Micro编辑工具

2009-08-18 11:08:24

.Net Framew

2009-07-28 03:42:00

ASP.NET Gri

2009-07-07 12:09:04

注册表开发.NET Compac

2010-01-06 15:35:01

.Net Framew

2009-07-22 17:07:16

WPF插件开发.NET Framew

2009-05-26 09:09:50

.NET FramewStream.Read基础类

2009-04-28 16:18:29

.Net MicroSideShow

2009-12-15 11:28:34

.NET Framew
点赞
收藏

51CTO技术栈公众号