目前.Net Micro Framework系統僅支援Tinyfnt字型檔案,官方僅提供兩種字庫:NinaB.tinyfnt,small.tinyfnt。用我後來做的程式打開這兩種字型,發現它們僅支援如下100字元:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~°■▪
如果要顯示漢字,并且設定大小、粗細等等參數,必須要用專門的轉換工具把windows中的ttf字型轉換為Tinyfnt字型。
其實上篇文章有點問題,其實 AddFontToProcess C:/Windows/Fonts/Miramo.ttf 指令可以不用,真正起作用的是SelectFont指令中的FN參數。此外SelectFont指令中的UN參數是無效的,加這個參數和不加這個參數,轉換後的Tinyfnf字型檔案二進制資料完全相同。
我對我以前的字型轉換工具又進行了改進,一是重新調整了界面,二是支援多語言(目前支援英文和簡體中文兩種)。
下面是軟體截圖:
由于官方不公開Tinyfnt字型的結構檔案,自己隻好從現成的二進制檔案進行分析了,下面是我對Tinyfnt檔案定義的一個結構體,其主要的參數如下:
private class MFFont
{
public UInt16 uSize; //資料長度 +27=檔案總長度
public byte bytHeight; //字型高度
public UInt16 uGroupNum; //字型組個數
public UInt16 uFontNum; //字型個數
public UInt16[] uFontStart; //起始字元1
public UInt16[] uFontEnd; //結束字元1
}
通過這個結構體,你就可以還原出這個字庫中包含的文字内容和字型高度了,不過很可惜,通過我目前的解析,還是無法從字型檔案中獲知原始字型檔案的名稱(如是宋體還是黑體等等?),是否粗體?斜體?等等參數。
除此之外剩下的字庫内容想必就是字型的點陣結構了,具體的内容我沒有多加驗證,有機會我再和大家一一探讨。