当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在.Net Micro Framework中显示汉字

ASP.NET
asp.net css注释的影响
ASP.NET与数据库相关技巧
关于HtmlForm控件
三色交替的下拉列表框
精通ASP.NET中弹出窗口技术
ASP.NET Forums与现有系统整合方案示例
ASP.NET操作IIS中的虚拟目录
DataGrid与SQL Server 2000数据绑定
如何让Web应用程序在Client端实现导出报表功能
如何保证web app中的Send Email线程稳定性
关于用ASP.Net识别远程主机服务器种类
ASP.NET中上传下载文件
提高ASP.NET性能的方法
asp.net StreamReader 创建文件
asp.net如何生成图片验证码(简单)
一个.net 压缩位图至JPEG的代码
简单的SQL Server数据库数据读取与数据操作
获取网站的RSS聚合到自己的网页
.Net程序中整站通用的防SQL注入函数
asp.net生成缩略图及给原始图加水印的函数

ASP.NET 中的 在.Net Micro Framework中显示汉字


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 90 ::
收藏到网摘: n/a

摘要: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机上的字体显示汉字的步骤。

1.编辑.fntdef文件

先创建一个文本文档(.txt),这里我们以华文行楷字体为例,故取名为hwxk.txt。这个文件就是我们用来配置导出字体的文件,我们在其中添加以下内容:

AddFontToProcess C:"WINDOWS"Fonts"STXINGKA.TTF

SelectFont "WE:400,HE:20,FN:宋体"

ImportRange 32 126

ImportRange 19968 40869

配置文件中常用的命令如下:

1)、AddFontToProcess

格式:AddFontToProcess path

说明:填写中文字库的路径信息(字库源的路径,需要输入绝对路径),如果路径里有空格,一定用引号括起来,如示例所示:

AddFontToProcess C:"Windows"Fonts"Miramo.ttf

AddFontToProcess "C:""Program Files""Microsoft .NET Micro Framework""v2.0.3036""Tools""Fonts""TrueType""Miramo.ttf"

2)、SelectFont

格式:SelectFont "selectionstring"

说明:参数比较多,常用的就下面几个,余下的请看msdn的相关文章。

WE(Weight)字体的厚重度,0~1000,标准的是400,粗体为700

FN(Face Name) 字体名称,如果包含空格,要用引号括起来

HE(Height)字体大小(实际测试范围1~36)

WI(Width)字体宽度(实际测试范围1~12)

IT(Italic)设置字体的倾斜角度

UN(Underline)设置字体下面的下划线

注意 这个命令是Select Font,也就是说,从字库源中选择出指定参数的字体,.Net Mirco Framework与.Net精简框架集和.Net框架集不同,它的字体的大小、加粗、斜体等等参数不能在程序中任意改变,你导出的是什么样的字体,那就是什么字体,不能改变,一出生就决定命运。例如你对同一个字符串显示不同的大小,那么对应每一个大小,都需要你导出一个字体库。

3)、ImportRange

格式:ImportRange start end

说明:这个比较重要,是指从字库中导出字体的起始和结束位置,可以多个命令连用。

详细的介绍在msdn上有相关说明:ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MSVS.PSDK/PSDK/PSDK_TF_Fntdef.htm

2. 打开命令行工具

在桌面上点击“开始”à“运行”à键入CMD,用cd指令导航到SDK的Tools文件夹下,利用dir命令,我们可以看到该目录的内容如图:

 

3.使用TFConvert工具

我们假设在c盘下已经创建了samplefonts的目录,把TFconvert.exe hwxk.ttf (以华文行楷作为例子)复制到该目录下,同时把刚才创建的.fntdef hwxk.fntdef 也复制到该目录下。建议大家在windows xp下进行这个工具的使用。

TFconvert 使用方法: TFconvert <input file> <output file>

Input file= 字体定义文件.fntdef,

output file =字体输出文件 .tinyfnt

dos 命令行下 切换到samplesfont 目录下,输入:

TFconvert c:"samplefonts"hwxk.fntdef c:"samplefonts"hwxk.tinyfnt

回车即可,这样在该目录下就有hwxk.tinyfnt 文件生成。当然,这里的目录也可以是你自定义的。

4.测试

在Visual Studio中新建一个Windows Application。首先双击Resources.resx,在出现的Tab页中,我们将String1的内容由“Hello World”改为你要显示的汉语,然后点击左上角的String旁边的小箭头,选择Files:

然后点击旁边的“Add Resouces”右边的小箭头,选择“Add Existing File”,然后浏览到我们之前生成的tinyfnt所在文件目录下。选择hwxk.tinyfnt,将它添加到资源文件中。

然后我们打开Program.cs,默认生成的代码中将:

text.Font = Resources.GetFont(Resources.FontResources.small);

改为:

text.Font = Resources.GetFont(Resources.FontResources.hwxk);

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

5.扩展汉字文件

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

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

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

B、 选择菜单中“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”出现如下图:

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

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

修改后按“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工具进行转换的时候就不会出现如下的错误提示:

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

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

参考资料:

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