今天在讀乙個板子上的**時看到了關於點陣字型檔的程式設計,翻遍了整個網路才找到一點資料,以下是來自網路和我自己整理的一點資料。
一般我們使用16*16的點陣宋體字庫,所謂16*16,是每乙個漢字在縱、橫各16點的區域內顯示的。不過後來又有了hzk12、hzk24,hzk32和hzk48字型檔及黑體、楷體和隸書字型檔。雖然漢字型檔種類繁多,但都是按照區位的順序排列的。前乙個位元組為該漢字的區號,後乙個位元組為該字的位號。每乙個區記錄94個漢字,位號則為該字在該區中的位置。因此,漢字在漢字型檔中的具體位置計算公式為:94*(區號-1)+位號-1。減1是因為陣列是以0為開始而區號位號是以1為開始的。這僅為以漢字為單位該漢字在漢字型檔中的位置,那麼,如何得到以位元組為單位得到該漢字在漢字型檔中的位置呢?只需乘上乙個漢字字模占用的位元組數即可,即:(94*(區號-1)+位號-1)*乙個漢字字模占用位元組數,而按每種漢字型檔的漢字大小不同又會得到不同的結果。
以16*16點陣字型檔為例,計算公式則為:(94*(區號-1)+(位號-1))*32。
漢字型檔文該從該位置起的32位元組資訊即記錄了該字的字模資訊。
了解點陣漢字及漢字型檔的構成原理後,顯示漢字就變得簡單。以16*16點陣字型檔為例,通常的方法是:將檔案工作指標移到需要的漢字字模處、將漢字型檔檔案讀入一2*16陣列再用for迴圈一位位地顯示。即將漢字分為16行,每行用2個位元組表示,每個位元組8位,則2*8=16個位,當位為1時,表示該位顯示色彩。
#include "graphics.h"
#include "stdio.h"
main()
exemple:
?? ? if ((*str > 128) && (*(str+1) > 128))
?? ?
?? ? ? ? ? ? ? else
?? ? ? ? ? ? ?
?? ? ? ? ? str++;
?? ? ? ? x+=16;
?? ? ? ? xoffset += 16;?
?? ? ? } ?
static void setpixel (rmuint32 x, rmuint32 y, rmuint32 colour, rmuint8 *posd, rmuint32 w, rmuint32h)
漢字點陣字型檔原理
漢字點陣字型檔原理 一 漢字編碼 1.區位碼 在國標gd2312 80中規定,所有的國標漢字及符號分配在乙個94行 94列的方陣中,方陣的每一行稱為乙個 區 編號為01區到94區,每一列稱為乙個 位 編號為01位到94位,方陣中的每乙個漢字和符號所在的區號和位號組合在一起形成的四個阿拉伯數字就是它們...
漢字點陣字型檔原理
在國標gd2312 80中規定,所有的國標漢字及符號分配在乙個94行 94列的方陣中,方陣的每一行稱為乙個 區 編號為01區到94區,每一列稱為乙個 位 編號為01位到94位,方陣中的每乙個漢字和符號所在的區號和位號組合在一起形成的四個阿拉伯數字就是它們的 區位碼 區位碼的前兩位是它的區號,後兩位是...
點陣字型檔結構以及點陣字顯示的實現原理
點陣字型檔結構以及點陣字顯示的實現原理 2008 10 08 14 32 在 dos 下作遊戲要實現漢字或英文的輸出,一般都是使用的點陣字型檔技術。這樣可以使程式有更好的相容性。那麼我們如何在程式中使用點陣字型檔呢,這片文件將會講解這個。先講講什麼是點陣字型檔,我首先需要理解的是點陣字型檔是乙個資料...