ucgui 字型相關實現
ucgui支援等寬字型和變寬字型,支援不同編碼格式字符集如ascii,unicode,shift-jis
字型定義為
typedef struct { GUI_DISPCHAR* pfDispChar; GUI_GETCHARDISTX* pfGetCharDistX; GUI_GETFONTINFO* pfGetFontInfo; GUI_ISINFONT* pfIsInFont; tGUI_ENC_APIList* pafEncode; U8 YSize; U8 YDist; U8 XMag; U8 YMag; union { void *pFontData; const GUI_FONT_MONO* pMono; const GUI_FONT_PROP* pProp; } p; U8 Baseline; } GUI_FONT;不同字型對應的顯示方式可能有差異,如顯示Mono、顯示多位元組字元、AntiAlias顯示等
體現為結構體中的pfDispChar,pfGetCharDistX,pfGetFontInfo,pfIsInFont四個函式
當然除了顯示方式,等寬不等寬字型在儲存上也有差異,這就是union p中pMono,pProp的由來。
等寬字型用結構GUI_FONT_MONO表示,裡面有U8 XSize表示字元寬度。而不等寬字型用結構GUI_FONT_PROP表示。即 GUI_FONT中的pProp,為一個單向連結串列。其中每項中有一個GUI_CHARINFO陣列。而每一個GUI_CHARINFO存有單個字元的寬度、圖形等資訊。
而不同的編碼是透過結構體指標pafEncode實現,該結構的定義如下
typedef struct { tGUI_GetLineDistX* pfGetLineDistX; tGUI_GetLineLen* pfGetLineLen; tGL_DispLine* pfDispLine; } tGUI_ENC_APIList;兩個有意思的特性:
1 GUI_FONT_MONO 字型支援將兩個字元疊加生成新的字元,具體是透過結構體
GUI_FONT_TRANSLIST,GUI_FONT_TRANSINFO實現
2 對unicode的支援不是透過pafEncode實現,透過GUI_UC_STARTCHAR 0x1a,GUI_UC_ENDCHAR 0xe2來標誌UNICODE的開始結束[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/116625/viewspace-966795/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 公文相關字型下載
- 字串相關函式的實現字串函式
- php實現七牛雲相關操作PHP
- CSS 實現搜尋相關互動CSS
- html 列印相關操作與實現詳解HTML
- css實現炫彩字型CSS
- 西文字型相關術語解說及《乾貨分享》
- 購物網站的redis相關實現(Java)網站RedisJava
- 無名訊號量實現相關程式同步
- 怎麼實現File類的相關操作啊?
- 純CSS實現液晶字型效果CSS
- 關於圖文識別功能相關技術的大致實現
- DB2中如何實現Oracle的相關功能DB2Oracle
- TypeScript實現陣列相關簡單演算法TypeScript陣列演算法
- (一)、文章投票網站的redis相關實現(Java)網站RedisJava
- Linux下IPC機制實現相關函式Linux函式
- 呼叫 Rational CM API 實現 Rational ClearQuest 的相關操作API
- 一文讓你徹底瞭解iOS字型相關知識iOS
- 【iM_VGA模組】執行 ucgui 演示!GUI
- 深入淺出換膚相關技術以及如何實現
- (緊急求助)關於jive訊息過濾的實現相關問題
- mysql load 相關實驗MySql
- 實驗七 檔案相關
- Vue專案中路由動態傳參功能相關實現Vue路由
- C#中介面的顯式實現與隱式實現及其相關應用案例C#
- 滑鼠放在連結上實現字型放大效果
- 實現網頁大中小字型效果網頁
- js實現移動端字型響應式JS
- python 計算兩個列表的相關係數的實現Python
- js實現的點選顯示或者隱藏相關內容JS
- Flutter實戰之非同步相關Flutter非同步
- GoldenGate實施相關問題Go
- jQuery實現設定字型大小程式碼例項jQuery
- nodejs實現微信小程式支付功能及相關問題總結NodeJS微信小程式
- java實現有理數分數相關計算(淺度拷貝)案例Java
- c語言與字串相關的庫函式的模擬實現C語言字串函式
- #pragma pack記憶體對齊的實現以及相關微軟面試題記憶體微軟面試題
- 深入理解PHP+Redis實現分散式鎖的相關問題PHPRedis分散式