.NET Micro Framework (MF) 平台支援的字體採用專有的 .tinyfnt 格式,開發者必須透過 SDK 內建的 TFConvert.exe 工具,將 Windows 平台上的 TrueType 或 OpenType 字體轉換為裝置可用的格式。本文將詳細說明從建立字體定義檔、執行轉換命令、到在 Visual Studio 專案中測試顯示中文的完整流程,並針對常見的「字體名稱不符」錯誤提供解決方案。
首先建立一個純文字檔,副檔名改為 .fntdef(例如 hwxk.fntdef)。檔案內容定義字體來源路徑、樣式參數與匯入字碼範圍。以華文行楷為例:
AddFontToProcess C:\Windows\Fonts\STXINGKA.TTF
SelectFont "WE:400,HE:20,FN:宋體"
ImportRange 32 126
ImportRange 19968 40869
WE (字重 0-1000)、HE (高度 1-36)、FN (字體名稱)、WI (寬度 1-12)、IT (斜體)、UN (底線)。注意:MF 字體大小、粗細等屬性在編譯時即固定,執行期無法更改,不同尺寸需分別匯出。32-126 為基本拉丁字元,19968-40869 涵蓋常用漢字區(CJK Unified Ideographs)。Tools 目錄(通常位於 C:\Program Files\Microsoft .NET Micro Framework\v2.0.3036\Tools)。C:\SampleFonts),將 TFConvert.exe、字體檔(STXINGKA.TTF)與 .fntdef 檔複製至此。TFConvert C:\SampleFonts\hwxk.fntdef C:\SampleFonts\hwxk.tinyfnt
成功後目錄下會產生 hwxk.tinyfnt 檔案。
Resources.resx,將 String1 內容改為欲顯示的中文字串。.tinyfnt 檔。Program.cs 中的字體引用:// 原始碼
text.Font = Resources.GetFont(Resources.FontResources.small);
// 修改為
text.Font = Resources.GetFont(Resources.FontResources.hwxk);
重新編譯並執行模擬器,即可看到中文正常顯示。
若在 SelectFont 中指定的 FN (FaceName) 不是「宋體」,TFConvert 會報錯。原因在於 MF 僅支援以中文「宋體」為 FaceName 的字體轉換,其他中文字體(微軟雅黑、華文細黑、幼圓等)需先修改字體內部的 Name Table 為英文名稱。
MSYH.TTF 微軟雅黑)。Microsoft Unicode BMP only,Language 選 Chinese-PRC,記下「Font Family Name」、「Unique Font Identifier」、「Full Font Name」三欄的內容(通常為亂碼)。English-United States,複製這三欄的英文內容(如 Microsoft YaHei)。Chinese-PRC,將三欄內容貼上為英文名稱,按 OK 並儲存字體。.fntdef 檔:AddFontToProcess C:\SampleFonts\MSYH.ttf
SelectFont "WE:400,FN:Microsoft YaHei"
ImportRange 32 126
ImportRange 19968 40869
重新執行 TFConvert 即可成功產生 .tinyfnt。同理,若將名稱改為「宋體」也能通過轉換,但建議使用英文名稱以避免潛在相容性問題。
.NET Micro Framework 的中文顯示雖需經過字體轉換流程,但掌握 .fntdef 設定、TFConvert 操作與字體 Name Table 修改技巧後,即可在嵌入式裝置上流暢渲染各種中文字體,滿足產品在地化需求。







