在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

    關注

    76

    文章

    7498

    瀏覽量

    190908
  • 手機
    +關注

    關注

    35

    文章

    6891

    瀏覽量

    157888
收藏 人收藏

    評論

    相關推薦

    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

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

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

    常用對象文件格式

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

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

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

    12864B 帶漢字庫的液晶屏 與 arduino 連接 ,你是否順利顯示

    arduino 驅動帶漢字庫的12864B
    的頭像 發表于 05-20 14:16 ?1927次閱讀
    12864B 帶<b class='flag-5'>漢字庫</b>的液晶屏 與 arduino 連接 ,你是否順利<b class='flag-5'>顯示</b>

    visual programmer打開的文件格式有.s19, .hex , .sx 三種文件格式有什么區別嗎?

    st visual programmer打開的文件格式有.s19, .hex,.sx三種文件格式有什么區別嗎?是不是不同芯片的文件格式不一樣,還是所有的芯片都可以使用這三種文件格式
    發表于 04-28 08:56

    使用iconview控件時,能否直接從sd卡中讀取bmp格式的圖片進行顯示啊 ?

    請教下,使用 iconview 控件時,能否直接從sd卡中讀取bmp格式的圖片進行顯示啊 ? 我看很多貌似都是 先把 圖片文件轉換為 .c 或者是 .dat
    發表于 04-28 08:11

    STemWin fatfs編碼格式沖突怎么解決?

    最近手上有一個項目,需要用到STemWin,fatfs和sd卡,由于STemWin顯示漢字用的XBF格式,xbf格式漢字用的是UTF-8
    發表于 04-12 08:12

    Blender 4.1發布,引入新文件處理API,支持更多文件格式

    此次Blender 4.1引人矚目的特點在于,全新升級后的API使得開發者可通過拖放行為,從全新的角度擴展文件處理操作。此外,新增對Alembic、Collada、Grease Pencil SVG、OBJ、OpenUSD、PLY和STL文件格式的支持,進一步拓展了傳播路
    的頭像 發表于 03-27 15:32 ?678次閱讀

    谷歌模型怎么PS打開文件格式不變

    要將谷歌模型與Photoshop結合使用,并保持文件格式不變,這通常涉及將谷歌模型生成的圖像或圖形導入到Photoshop中進行進一步編輯或處理。
    的頭像 發表于 02-29 18:09 ?912次閱讀

    谷歌模型怎么用手機打開文件格式

    谷歌在其AI技術中集成了多種工具和功能,用于處理和識別文件格式。具體到手機上打開的文件格式,這主要依賴于谷歌提供的服務和應用。例如,在Gmail中,用戶可以直接查看多種格式文件,包括
    的頭像 發表于 02-29 17:38 ?912次閱讀
    主站蜘蛛池模板: 日本68xxxxxxxxx59| 精品午夜久久影视| 激情五月综合网| 中文字幕佐山爱一区二区免费| 国产18到20岁美女毛片| 在线观看的黄网| 天天操天天干天天爽| 神马福利| aa黄色大片| 伊人狼人综合网| 国产欧美日韩综合精品一区二区| 欧美在线观看一区二区三| 性xxxxbbbb在线| 四虎国产精品高清在线观看| 一级一片免费视频播放| 男男gay污小黄文| 亚洲天堂视频一区| 手机看片www xiao2b cm| 69xxxx日本老师| 中文天堂在线最新2022更新| 国产精品一久久香蕉产线看| 免费视频不卡| 五月天亚洲| 欧美成人午夜| 六月婷婷综合网| 国产成人免费无庶挡视频| 国产美女主播在线观看| 午夜在线免费视频| 天天在线天天综合网色| 午夜免费啪| 黄色片不卡| 一区二区三区视频在线观看| 中文字幕一区二区三区四区| aaaaa级毛片免费视频| 91深夜福利| 四虎一影院区永久精品| 九月丁香婷婷亚洲综合色| 高清性色生活片欧美在线| 手机看高清特黄a大片| 久久最新精品| 国产精品毛片天天看片|