程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 在.Net Micro Framework中顯示漢字

在.Net Micro Framework中顯示漢字

編輯:.NET實例教程

.

摘要: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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved