?? 小字庫(kù)diy-.c
字號(hào):
小字庫(kù)DIY
這里的方法是把龐大的十六點(diǎn)陣字庫(kù)(約160kB吧?)中所要用到的幾十個(gè)漢字的字模提取出來,存成新的一個(gè)小字庫(kù)。這樣做的好處是:
1,空間要求小。我下面這個(gè)程序得到的xzku.dat只有1kB字節(jié),幾乎縮小了160kB。 在工業(yè)控制上有時(shí)這點(diǎn)空間是致命的。
2,程序保密,讓人不知所云。
3,實(shí)現(xiàn)速度快。主要是fseek語(yǔ)句節(jié)省時(shí)間,但表現(xiàn)出來的速度快了一半多。
/*MAKE 自造字庫(kù) MAKE*/
main()
{FILE *zkfp, *zk1fp;
unsigned char *s[S_NUMBER];
int len[S_NUMBER], i, j, m;
int qu, wei, l;
long offset;
int a[ZISHU], number = 0, xn;
s[0] = "自造小字庫(kù)顯示軟件";
s[1] = "把所用到的漢字字模提取出來重新組成小字庫(kù),";
s[2] = "使用時(shí)即可把原字庫(kù)拋開。";
s[3] = "愿與各位朋友商榷。";
s[4] = "歡迎常到松鼠之家來";
s[5] = "松鼠拜上。";
zk1fp = fopen("c:\xzku.dat", "wb");
zkfp = fopen("c:\hzk16", "rb");
if (zkfp == NULL) {printf("Can't open the cclib");
exit(0);
}
for(i = 0; i < s_number; i++)
{while(*s[i])
{
qu = *(s[i]++)-0xa0;
wei = *(s[i]++)-0xa0;
l = qu*94+wei;
for(j = 0; j < number&&a[j] != l; j++);
if(j!=number)
continue;
a[number++] = l;
offset = (94l*(qu-1)+(wei-1))*32l;
fseek(zkfp, offset, SEEK_SET);
for(m = 0;m <32;m++)
putc(getc(zkfp), zk1fp);
}
}
fclose(zkfp);
fclose(zk1fp);
printf("\nOK!\n");
}
這僅僅是做小字庫(kù)的程序。顯示的程序只要根據(jù)這個(gè)思路,就能做出來。主要就是用“for(j=0;j < number&&a[j]!=l;j++);”來控制不要有重復(fù)的字模。 技巧在于控制兩段程序漢字出現(xiàn)的順序。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -