嵌入式HZK16字型檔顯示

2021-09-25 09:33:34 字數 2364 閱讀 8962

#include #include #include void read_hzk16(const unsigned char *s, char* chs)    

int size = 32;

unsigned long offset=((s[0]-0xa1)*94+(s[1]-0xa1))*size; //找出漢字在hzk16中的偏移位置

fseek(fp,offset,seek_set); //檔案指標偏移到要找的漢字處

fread(chs,1,size,fp); //讀取該漢字的字模

fclose(fp);

}

void display_hzk16(const char* chs)

for (j = 7; j >= 0; j--)

else

}return 0;

}公升級版本,支援放大、包邊

#include #include #include #include #define black 'x'

#define white '-'

#define edge 'o'

// gb2312 簡體 16x16

void read_hzk16(const unsigned char *s, char* chs)    

int size = 32;

unsigned long offset=((s[0]-0xa1)*94+(s[1]-0xa1))*size; //找出漢字在hzk16中的偏移位置   

ret = fseek(fp,offset,seek_set); //檔案指標偏移到要找的漢字處

assert(ret == 0);

ret = fread(chs,1,size,fp);    //讀取該漢字的字模

assert(ret == size);

fclose(fp);    }

// gb2312 繁體(簡轉繁) 16x16

void read_fanti_hzk16(const unsigned char *s, char* chs)    

int size = 32;

unsigned long offset=((s[0]-0xa1)*94+(s[1]-0xa1))*size; //找出漢字在hzk16中的偏移位置 

ret = fseek(fp,offset,seek_set); //檔案指標偏移到要找的漢字處  

assert(ret == 0);   

ret = fread(chs,1,size,fp);    //讀取該漢字的字模

assert(ret == size);

fclose(fp);    }

// gbk 字型檔 16x16 相容gb2312簡體 擴充套件了繁體

void read_gbk16(const unsigned char *s, char* chs)    

int size = 32;

int qh = s[0] - 0x81;

int wh = (s[1] < 0x7f) ? (s[1] - 0x40) : (s[1] - 0x41);

unsigned long offset=(qh*190+wh)*size; //找出漢字在字型檔中的偏移位置 

ret = fseek(fp,offset,seek_set); //檔案指標偏移到要找的漢字處

assert(ret == 0);   

ret = fread(chs,1,size,fp);    //讀取該漢字的字模

assert(ret == size);

fclose(fp);    

}     

// ascii 16x8

void read_asc16(const unsigned char *s, char* asc)    

int size = 16;

unsigned long offset=s[0]*size;  

ret = fseek(fp,offset,seek_set); 

assert(ret == 0);   

ret = fread(asc,1,size,fp); 

assert(ret == size);

fclose(fp);    } 

void show(const char* p, int row, int col)

printf("%c", p[i]);

}printf("\n\n");}

void bit2char(const char* chs, int size, char* font) 

else

}return 0;

}

hzk16理解和簡單使用

一般我們使用16x16的點陣宋體字庫,所謂16x16,是每乙個漢字在縱 橫各16點的區域內顯示的。不過後來又有了hzk12 hzk24,hzk32和hzk48字型檔及黑體 楷體和隸書字型檔。雖然漢字型檔種類繁多,但都是按照區位的順序排列的。前乙個位元組為該漢字的區號,後乙個位元組為該字的位號。每乙個...

基於HZK16的漢字顯示技術

國標漢字字符集 gb2312 80 在漢字作業系統中以漢字型檔的形式提供,並對漢字型檔的結構做了統一規定。漢字型檔的結構如圖 hzk16的gb2312 80支援的漢字有6763個,符號682個。字型檔有94個區,其中一級漢字有3755個,按聲序排列,二級漢字有3008個,按偏旁部首排列。每個區有94...

漢字型檔HZK16的簡單介紹

hzk16 字型檔是符合gb2312標準的16 16點陣字型檔,hzk16的gb2312 80支援的漢字有6763個,符號682個。其中一級漢字有3755個,按聲序排列,二級漢字有3008個,按偏旁部首排列。我們在一些應用場合根本用不到這麼多漢字字模,所以在應用時就可以只提取部分字型作 為己用。hz...