日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

漢字任意點陣字庫制作軟件,多國語言點陣字庫制作軟件,漢字點陣,民航電子客票打印,民航客戶管理軟件

 ekylin 2007-05-14
什么是點陣漢字   發(fā)表時間:2007-3-17 14:30:27  天氣狀況:  心情指數(shù):  瀏覽次數(shù):116
所謂一個字的點陣. 其實就是指這個漢字用多少個象素點來描述. 每個象素點顯示為什么顏色, 通常情況下, HZK16采用的是16*16點陣, 即256個象素點描述一個漢字.
這些點的顏色分為兩種, 一種是前景色, 一種是顯示為背景色.

那么,關(guān)于那些點顯示為前景色, 那些點顯示為背景色, 是如何得知的呢??

可以這樣來考慮, 你在紙上比較正正方方的寫一個規(guī)則的楷字, 然后在這個字的從上到下,左到右, 分別畫十七條直線, 那么這

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

現(xiàn)在,找到了一個漢字的點陣, 那么還須要用數(shù)據(jù)來記錄點陣的信息, 通常情況下, 我們會用32個字節(jié)來表示16*16點陣的漢字,

即每一行用二個字節(jié)來記錄十六個象素點的色色彩情況, 0表示背景色, 1表示前景色. 16行其須要32個字節(jié).點陣漢字的原理同時也決定了它的缺點, 他不具務(wù)放大特性, 因為它的顯示是基于被定死的點陣, 放大后, 會產(chǎn)生明顯的鋸齒,非常的難看, 當(dāng)然, 可以進(jìn)行一些光滑處理, 但基本上沒有多在的改觀.但點陣漢字簡易, 對于復(fù)雜漢字, 它比矢量顯示漢字法更快帶.矢量顯示是基于記錄漢字的筆化的. 對于簡單的漢字它比較占優(yōu)勢, 容易放大處理. 但對于復(fù)雜的漢字, 表示起來, 則筆化太多..復(fù)雜.


二. 關(guān)于字庫的建立及其原理.

現(xiàn)在講完了漢字點陣. 也說了一個漢字點陣的存放方式, 但具體的點陣如何存放, 讀者也應(yīng)該了解.

通常情況下, 一般的DOS下的程序都會提供一個漢字庫, 這樣在脫離漢字平臺(如UCDO)的支持下也可以進(jìn)行漢字顯示, 但是這樣會存一個問題, 就是如果每個DOS下的程序員都這么做的話, 就會造成一定的磁盤空間浪費. 所以有的DOS下的程序,針對自己所需要的漢字, 就會定制自己的小型字庫, 那么字庫的制作到底應(yīng)該如何進(jìn)行呢? 下面我們將就這個問題進(jìn)行一些基本的討論.


眾所周知,一個ASCII字符占一個字節(jié),它的數(shù)值從0到255, 那么漢字字符將如何與ASCII字符區(qū)別開來呢?實際上,仔細(xì)觀察ASCII字符表,從第161(即0xa1)個字符開始,后面的字符并不經(jīng)常為E文所使 用。充分利用這一特性,將161-255之間的數(shù)值空間作為漢字的標(biāo)識碼。既然255-161 = 94不能滿足漢字容量的要求,就將每兩個字符并在一塊(即一個漢字占兩個字節(jié)),顯然,94* 94 =8836基本上已經(jīng)滿足了常用漢字個數(shù)的要求。

從以上的討論可以知道, 用二個字節(jié)來表示一個漢字, 其原因就是上面說的, 這個就是我們常說的漢字機(jī)內(nèi)碼, 一個漢字的機(jī)內(nèi)碼是由值都大于0xa1的值組成的.

說完機(jī)內(nèi)碼, 有的朋友可能就會問題, 機(jī)內(nèi)碼與建立漢字字庫有什么關(guān)系呢??

我們常見的標(biāo)準(zhǔn)的漢字字庫HZX16(點陣16*16),HZK24(24*24)兩種.由上面的討論我們得知, 一個漢字點陣須要256個象素點陣來表示, 我們采用一個字節(jié)的8位來表示八個象素, 其須32個字節(jié); 字庫中要存放的是所有常用的漢字的二進(jìn)制點陣數(shù)據(jù), 它的存放是有序的, 下面我們說一下這個順序:

首先.對于"我"字來說, 它的機(jī)內(nèi)碼是0xce,0xd2; 機(jī)內(nèi)碼每個字節(jié)均從0xa1開始, 那么我們已經(jīng)采用的建立點陣字在庫中的索引方法是:

將整個字庫里面的漢字是94*94的二維數(shù)組, 要找任意一個漢字的點陣, 就須要知道這個漢字在這個二維數(shù)組當(dāng)中的X維與Y維.

x維 = (機(jī)內(nèi)碼字節(jié)1-0xa1) & 0x7f;

y維 = (機(jī)內(nèi)碼字節(jié)2-0xa1) & 0x7f;

求漢字在X,Y維后, 那么按照每個漢字占用32個字節(jié), 則可以得出漢字相對于字庫頭的偏移是 offset = (x*94 + y)*32;


其實,X與Y就是漢字的區(qū)位碼, 漢字的區(qū)位碼是從0-94的. 但實際上只用了16-87..

其中一級漢字在16-55..二級漢字在56-87.是按照一定的規(guī)則來確定區(qū)位碼的.對于一級漢字.是按拼音首字母級筆劃.二級漢字是按部首來的.我特意生了一個漢字的區(qū)痊碼,機(jī)內(nèi)碼.在字庫中偏移的文件..大家可以下載來看一下. 可以知道:

啊-------------區(qū)位碼(x = 15, y = 0); offset=b040; 機(jī)內(nèi)碼:(0xb0,0xa1);

所以漢字的區(qū)內(nèi)碼,機(jī)內(nèi)碼,偏移的信息,請下載這個文件查看.

http://www./home/ucgui/HZK_info.rar

其中,區(qū)位碼(x=0-14)與(88-94)都是沒有對應(yīng)漢字的.字庫中實際的對應(yīng)漢字點陣字?jǐn)?shù)為94*72=6768個漢字.

實際上, 一個字庫中有前16*32個字節(jié)沒有表示具體的漢字的, 在字庫里被用來表示什么東西沒有什么具體的要求, 如果說你自己要做一個字庫.那么這一段你可以自己發(fā)揮, 填充為一個中文的符號,笑臉,特別文字什么的.這些沒有具體的要求.

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

在一般的HZK16當(dāng)中, 最前16*32個節(jié)有表示兩個大小的"A"及兩個感嘆號, 一個在圓內(nèi)的"帥"字..大家可以仔細(xì)看一下,其它幾個沒作特別使用.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多