|
|
這里主要講PCtoLCD這個(gè)軟件,它可以生成中英文數(shù)字混合的字符串的字模數(shù)據(jù),可選擇字體,大小,并且可獨(dú)立調(diào)整文字的長(zhǎng)和寬,生成任意形狀的字符。
界面截圖如下:
我們來了解下PCtoLCD這個(gè)軟件,可以生成中英文數(shù)字混合的字符串的字模數(shù)據(jù),可選擇字體,大小,并且可獨(dú)立調(diào)整文字的長(zhǎng)和寬,生成任意形狀的字符。
界面截圖如下:

使用方法介紹:
0.生成自定義的小字庫:
0.使用PCTOLCD的各種調(diào)整功能調(diào)整出您需要的文字樣式,如字體,字樣(下劃,傾斜,加粗),大小(各種點(diǎn)陣大小的字體,可鎖定點(diǎn)陣本身大小(如16*16),然后在這個(gè)固定的點(diǎn)陣大小內(nèi)調(diào)節(jié)文字的大小(例如在16*16的點(diǎn)陣中居中顯示12*12大小的漢字),各項(xiàng)配置大概如下圖,具體的要根據(jù)自己的需要修改:
字模選項(xiàng)配置如下圖:
1.將您需要的漢字和符號(hào)集中形成一個(gè)文本文件
2.使用“導(dǎo)入文本”的按鈕
3.建議選中"生成索引文件"
4.點(diǎn)“開始生成”按鈕,選擇生成的字庫文件名
5.然后耐心等待一段時(shí)間(與處理文本大小有關(guān)),在此期間建議不要?jiǎng)渔I盤和鼠標(biāo)。
6.字庫生成完畢.
生成的索引文件,如下圖:
生成國(guó)標(biāo)一二級(jí)漢字庫(生成的文件,包含了日常需要的所有字符、漢字,生成的文件大概1.3MB)
0.使用PCTOLCD的各種調(diào)整功能調(diào)整出您需要的文字樣式,如字體,字樣(下劃,傾斜,加粗),大小(各種點(diǎn)陣大小的字體,可鎖定點(diǎn)陣本身大小(如16*16),然后在這個(gè)固定的點(diǎn)陣大小內(nèi)調(diào)節(jié)文字的大小(例如在16*16的點(diǎn)陣中居中顯示12*12大小的漢字).
1.使用“導(dǎo)入文本”的按鈕
2.點(diǎn)右下角"生成國(guó)標(biāo)漢字庫"按鈕.
3.選擇字庫文件名后單擊確定
4.耐心等待一段時(shí)間后既得到生成的漢字庫(時(shí)間視具體機(jī)器而定).
重要提示:
生成漢字庫結(jié)構(gòu)介紹
本軟件使用的漢字庫采用與HZK16相近似的結(jié)構(gòu),即按照輸入漢字的順序依次排列各漢字的點(diǎn)陣數(shù)據(jù),以生成的16*16點(diǎn)陣漢字庫舉例介紹
16*16點(diǎn)陣漢字庫
點(diǎn)陣大小16*16,所以每個(gè)漢字點(diǎn)陣數(shù)據(jù)占用32個(gè)字節(jié).用戶要使用生成的16*16點(diǎn)陣小字庫中的點(diǎn)陣數(shù)據(jù),可以在程序中采用如下算法:
0.在生成的字庫漢字列表中得到該漢字的偏移量,也就是漢字的記錄號(hào)HzNum
1.將其*32(HzNum*32)即可得出該漢字點(diǎn)陣在字庫中的偏移地址.
3.以這個(gè)偏移地址為起點(diǎn),連續(xù)讀取文件中的32個(gè)字節(jié),既為該漢字的點(diǎn)陣信息.
實(shí)際上,對(duì)于本軟件生成的16*16點(diǎn)陣的國(guó)標(biāo)漢字庫是采用區(qū)位碼排列的,所以與標(biāo)準(zhǔn)的HZK16結(jié)構(gòu)是一樣的,完全可以互換使用.
例如生成一個(gè)24*48點(diǎn)陣,楷體,傾斜的漢字庫,
0.由于每個(gè)漢字占用24*48/8= 144個(gè)字節(jié),所以用戶可先讀取生成的索引列表找到該漢字的記錄號(hào).
1.將記錄號(hào)*144即得到該漢字在字庫中的偏移地址.
2.以這個(gè)偏移地址為起點(diǎn),在字庫文件中連續(xù)讀取144個(gè)字節(jié),即為該漢字的點(diǎn)陣信息.
知道了以上信息,可以在檢索字模時(shí)知道如何編程了。最后如何將字模文件用到頭文件里,如下:
同時(shí),在編程檢索該字模文件時(shí),編程如下:
#include "GB1616.h" //16*16漢字字模
void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int f,unsigned int b)
{
unsigned int i,j,k;
LCD_SetArea(x, y, x+16-1, y+16-1);
for (k=0;k<22;k++) {
if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){
for(i=0;i<32;i++) {
unsigned short m=codeGB_16[k].Msk[ i];
for(j=0;j<8;j++) {
if((m&0x80)==0x80) {
LCD_Write_Data(f>>8);
LCD_Write_Data(f);
}
else {
LCD_Write_Data(b>>8);
LCD_Write_Data(b);
}
m<<=1;
}
}
}
}
}
同樣的英文字符,跟上述方法一樣。以上的過程大概就是使用PCtoLCD軟件設(shè)計(jì)字模,并將字模用到程序中,同時(shí)檢索字模的程序該如何編寫都有了。
|
|