乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      幾種小字庫的創(chuàng)建方法和對應(yīng)的字模提取方式

       ylw527 2011-01-26
      幾種小字庫的創(chuàng)建方法和對應(yīng)的字模提取方式
      關(guān)于點陣字庫的讀取的文章很多,這里就不再累贅了。直接讀取點陣字庫文件,雖然比較方便,但是有一定的限制。首先,完整的字庫包含超過6000個漢字,體積相對較大,而大多數(shù)時候我們只需要顯示幾百個或更少的漢字。顯然此方式不適于空間占用要求高的場合。其次,程序運行時依賴字庫,不能獨立運行。再者,為了顯示在區(qū)位相距較遠(yuǎn)的字,反復(fù)長距離移動文件指針,也影響效率。

      于是,就有了所謂的“小字庫”,剔除沒有用到的字模,僅僅把需要的字模提取出來。一般是這樣的:

      把字模存入特定的名稱(如以拼音方式命名)數(shù)組,要使用的時候直接從對應(yīng)的數(shù)組讀取。

      優(yōu)點:

      占用空間極少,讀取速度極快!

      缺點:

      它只適用于漢字極少的情況,和內(nèi)碼無關(guān)無法直接通過內(nèi)碼找到字摸,使用時必須手動指定非常麻煩。

      直接用位圖方式

      此種方式用得較少,適應(yīng)于一次顯示一整段字,且重復(fù)的字很少的情況。這個不屬于小字庫的范疇了。

      通過回顧標(biāo)準(zhǔn)字庫的字摸提取方式,應(yīng)該可以找出適應(yīng)于小字庫的提取方式。

      標(biāo)準(zhǔn)16*16點陣字庫的字摸提取流程

       

      優(yōu)點:

      由于字模按照標(biāo)準(zhǔn)的區(qū)位排列,如果不考慮文件指針的移動消耗,字模的定位提取是相當(dāng)方便且高效的。直接由內(nèi)碼得到區(qū)位碼,由區(qū)位碼定位文件指針。完全不用查找或者判斷。這個是標(biāo)準(zhǔn)流程,還可以直接把內(nèi)碼減去0xa1,這樣區(qū)碼和位碼可以不減1。

      可以支持漢字?jǐn)?shù)量不受限制。

      字模位置和區(qū)位碼相關(guān),使用方便。

      缺點:

      前面已經(jīng)提到,這里不再重復(fù)。

      介紹完標(biāo)準(zhǔn)字庫字模提取流程,如果只提取要用到的部分字模,勢必會打亂原來的區(qū)位排列排列。不能直接用區(qū)位碼定位了。下面開始介紹針對小字庫字模提取另外三種方法。

      查找法讀取字庫


      這是比較常用的方法,一般使用自定義數(shù)據(jù)結(jié)構(gòu)數(shù)組,數(shù)組中的每個元素包含一個區(qū)位碼和一個字符數(shù)組用于存放字模。建立小字庫的時候,把區(qū)位碼和對應(yīng)的字模寫進數(shù)組。這是一個以時間換取空間的方法。

      查找法讀取字庫簡單流程

       

      優(yōu)點:

      額外內(nèi)存占用小,幾乎不會浪費空間。每個元素儲存一個字模,僅僅多用了兩個字節(jié)來儲存區(qū)位碼。

      可以支持漢字?jǐn)?shù)量僅受內(nèi)存限制。

      字模位置和區(qū)位碼相關(guān),使用方便。

      缺點:

      速度慢,消耗CPU資源,每讀取一個字模都必須經(jīng)過一番查找和對比。

      改進:可以通過優(yōu)化查找算法,獲得稍微改善。

       

      碼表轉(zhuǎn)換法讀取字庫


      借助表來定位。首先,建立一個94*94的索引表,對應(yīng)94個區(qū)碼和位碼。再建立一個數(shù)組用于儲存字模。建立小字庫的時候,把字模在數(shù)組中位置寫入索引表對應(yīng)的區(qū)位。讀取的時候直接定位到索引表得到重新編排的字庫位置碼,所以我姑且稱之為碼表轉(zhuǎn)換法。這是一種以空間換取時間的方法。

      碼表轉(zhuǎn)換法讀取字庫簡單流程

       

      由于索引表按照標(biāo)準(zhǔn)的區(qū)位生成,直接根據(jù)區(qū)位碼訪問索引表就可以得到字模位置。

      優(yōu)點:

      完全不用查找或者判斷,定位效率很高。

      可以支持漢字?jǐn)?shù)量僅受內(nèi)存限制。

      字模位置和區(qū)位碼相關(guān),使用方便。

      缺點:索引表會占用額外內(nèi)存。這個可以說是最致命的也是唯一的缺點。

      最糟糕的情況:所謂最糟糕的情況,你用到的字中有包含最高區(qū)碼和最高位碼的。那么他的占用空間是:94*94=8836,如果你需要使用超過256個不同的字,那占用空間就是 94*94=8836*2=17672 [因為單字節(jié)能表示的最大數(shù)是256],超過17kb,有可能超過字模本身的體積!幸好這種情況不常見。

      改進:通常只要使用到的 [最高區(qū)號]*[最高位號] 就可以了。還可以優(yōu)化一下剔除低區(qū)位,這時候空間占用為使用到的 [最高區(qū)號-最低區(qū)號]*[最高位號-最低位號]??偠灾瑢τ趨^(qū)位比較集中的字,用表驅(qū)動法還是比較理想的。

       

      Switch法讀取字庫

      通過額外編制一個Switch結(jié)構(gòu)的函數(shù),給出區(qū)位碼,函數(shù)返回字模在數(shù)組中位置。建立字庫的時候,把區(qū)位碼作為case值,把字模位置作為 return 值,寫入函數(shù)。這其實是查找法的變形。

      選擇法讀取字庫簡單流程

       

      優(yōu)點:

      額外內(nèi)存占用小。

      字模位置和區(qū)位碼相關(guān),使用方便。

      缺點:

      速度慢,消耗CPU資源,每讀取一個字模都必須調(diào)用函數(shù)。

      可以支持漢字?jǐn)?shù)量受case 條數(shù)限制,部分編譯器支持的case條目少。

      改進:取決于不同的編譯器對Switch結(jié)構(gòu)的優(yōu)化。且較高級的編譯器支持的case條目,已經(jīng)足夠代表全部區(qū)位碼。

      碼表轉(zhuǎn)換法讀取字庫源程序

      Switch法讀取字庫源程序

      16*16點陣字庫下載

      轉(zhuǎn)載請注明出處 http://blog.csdn.net/PMind


      本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/PMind/archive/2010/12/15/6078166.aspx

        本站是提供個人知識管理的網(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ā)表

        請遵守用戶 評論公約

        類似文章 更多