女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于BMP文件格式存儲漢字字庫的漢字顯示解決方案

電子設計 ? 來源:現代電子技術 ? 作者:何英高 ? 2021-03-17 13:48 ? 次閱讀

1 引 言

高通作為全球領先CDMA手機平臺供應商,在國內得到廣大手機設計公司和手機廠商的青睞,其中包括德信無線、上海精佑、賽龍上海和UT斯達康等國內許多手機設計公司和手機廠商。為了支持國內市場,漢字顯示是必不可少的,而高通手機平臺上沒有直接提供完備的漢字顯示解決方案,本文就這個熱點論題,通過對高通手機平臺字符顯示特點進行了分析,具體地給出了基于BMP文件格式存儲漢字字庫的一種漢字顯示方案。

2 高通手機平臺Brew字符顯示原理

高通手機平臺Brew字符顯示由兩部分構成,一部分為上層應用提供一個統一的字符顯示接口部分,另一部分為某一種字符集或字體具體實現部分,這兩個部分是通過虛函數機制綁定在一起。在Brew字符顯示接口統一定義如下:

IFONT AddRef():用于引用記數功能;

IFONT_Release():釋放當前應用程序字符顯示實例;

IFONT_QueryInterface():他根據字符ID檢索當前應用程序字符顯示實例;

IFON_DrawText():他用于顯示具體的文本;

IFONT_MeasureText():他用于計算以象素為單位文本的大小和字符的總數目;

IFONT_GetFontInfo():他用于檢索字符相關信息,比如ascent和descent的值。

從上面的顯示接口定義可見,系統的設計者將字符顯示接口視為一個脫離依賴具體字符顯示的轉換模塊,而字符具體實現部分則需要根據顯示接口每個接口函數給出一個標準實現,功能就是針對某一種字符實現文本顯示,計算文本大小,返回該種字體一些信息等。

例如:高通關于ASCII字符顯示的參考設計中就定義了一組與顯示接口一致的一組函數:

現代電子技術

然后通過指針賦值方式把這組函數與接口函數對應部分關聯起來,即在函數AEEVarBitFont_NewFromBBF內部通過指針賦值方式使顯示接口部分與具體實現部分綁定在一起。

上層應用模塊調用字符顯示模塊的過程如下:

3 高通手機平臺上漢宇字庫的BMP文件存儲結構的設計

在手機平臺上漢字顯示可以采用國標碼或Unicode任何一種編碼方案,但為了信息交換方便,大多數手機開發采用Unicode顯示方式,這里以Unicode為例來說明。傳統的漢字存儲結構采用數組方式,明顯地,字符集這種存儲方式無法直觀地顯示給用戶和軟件開發者,用戶和軟件開發者也很難了解字符集內真正包含了那些字符,再者,當顯示漢字時,系統需要將漢字字模存儲方式轉換為屏幕顯示方式,這將會增加系統開銷,降低運行效率。這里設計了用BMP文件格式來存儲漢字字庫,他保證整個存儲空間沒有明顯增加的同時,能夠使用戶直觀地了解字符集內包含了那些字符,提高系統運行效率。

與現有其他的漢字存儲結構和漢字顯示方法相比,該方法具有3個主要特點:

直觀性強 由于采用BMP圖片存儲結構方式,可以瀏覽漢字字符集中包含的漢字;

運行效率高 由于采用BMP圖片存儲結構方式,使得單個字符的字模存儲方式與屏幕顯示方式保持一致,當顯示漢字時,不需要把漢字字模存儲方式轉換為屏幕顯示方式;

可移植性強、開發周期較短 對上層應用模塊漢字顯示耦合得更好,由于這種方法盡可能地采用了Brew系統現有的字符顯示參考設計和已有的顯示接口機制。

由于漢字的Unicode編碼范圍為u4E00~u9FA5和uF900~uFA2D,如果不在這個范圍內就不是漢字了。為了討論方便,這里考慮漢字Unicode編碼范圍為u4E00~ugFA5,總計有20 901個漢字,他們是連續編碼的。

16*16漢字字庫BMP文件格式描述如下:

從上面的存儲結構可知,他實際就是一幅BMP格式的漢字字庫圖片,這幅BMP圖片就是漢字字符集的二進制表示,他是從BMP圖片格式轉換過來的。這里每個字符字模對應BMP圖片中一個圖片片,字模存儲方式與屏幕顯示方式是一致的。

4 基于BMP文件存儲結構漢字顯示實現

實現本地漢字顯示較早的一種方案基于Native UI,他不需依賴Brew顯示接口。目前較多的漢字顯示方案會涉及到Brew顯示接口,常見漢字顯示解決方案為:

(1) 基于Native UI方案,實現漢字顯示。完全自己開發一套點陣存儲、點陣獲取、點陣顯示、漢字顯示函數,使用者使用特定的漢字顯示函數把漢字顯示出來。該方法具有最大的靈活性,甚至不理睬Brew任何顯示接口機制,直接在上層組件里實現,但這種方法使程序可移植性比較差,對第三方應用程序漢字顯示支持也不方便。

(2) 基于Brew方案,實現漢字顯示。自己開發點陣存儲、點陣獲取、點陣顯示,改造Brew的顯示接口函數,使其能判斷漢字碼,一旦判斷出漢字碼,則使用自己開發的點陣獲取、點陣顯示等把漢字顯示出來。然后把該自己開發的顯示函數綁接到Brew顯示接口上。該方法對點陣的操作更加靈活,工作量較大,開發周期較長,這種方法比較適用已有成熟的點陣操作方法開發者。

這里利用Brew對BMP文件格式的支持,使用BMP文件格式實現對漢字的點陣存儲、點陣獲取、點陣顯示的全過程,并使用Brew的顯示函數實現漢字碼到漢字顯示。這種方法盡可能地使用了Brew系統現有的字符顯示參考設計和已有的顯示接口機制,開發周期較短,是最根本的解決方法,他使得Brew的其他上層應用模塊能很方便實現漢字顯示。這種方法使程序通用性好,可移植性強,支持第三方應用程序開發也較方便等特點。

為了支持第三方軟件廠商集成不同國家文字顯示,高通手機平臺提供一個綁定顯示接口和對應的實現部分的接口函數,通過這個函數就可以把各種不同文字類型顯示方式綁定到Brew統一的顯示接口上,軟件廠商只需要根據具體文字的顯示方式實現具體的接口函數即可。這個接口如下:

各個參數介紹如下

IFont**ppif:漢字接口函數;

const uint16*pwGlyphs:漢字碼表;

int cntGlyphs:漢字總數目;

const CHAR*pbyBitmap:用BMP表示的漢字字庫;

int cbBitmap:用BMP表示的漢字字庫總的字節數目;

int xCHARWid:每個漢字寬度;

int yCHARHeight:每個漢字高度;

int yCHARDescent:點陣打點開始位置在baseline之下的偏移;

uint16 wUndefGlyph:未定義的ASCII字符數目;

int nHalfCHARs:ASCII字符數目;

UTFONTTYPE FontType:漢字類型。

為了實現BMP文件格式存儲結構字庫的漢字顯示方式,主要工作集中于下面兩個方面:

(1) 定義創建字體實例接口函數

在Brew方案中,上層應用模塊都是通過ID創建字體實例,這里可以按照如下方式定義創建字體接口函數。

(2) 實現漢字顯示一組具體的接口函數

由于Brew方案中已經實現了基于BMP格式對ASCII碼顯示支持方式,所以顯示接口函數IFONT_Ad-dRef(),IFONT_Release(),IFONT_QueryInterface的功能已經實現,而漢字顯示方式這三個函數要實現的功能與ASCII是一致的,不需要改動。函數IFONT GetFon-tInfo對于漢字顯示不適用,因為漢字的ascent和descent的值為0,這里只要考慮IFONT_DrawText()和IFONTMeasureText()兩個函數的實現問題。

為了實現IFONT_MeasureText(),在他對應的實現函數內部增加計算一個漢字寬度的相應代碼。

為了實現IFONT_DrawText(),由于Brew提供了基于BMP格式對ASCII碼顯示支持方式,對于漢字顯示關鍵是計算漢字UNICODE碼與BMP格式的漢字字模的對應關系。由于漢字的UNICODE碼是連續,在BMP圖片中字模已經按照UNICODE碼順序排列,對于任何漢字只要計算他與第一個漢字(4E00)的偏移量,然后根據偏移量直接拷貝BMP圖片中該字符的圖片片到顯示緩沖區即可,不需要把單個字符字模轉換為屏幕顯示方式,提高了系統顯示速度。

5 注意事項

在實際開發中,手機軟件開發商一般以點陣形式從第三方購買字庫,為了能夠應用第三方字庫到高通手機平臺上需要轉換成BMP格式的文件。另一個要注意的問題是這里把漢字顯示作為單獨的一個字符集來考慮的,在實際中可以把ASCII,漢字和漢字偏旁部首構成一個字符集來考慮。只要根據不同的碼值分別計算他們各自對應BMP圖形的偏移量即可。

6 結 語

本文就高通手機平臺關于漢字存儲和漢字顯示方式這一熱門論題進行了詳盡討論,論述高通手機平臺Brew字符顯示原理、傳統漢字存儲結構的不足和不同漢字顯示方案的特點,并在論述這些原理和方案的同時提出了一種具有通用強,移植方便和容易擴展的漢字顯示方案,也提出了在實際應用需要注意問題。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 高通
    +關注

    關注

    77

    文章

    7591

    瀏覽量

    192682
  • 手機
    +關注

    關注

    35

    文章

    6932

    瀏覽量

    159257
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    CCG4十六進制文件格式是什么?

    你好,先生, 我可以知道 CCG4 十六進制文件格式嗎? 2055 行是什么意思?
    發表于 05-15 07:22

    stm32g431rbt怎么顯示漢字?

    stm32g431rbt怎么顯示漢字
    發表于 03-10 07:13

    EE-110:ELF和DWARF文件格式快速入門

    電子發燒友網站提供《EE-110:ELF和DWARF文件格式快速入門.pdf》資料免費下載
    發表于 01-05 09:41 ?0次下載
    EE-110:ELF和DWARF<b class='flag-5'>文件格式</b>快速入門

    《DNESP32S3使用指南-IDF版_V1.6》第三十九章 漢字顯示實驗

    出來(④),就可以實現一個漢字顯示。接下來,重點介紹一下漢字的:編碼、字庫顯示等相關知識。39.1.1 字符編碼介紹單片機只能識別0和1
    發表于 01-03 09:24

    百問FB顯示開發圖像處理 - BMP圖像處理

    代表的二進制數含義不一樣罷了。我們可以通過UltraEdit軟件打開圖像文件并查看里面的二進制數排列。 2.1 BMP圖像處理 2.1.1 BMP文件格式解析 ?
    發表于 11-28 13:52

    百問LCD Framebuffer應用開發 - 操作原理

    有點不同,因為漢字的點陣我們是需要通過漢字庫提取出來,并沒有直接提供點陣數組,因此我們程序開頭需要打開漢字庫文件(HZK16),然后再找到相應的位置,提取出漢字的點陣,最后再按
    發表于 11-25 10:37

    EPS文件格式如何轉換 EPS和SVG文件的區別

    EPS文件格式轉換 EPS(Encapsulated PostScript)是一種用于存儲矢量圖形的文件格式,最初由Adobe公司開發。由于EPS文件在打印時能夠保持極高的質量,并且廣
    的頭像 發表于 11-19 10:31 ?1895次閱讀

    我想問下頻率信號如何在TDMS文件格式下保存???

    我想問下頻率信號如何在TDMS文件格式下保存啊?
    發表于 11-12 18:40

    常用對象文件格式

    電子發燒友網站提供《常用對象文件格式.pdf》資料免費下載
    發表于 10-15 09:25 ?0次下載
    常用對象<b class='flag-5'>文件格式</b>

    【AWTK使用經驗】如何裁剪字庫以及如何使用點陣字

    AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案。AWTK如何裁剪字庫在AWTK應用開發過程中可能會遇到添加了某個字符但是顯示不出來
    的頭像 發表于 10-10 08:05 ?499次閱讀
    【AWTK使用經驗】如何裁剪<b class='flag-5'>字庫</b>以及如何使用點陣字

    發掘3D文件格式的無限潛力:打造沉浸式虛擬世界

    在當今數字化時代,3D技術的應用范圍日益廣泛,涵蓋電影后期制作、產品原型設計、虛擬現實(VR)、增強現實(AR)、游戲等眾多領域。而3D文件格式作為3D技術的核心組成部分,對于實現3D數據和模型的存儲、共享和操作至關重要。
    的頭像 發表于 09-26 18:14 ?1816次閱讀
    發掘3D<b class='flag-5'>文件格式</b>的無限潛力:打造沉浸式虛擬世界

    單片機驅動彩屏最簡方案:單片機_RA8889最小開發板驅動控制TFT彩屏介紹(一)

    界面可以采用JPG圖片,因此FLASH容量可以很小。 可以 自建全套漢字字庫 ,比如24x24,32x32點,字庫不大,可以打包存入FLASH,再利用RA8889的DMA讀取,結合芯片BTE算法,可
    發表于 08-22 17:31

    請問stm32g431rbt怎么顯示漢字?

    stm32g431rbt怎么顯示漢字
    發表于 07-22 07:27

    如何在esp32_tft顯示漢字和修改大???

    如何在 esp32_tft 顯示漢字和修改大小? 現在的 16x16 太大。
    發表于 06-28 13:01

    藍牙傳輸漢字是亂碼怎么正常傳輸?

    藍牙傳輸漢字是亂碼,怎么正常傳輸?
    發表于 06-24 08:43