專利名稱:一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮及解壓方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種字庫(kù)的壓縮及解壓方法,尤其是一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓 縮及解壓方法。
背景技術(shù):
當(dāng)前,各種便攜式電子設(shè)備在人們?nèi)粘I钪羞\(yùn)用十分廣泛,例如移動(dòng)電話、PDA、 掌上電腦等等。但是這些設(shè)備還無(wú)法同PC機(jī)相提并論,在運(yùn)算性能、讀取速度、存儲(chǔ)空間等 方面都無(wú)法與PC機(jī)相比較。手機(jī)、PDA等無(wú)線手持設(shè)備的文字顯示功能是其多種功能中最基本的功能。而字 體的存儲(chǔ)和顯示的基本要求是存儲(chǔ)空間盡可能小,顯示速度盡可能快,而這兩者又是相互 矛盾的?,F(xiàn)有的字庫(kù)處理方式有兩種一.優(yōu)先考慮顯示效率,對(duì)字庫(kù)不進(jìn)行壓縮。二.優(yōu)先考慮存儲(chǔ)空間,對(duì)字體點(diǎn)陣進(jìn)行用高壓縮比算法進(jìn)行壓縮。方法一不對(duì)字體進(jìn)行壓縮,會(huì)占用比較大的存儲(chǔ)空間;方法二用高壓縮比算法,對(duì) 于低配置的無(wú)線手持設(shè)備來(lái)說(shuō),一來(lái)運(yùn)算量太大,二來(lái)會(huì)嚴(yán)重降低顯示速度。所以需要一種 壓縮方式,既能有效的減小存儲(chǔ)空間,又能不影響顯示速度。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮及解壓的方法,該方法 利用字庫(kù)中連續(xù)0字節(jié)比較多的特點(diǎn)對(duì)字節(jié)0進(jìn)行壓縮,既考慮了字體點(diǎn)陣的壓縮比,又兼 顧了字體的顯示效率。本發(fā)明所提供的一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮方法,包括以下步驟(1)設(shè)計(jì)結(jié)構(gòu)記錄每個(gè)字體的點(diǎn)陣信息,其中,為每個(gè)字體分配一個(gè)結(jié)構(gòu),用于記 錄字體點(diǎn)陣在字庫(kù)中的地址和字體點(diǎn)陣的長(zhǎng)度;(2)處理每個(gè)字體的點(diǎn)陣,將字體點(diǎn)陣中連續(xù)的0記錄為(0,N)的形式,其中,N為 連續(xù)0的個(gè)數(shù);(3)將所有字體的結(jié)構(gòu)信息按字體編碼順序?qū)懭胱謳?kù)文件,然后將壓縮后的字體 點(diǎn)陣按編碼順序依次寫(xiě)入字庫(kù)文件。在步驟⑵中,如果字體點(diǎn)陣全為0,則記錄該字體點(diǎn)陣的地址為0 ;如果字體點(diǎn)陣 不全為0,則需在該字體結(jié)構(gòu)中記錄下該字體在字庫(kù)中的地址和長(zhǎng)度。本發(fā)明所提供一種對(duì)上述無(wú)線終端系統(tǒng)的字庫(kù)壓縮方法進(jìn)行解壓的方法,包括以 下步驟(1)根據(jù)要顯示字體的編碼獲取字體的結(jié)構(gòu)信息,從而得到字體壓縮后點(diǎn)陣的存 儲(chǔ)地址和長(zhǎng)度;(2)根據(jù)字體點(diǎn)陣地址和長(zhǎng)度得到壓縮后的點(diǎn)陣,然后遍歷點(diǎn)陣,得到字體點(diǎn)陣的未壓縮數(shù)據(jù),其中,遇到0則取得0后的下一個(gè)數(shù)據(jù)把0的數(shù)量進(jìn)行擴(kuò)展;(3)將解壓后的字體點(diǎn)陣在無(wú)線終端系統(tǒng)的顯示器上顯示。在步驟(2)中,如果字體結(jié)構(gòu)的地址為0,說(shuō)明此字體的點(diǎn)陣全部為0,如果字體結(jié) 構(gòu)的地址不為0,則根據(jù)地址和長(zhǎng)度字段得到該字體壓縮后的點(diǎn)陣。因?yàn)樽煮w點(diǎn)陣中0的數(shù)量較多,本發(fā)明只對(duì)字體點(diǎn)陣中的0進(jìn)行壓縮,將連續(xù)的0 記錄為(0,N),并對(duì)點(diǎn)陣全為0的字體進(jìn)行標(biāo)記,并不實(shí)際存儲(chǔ)這些數(shù)據(jù),所以能極大提高 壓縮率且不影響顯示效率。與現(xiàn)有的方法相比,本發(fā)明提供的壓縮及解壓方法,簡(jiǎn)單有效 的對(duì)字庫(kù)進(jìn)行了壓縮,解決了傳統(tǒng)方法不壓縮占用空間大和用高壓縮比算法壓縮顯示效率 低、解壓運(yùn)算復(fù)雜等問(wèn)題,非常適合低硬件配置的嵌入式設(shè)備中使用。
圖1是本發(fā)明的字庫(kù)壓縮方法的流程圖。圖2是本發(fā)明的字庫(kù)解壓方法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步的闡述。請(qǐng)參閱圖1,一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮方法,包括下列步驟(1)因?yàn)槊總€(gè)字體的點(diǎn)陣需要進(jìn)行壓縮,每個(gè)字體點(diǎn)陣長(zhǎng)度不再一樣,所以需要一 個(gè)結(jié)構(gòu)記錄字體的開(kāi)始位置和壓縮后字體點(diǎn)陣的長(zhǎng)度。設(shè)計(jì)結(jié)構(gòu)記錄每個(gè)字體的點(diǎn)陣信 息,為每個(gè)字體分配一個(gè)結(jié)構(gòu),用于存儲(chǔ)字體點(diǎn)陣在字庫(kù)中的地址和字體點(diǎn)陣的長(zhǎng)度,然后 分配足夠的空間用于存儲(chǔ)所有的字體點(diǎn)陣。(2)處理每個(gè)字體的點(diǎn)陣,得到要壓縮的字體點(diǎn)陣。對(duì)于字體點(diǎn)陣全為0的字體,不需要記錄其具體的點(diǎn)陣,可以利用結(jié)構(gòu)中的地址 字段,將其設(shè)置為0,來(lái)標(biāo)志此字體的點(diǎn)陣全部為0。判斷字體點(diǎn)陣是否全部為0,如果字體點(diǎn)陣全為0,則記錄該字體結(jié)構(gòu)點(diǎn)陣的地址 為0 ;如果字體點(diǎn)陣不全為0,則需在此字體結(jié)構(gòu)中記錄下此字體在字庫(kù)中的地址和長(zhǎng)度。 其中,將字體點(diǎn)陣中連續(xù)的0記錄為(0,N)的形式,N為連續(xù)0的個(gè)數(shù)。(3)計(jì)算出字體點(diǎn)陣在字庫(kù)中的地址和長(zhǎng)度,填入字體結(jié)構(gòu)。(4)字體壓縮完畢后,將所有字體的結(jié)構(gòu)信息按字體編碼順序?qū)懭胱謳?kù)文件,然后 將壓縮候字體點(diǎn)陣按編碼順序依次寫(xiě)入字庫(kù)文件。在步驟(3)中,所述字體結(jié)構(gòu)中的字體點(diǎn)陣的地址可以在寫(xiě)入字庫(kù)文件之前通過(guò) 計(jì)算得到,計(jì)算方法為由于字庫(kù)中字體個(gè)數(shù)是確定的,每個(gè)字體結(jié)構(gòu)大小是確定的,因此 通過(guò)字體個(gè)數(shù)和字體結(jié)構(gòu)就可以計(jì)算出第一個(gè)字體點(diǎn)陣的起始地址,然后第一個(gè)字體的起 始地址加上第一個(gè)字體點(diǎn)陣的長(zhǎng)度就可以得出第二個(gè)字體點(diǎn)陣的起始地址,依次類推可以 計(jì)算出所有字體在字庫(kù)中的地址。需要指出的是,本發(fā)明中所涉及的結(jié)構(gòu)可以根據(jù)需要添加其他內(nèi)容,例如如果字 庫(kù)中每個(gè)字的編碼是不連續(xù)的,則在結(jié)構(gòu)中添加字體的ID標(biāo)識(shí),以便進(jìn)行查找。請(qǐng)參見(jiàn)圖2,一種對(duì)上述無(wú)線終端系統(tǒng)的字庫(kù)壓縮方法進(jìn)行解壓的方法,包括以下 步驟
(1)根據(jù)要顯示字體的編碼獲取字體的結(jié)構(gòu)信息,從而得到字體壓縮后點(diǎn)陣的存 儲(chǔ)地址和長(zhǎng)度;(2)根據(jù)字體點(diǎn)陣地址和長(zhǎng)度得到壓縮后的點(diǎn)陣,然后遍歷點(diǎn)陣,得到字體點(diǎn)陣的 未壓縮數(shù)據(jù),其中,遇到0則取得0后的下一個(gè)數(shù)據(jù)把0的數(shù)量進(jìn)行擴(kuò)展;(3)將解壓后的字體點(diǎn)陣在無(wú)線終端系統(tǒng)的顯示器上顯示。在步驟(2)中,如果字體結(jié)構(gòu)的地址為0,說(shuō)明此字體的點(diǎn)陣全部為0,如果字體結(jié) 構(gòu)的地址不為0,則根據(jù)地址和長(zhǎng)度字段得到該字體壓縮后的點(diǎn)陣。通過(guò)上述實(shí)施例,本發(fā)明目的已經(jīng)被完全有效的達(dá)到了。熟悉該項(xiàng)技藝的人士應(yīng) 該明白本發(fā)明包括但不限于上面具體實(shí)施方式
中描述的內(nèi)容。任何不偏離本發(fā)明功能和結(jié) 構(gòu)原理的修改都將包括在權(quán)利要求書(shū)的范圍中。
權(quán)利要求
一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮方法,包括以下步驟(1)設(shè)計(jì)結(jié)構(gòu)記錄每個(gè)字體的點(diǎn)陣信息,其中,為每個(gè)字體分配一個(gè)結(jié)構(gòu),用于記錄字體點(diǎn)陣在字庫(kù)中的地址和字體點(diǎn)陣的長(zhǎng)度;(2)處理每個(gè)字體的點(diǎn)陣,將字體點(diǎn)陣中連續(xù)的0記錄為(0,N)的形式,其中,N為連續(xù)0的個(gè)數(shù);(3)將所有字體的結(jié)構(gòu)信息按字體編碼順序?qū)懭胱謳?kù)文件,然后將壓縮后的字體點(diǎn)陣按編碼順序依次寫(xiě)入字庫(kù)文件。
2.如權(quán)利要求1所述的字庫(kù)壓縮方法,其特征在于,在步驟(2)中,如果字體點(diǎn)陣全為 0,則記錄該字體點(diǎn)陣的地址為0 ;如果字體點(diǎn)陣不全為0,則需在該字體結(jié)構(gòu)中記錄下該字 體在字庫(kù)中的地址和長(zhǎng)度。
3.如權(quán)利要求1或2所述的字庫(kù)壓縮方法,其特征在于,在步驟(1)中,所述字體結(jié)構(gòu) 中的字體點(diǎn)陣的地址可以在寫(xiě)入字庫(kù)文件之前通過(guò)計(jì)算得到,計(jì)算方法為由于字庫(kù)中字 體個(gè)數(shù)是確定的,每個(gè)字體結(jié)構(gòu)大小是確定的,因此通過(guò)字體個(gè)數(shù)和字體結(jié)構(gòu)就可以計(jì)算 出第一個(gè)字體點(diǎn)陣的起始地址,然后第一個(gè)字體的起始地址加上第一個(gè)字體點(diǎn)陣的長(zhǎng)度就 可以得出第二個(gè)字體點(diǎn)陣的起始地址,依次類推可以計(jì)算出所有字體在字庫(kù)中的地址。
4.如權(quán)利要求1或2所述的字庫(kù)壓縮方法,其特征在于,如果字庫(kù)中每個(gè)字的編碼是不 連續(xù)的,則在結(jié)構(gòu)中添加字體的ID標(biāo)識(shí),以便進(jìn)行查找。
5.如權(quán)利要求3所述的字庫(kù)壓縮方法,其特征在于,如果字庫(kù)中每個(gè)字的編碼是不連 續(xù)的,則在結(jié)構(gòu)中添加字體的ID標(biāo)識(shí),以便進(jìn)行查找。
6.一種對(duì)權(quán)利要求1或2所述的字庫(kù)壓縮方法進(jìn)行字庫(kù)解壓的方法,包括以下步驟(1)根據(jù)要顯示字體的編碼獲取字體的結(jié)構(gòu)信息,從而得到字體壓縮后點(diǎn)陣的存儲(chǔ)地 址和長(zhǎng)度;(2)根據(jù)字體點(diǎn)陣地址和長(zhǎng)度得到壓縮后的點(diǎn)陣,然后遍歷點(diǎn)陣,得到字體點(diǎn)陣的未壓 縮數(shù)據(jù),其中,遇到0則取得0后的下一個(gè)數(shù)據(jù)把0的數(shù)量進(jìn)行擴(kuò)展;(3)將解壓后的字體點(diǎn)陣在無(wú)線終端系統(tǒng)的顯示器上顯示。
7.如權(quán)利要求6所述的字庫(kù)解壓方法,其特征在于,在步驟(2)中,如果字體結(jié)構(gòu)的地 址為0,說(shuō)明此字體的點(diǎn)陣全部為0,如果字體結(jié)構(gòu)的地址不為0,則根據(jù)地址和長(zhǎng)度字段得 到該字體壓縮后的點(diǎn)陣。
8.一種對(duì)權(quán)利要求3所述的字庫(kù)壓縮方法進(jìn)行字庫(kù)解壓的方法,包括以下步驟(1)根據(jù)要顯示字體的編碼獲取字體的結(jié)構(gòu)信息,從而得到字體壓縮后點(diǎn)陣的存儲(chǔ)地 址和長(zhǎng)度;(2)根據(jù)字體點(diǎn)陣地址和長(zhǎng)度得到壓縮后的點(diǎn)陣,然后遍歷點(diǎn)陣,得到字體點(diǎn)陣的未壓 縮數(shù)據(jù),其中,遇到0則取得0后的下一個(gè)數(shù)據(jù)把0的數(shù)量進(jìn)行擴(kuò)展;(3)將解壓后的字體點(diǎn)陣在無(wú)線終端系統(tǒng)的顯示器上顯示。
9.如權(quán)利要求8所述的字庫(kù)解壓方法,其特征在于,在步驟(2)中,如果字體結(jié)構(gòu)的地 址為0,說(shuō)明此字體的點(diǎn)陣全部為0,如果字體結(jié)構(gòu)的地址不為0,則根據(jù)地址和長(zhǎng)度字段得 到該字體壓縮后的點(diǎn)陣。
全文摘要
本發(fā)明涉及一種基于無(wú)線終端系統(tǒng)的字庫(kù)壓縮及解壓方法,該方法利用字體點(diǎn)陣中0的數(shù)量較多的特點(diǎn),只對(duì)字體點(diǎn)陣中的0進(jìn)行壓縮,將連續(xù)的0記錄為(0,N),N為0的個(gè)數(shù),并對(duì)點(diǎn)陣全為0的字體進(jìn)行標(biāo)記,并不實(shí)際存儲(chǔ)這些數(shù)據(jù)。本發(fā)明提供的壓縮及解壓方法,可以簡(jiǎn)單有效的對(duì)字庫(kù)進(jìn)行壓縮,適合低硬件配置的嵌入式設(shè)備中使用。
文檔編號(hào)G06F17/22GK101950283SQ20101027137
公開(kāi)日2011年1月19日 申請(qǐng)日期2010年8月31日 優(yōu)先權(quán)日2010年8月31日
發(fā)明者周彥青 申請(qǐng)人:上海聞泰電子科技有限公司