HanzFontMaker程序是基於微軟.net 2.0平台開發的,所以需要先安裝.net 2.0運行時!請用戶自行到微軟官方網站下載安裝。
HanzFontMaker主界面如下圖:
設置好Font和MapSize屬性之后,點擊“輸出字庫文件”按鈕可以在程序目錄得到“data.bin”字庫文件和“head.c”文件。該字庫文件是攜帶自描述信息的,描述信息位於文件的0起始偏移處,共256字節。其中64字節的字庫描述信息和192字節的ASC字符寬高描述信息。由於ASC字符包含數字和字母,很常用,所以在生成的head.c文件中同樣包含了96個ASC字符(每字符2字節)的信息。
對於不同的字體,96個ASC字符可能不是等寬的,所以需要一些描述信息來指示每個ASC字符的寬度和高度。每個字符用2個字節來描述就夠了,分別是寬度和高度;所以有192個字節的ASC字符寬高描述信息。
偏移量 |
字節數 |
名稱 |
描述 |
0 |
2 |
HdrSize |
總是為64。它表示有64字節字庫描述信息。 |
2 |
32 |
DescText |
字庫識別文本。“This is an image as font!” |
34 |
2 |
CharSize |
字符的字節數。 |
36 |
1 |
CharStride |
字符的行掃描寬度(單位是字節)。 |
37 |
1 |
CharLines |
字符的行數(單位是:行)。 |
38 |
1 |
MapWidth |
字符的位圖寬度(單位:點)。 |
39 |
1 |
MapHeight |
字符的位圖高度(單位:點)。 |
40 |
1 |
AscWidth |
最大ASC字符的位圖寬度(單位:點)。 |
41 |
1 |
AscHeight |
最大ASC字符的位圖高度(單位:點)。 |
42 |
1 |
GbkWidth |
最大GBK字符的位圖寬度(單位:點)。 |
43 |
1 |
GbkHeight |
最大GBK字符的位圖高度(單位:點)。 |
44 |
20 |
Reserved |
保留 |
上面表格中的各字段信息用法如下圖所示:
從字庫文件的256偏移處開始就是每個字符的點陣信息了。每個字符占用CharSize字節,所以總共有((96 + 8178) * CharSize)個字節(96個ASC和8178個GBK)。由於每個字符的CharSize是統一的值,所以在字庫中查找字符點陣數據是非常快速的,只需按照給定的字符編碼值計算即可得到點陣數據的偏移地址!
8178個GBK是按照GB2312標准編碼的,范圍是0xa1a1到0xf7fe;共87個區,每區有94個字符;所以有8178個漢字。
字符的取模規則是“橫向左高位”,適合大部分GUI系統使用!
HanzFontMaker還生成字庫的輔助C文件,它包含了每個ASC字符的點陣寬度和高度信息,和字庫文件中的192字節ASC字符寬高描述信息一致,以便開發者將非等寬ASC字符信息編譯在程序ROM中,加快ASC字符的顯示速度!
點擊“編輯字庫文件”按鈕可以打開造字程序,這個功能很強大!為了避免使用者誤將編輯過的字庫文件覆蓋,造字程序僅打開“hanz.bin”文件。如果您需要編輯生成的字庫文件,請把它重命名為“hanz.bin”,然后點擊“編輯字庫文件”按鈕即可!
字庫文件編輯器界面
(第一行顯示ASC字符;后續87行顯示GBK字符,每行94個字符)
字符位圖編輯界面
HanzFontMaker程序支持系統內安裝的所有字體!是目前能轉換字體最多的點陣造字程序。
HanzFontMaker是免費軟件,更強大的體驗就讓您自己來吧!