漢字型檔HZK16的簡單介紹

2021-07-25 03:28:00 字數 937 閱讀 7272

hzk16 字型檔是符合gb2312標準的16×16點陣字型檔,hzk16的gb2312-80支援的漢字有6763個,

符號682個。其中一級漢字有3755個,按聲序排列,二級漢字有3008個,按偏旁部首排列。

我們在一些應用場合根本用不到這麼多漢字字模,所以在應用時就可以只提取部分字型作

為己用。

hzk16字型檔裡的16×16漢字一共需要256個點來顯示,也就是說需要32個位元組才能達到顯示

乙個普通漢字的目的。

我們知道乙個gb2312漢字是由兩個位元組編碼的,範圍為a1a1~fefe。a1-a9為符號區,b0到

f7為漢字區。每乙個區有94個字元(注意:這只是編碼的許可範圍,不一定都有字型對應,

比如符號區就有很多編碼空白區域)。下面以漢字「我」為例,介紹如何在hzk16檔案中找到

它對應的32個位元組的字模資料。

前面說到乙個漢字佔兩個位元組,這兩個中前乙個位元組為該漢字的區號,後乙個位元組為該字

的 位號。其中,每個區記錄94個漢字,位號為該字在該區中的位置。所以要找到「我」在

hzk16庫中的位置就必須得到它的區碼和位碼。(為了區別使用了區碼和區號,其實是乙個

東西,別被我誤導了)

區碼:區號(漢字的第乙個位元組)-0xa0

(因為漢字編碼是從0xa0區開始的,所以檔案最前面就是從0xa0區開始,要算出相對區碼)

位碼:位號(漢字的第二個位元組)-0xa0

這樣我們就可以得到漢字在hzk16中的絕對偏移位置:

offset=(94*(區碼-1)+(位碼-1))*32

註解:

1、區碼減1是因為陣列是以0為開始而區號位號是以1為開始的

2、(94*(區號-1)+位號-1)是乙個漢字字模占用的位元組數

3、最後乘以32是因為漢字型檔文應從該位置起的32位元組資訊記錄該字的字模資訊(前面提到乙個漢字要有32個位元組顯示)

基於HZK16的漢字顯示技術

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

hzk16理解和簡單使用

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

嵌入式HZK16字型檔顯示

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中的偏移位置 fse...