hzk16理解和簡單使用

2021-10-09 04:33:12 字數 1525 閱讀 6881

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

區號,位號

因此,漢字在漢字型檔中的具體位置計算公式為:94*(區號-1)+位號-1。減1是因為陣列是以0為開始而區號位號是以1為開始的。這僅為以漢字為單位該漢字在漢字型檔中的位置,那麼,如何得到以位元組為單位得到該漢字在漢字型檔中的位置呢?只需乘上乙個漢字字模占用的位元組數即可,即:(94*(區號-1)+位號-1)乙個漢字字模占用位元組數,而按每種漢字型檔的漢字大小不同又會得到不同的結果。以1616點陣字型檔為例,計算公式則為:(94*(區號-1)+(位號-1))*32。漢字型檔文該從該位置起的32位元組資訊即記錄了該字的字模資訊。

示例**:

// an highlighted block

#include

#include

void

disp_hzk16

(vooid)

;// 要讀出的字元

int i,j,k;

char a =0;

qh = inclode[0]

-0xa0

;//區號

wh = inclode[1]

-0xa0

;//位號

offset =(94

*(qh -1)

+(wh -1)

)*32;

printf

("輸出的16位漢字,區號,位號\n");

putchar

(inclode[0]

);putchar

(inclode[1]

);putchar

(',');

printf

("%d,%d\n"

,qh,wh);if

((fp =

fopen

("hzk16"

,"rb"))

==null

)fseek

(fp,offset,

seek_set);

fread

(mat,32,

1,fp)

;fclose

(fp)

;for

(i=0

; i<

16; i++

) a +=8;

} a =0;

}for

(i=0

; i<

16; i++

)printf

("\n");

}printf

("\n");

}int main

(int argc, char *ar**)

漢字型檔HZK16的簡單介紹

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

hzk16的介紹以及簡單的使用方法

hzk16的介紹以及簡單的使用方法 hzk16 字型檔是符合gb2312標準的16 16點陣字型檔,hzk16的gb2312 80支援的漢字有6763個,符號682個。其中一級漢字有3755個,按聲序排列,二級漢字有3008個,按偏旁部首排列。我們在一些應用場合根本用不到這麼多漢字字模,所以在應用時...

基於HZK16的漢字顯示技術

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