目前.Net Micro Framework系統(tǒng)僅支持Tinyfnt字體文件,官方僅提供兩種字庫:
NinaB.tinyfnt,small.tinyfnt。用我后來做的程序打開這兩種字體,發(fā)現(xiàn)它們僅支持如下100字符:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~?°■?
如果要顯示漢字,并且設(shè)置大小、粗細(xì)等等參數(shù),必須要用專門的轉(zhuǎn)換工具把
windows中的ttf字體轉(zhuǎn)換為Tinyfnt字體。
這部分內(nèi)容可以參見我以前寫的文章《
.Net Micro Framework研究—中文顯示》:
http://blog.csdn.net/yefanqiu/archive/2007/11/01/1862300.aspx
其實(shí)上篇文章有點(diǎn)問題,其實(shí) AddFontToProcess C:/Windows/Fonts/Miramo.ttf 指令可以不用,真正起作用的是SelectFont命令中的FN參數(shù)。此外SelectFont命令中的UN參數(shù)是無效的,加這個(gè)參數(shù)和不加這個(gè)參數(shù),轉(zhuǎn)換后的Tinyfnf字體文件二進(jìn)制數(shù)據(jù)完全相同。
我對我以前的字體轉(zhuǎn)換工具又進(jìn)行了改進(jìn),一是重新調(diào)整了界面,二是支持多語言(目前支持英文和簡體中文兩種)。
下面是軟件截圖:
由于官方不公開
Tinyfnt字體的結(jié)構(gòu)文件,自己只好從現(xiàn)成的二進(jìn)制文件進(jìn)行分析了,下面是我對Tinyfnt文件定義的一個(gè)結(jié)構(gòu)體,其主要的參數(shù)如下:
private
class
MFFont
{
public
UInt16
uSize;
//
數(shù)據(jù)長度 +27=文件總長度
public
byte
bytHeight;
//
字體高度
public
UInt16
uGroupNum;
//
字體組個(gè)數(shù)
public
UInt16
uFontNum;
//
字體個(gè)數(shù)
public
UInt16
[] uFontStart;
//
起始字符1
public
UInt16
[] uFontEnd;
//
結(jié)束字符1
}
通過這個(gè)結(jié)構(gòu)體,你就可以還原出這個(gè)字庫中包含的文字內(nèi)容和字體高度了,不過很可惜,通過我目前的解析,還是無法從字體文件中獲知原始字體文件的名稱(如是宋體還是黑體等等?),是否粗體?斜體?等等參數(shù)。
除此之外剩下的字庫內(nèi)容想必就是字體的點(diǎn)陣結(jié)構(gòu)了,具體的內(nèi)容我沒有多加驗(yàn)證,有機(jī)會我再和大家一一探討。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
