什麼是點陣漢字

2021-04-20 08:16:44 字數 2303 閱讀 6822

所謂乙個字的點陣. 其實就是指這個漢字用多少個象素點來描述. 每個象素點顯示為什麼顏色, 通常情況下, hzk16採用的是16*16點陣, 即256個象素點描述乙個漢字.

這些點的顏色分為兩種, 一種是前景色, 一種是顯示為背景色.

那麼,關於那些點顯示為前景色, 那些點顯示為背景色, 是如何得知的呢??

可以這樣來考慮, 你在紙上比較正正方方的寫乙個規則的楷字, 然後在這個字的從上到下,左到右, 分別畫十七條直線, 那麼這

個字就被放置於乙個16*16的方格之內, 這樣我們就可以很明顯的看出, 16*16的方格內的具體哪些點有筆劃經過, 有筆劃經過與沒筆化經過的即就是應該被分別填充上前景色與背景色的點.

現在,找到了乙個漢字的點陣, 那麼還須要用資料來記錄點陣的資訊, 通常情況下, 我們會用32個位元組來表示16*16點陣的漢字,

即每一行用二個位元組來記錄十六個象素點的色色彩情況, 0表示背景色, 1表示前景色. 16行其須要32個位元組.點陣漢字的原理同時也決定了它的缺點, 他不具務放大特性, 因為它的顯示是基於被定死的點陣, 放大後, 會產生明顯的鋸齒,非常的難看, 當然, 可以進行一些光滑處理, 但基本上沒有多在的改觀.但點陣漢字簡易, 對於複雜漢字, 它比向量顯示漢字法更快帶.向量顯示是基於記錄漢字的筆化的. 對於簡單的漢字它比較佔優勢, 容易放大處理. 但對於複雜的漢字, 表示起來, 則筆化太多..複雜.

二. 關於字型檔的建立及其原理.

現在講完了漢字點陣. 也說了乙個漢字點陣的存放方式, 但具體的點陣如何存放, 讀者也應該了解.

通常情況下, 一般的dos下的程式都會提供乙個漢字型檔, 這樣在脫離漢字平台(如ucdo)的支援下也可以進行漢字顯示, 但是這樣會存乙個問題, 就是如果每個dos下的程式設計師都這麼做的話, 就會造成一定的磁碟空間浪費. 所以有的dos下的程式,針對自己所需要的漢字, 就會定製自己的小型字型檔, 那麼字型檔的製作到底應該如何進行呢? 下面我們將就這個問題進行一些基本的討論.

眾所周知,乙個ascii字元佔乙個位元組,它的數值從0到255, 那麼漢字字元將如何與ascii字元區別開來呢?實際上,仔細觀察ascii字元表,從第161(即0xa1)個字元開始,後面的字元並不經常為e文所使用。充分利用這一特性,將161-255之間的數值空間作為漢字的標識碼。既然255-161 = 94不能滿足漢字容量的要求,就將每兩個字元並在一塊(即乙個漢字佔兩個位元組),顯然,94* 94 =8836基本上已經滿足了常用漢字個數的要求。

從以上的討論可以知道, 用二個位元組來表示乙個漢字, 其原因就是上面說的, 這個就是我們常說的漢字機內碼, 乙個漢字的機內碼是由值都大於0xa1的值組成的.

說完機內碼, 有的朋友可能就會問題, 機內碼與建立漢字字型檔有什麼關係呢??

我們常見的標準的漢字字型檔hzx16(點陣16*16),hzk24(24*24)兩種.由上面的討論我們得知, 乙個漢字點陣須要256個象素點陣來表示, 我們採用乙個位元組的8位來表示八個象素, 其須32個位元組; 字型檔中要存放的是所有常用的漢字的二進位制點陣資料, 它的存放是有序的, 下面我們說一下這個順序:

首先.對於"我"字來說, 它的機內碼是0xce,0xd2; 機內碼每個位元組均從0xa1開始, 那麼我們已經採用的建立點陣字在庫中的索引方法是:

將整個字型檔裡面的漢字是94*94的二維陣列, 要找任意乙個漢字的點陣, 就須要知道這個漢字在這個二維陣列當中的x維與y維.

x維 = (機內碼位元組1-0xa1) & 0x7f;

y維 = (機內碼位元組2-0xa1) & 0x7f;

求漢字在x,y維後, 那麼按照每個漢字占用32個位元組, 則可以得出漢字相對於字型檔頭的偏移是 offset = (x*94 + y)*32;

其實,x與y就是漢字的區位碼, 漢字的區位碼是從0-94的. 但實際上只用了16-87..

啊-------------區位碼(x = 15, y = 0); offset=b040; 機內碼:(0xb0,0xa1);

其中,區位碼(x=0-14)與(88-94)都是沒有對應漢字的.字型檔中實際的對應漢字點陣字數為94*72=6768個漢字.

實際上, 乙個字型檔中有前16*32個位元組沒有表示具體的漢字的, 在字型檔裡被用來表示什麼東西沒有什麼具體的要求, 如果說你自己要做乙個字型檔.那麼這一段你可以自己發揮, 填充為乙個中文的符號,笑臉,特別文字什麼的.這些沒有具體的要求.

同理.對於(88---94)*32, 你也可以自己發揮. 然後告知別人如何使用,因為這個沒有標準, 所以一定要有特別的說明,別人才可可以使用.

在一般的hzk16當中, 最前16*32個節有表示兩個大小的"a"及兩個感嘆號, 乙個在圓內的"帥"字..大家可以仔細看一下,其它幾個沒作特別使用.

點陣漢字顯示

由於turbo c應用於dos作業系統下,在使用turbo c進行程式設計時,一般情況下只好使用英文進行人機互動。要是想直接用中文介面,就需要另想他法了。如果使用中文dos系統 如ucdos 則可以解決在字元介面下的漢字顯示問題。也就是說,可以用printf或其他字串函式來輸出漢字。但是,這樣仍然有...

點陣漢字顯示

陣漢字顯示 目錄 dos下的點陣漢字 漢字的內碼 漢字字模 漢字型檔檔案 列印字型檔檔案和hzk12 文件內容 dos下的點陣漢字 你是否碰到過用啟動盤啟動系統後用dir命令得到一串串莫名其妙的字元?有經驗的朋友會告訴你 那是漢字。漢字?你不禁會問 怎麼乙個我乙個也不認識。但那確確實實是漢字,如果你...

點陣漢字顯示

由於turbo c應用於dos作業系統下,在使用turbo c進行程式設計時,一般情況下只好使用英文進行人機互動。要是想直接用中文介面,就需要另想他法了。如果使用中文dos系統 如ucdos 則可以解決在字元介面下的漢字顯示問題。也就是說,可以用printf或其他字串函式來輸出漢字。但是,這樣仍然有...