MiniGUI字型顯示原理

2021-10-04 17:00:14 字數 1017 閱讀 6386

邏輯字型

資料結構我先從別人的部落格拉一張過來吧:

這裡包含了,邏輯字型和裝置字型(多字符集以及單字符集),以及字符集操作集之間的關係。

可以看到:乙個邏輯字型對應乙個字元裝置,乙個字元裝置對應乙個字符集

也就是說一種邏輯字型只能專門顯示某種特定的字符集的字串。比如專門顯示utf-8字符集的字串,或者gb2312字符集的字串。

在呼叫createlogfont介面建立邏輯字型時,會傳入charset字符集名稱,該引數用於將邏輯字型與字符集操作集進行繫結,如果建立過程中匹配到對應的裝置字型,則charset引數不起作用,真是charset按照devfont來。

在minigui初始化過程中,mg_initgdi函式會根據minigui.cfg配置檔案讀取邏輯字型檔案,進行初始化,生成裝置字型物件devfont。

並通過adddevfont函式將devfont物件儲存到全域性列表中(mb_dev_font_head)。

初始化devfont時,裝置字型中的font_ops將被賦值為全域性物件__mg_fontops_infos->fontops, 字符集操作集按照配置檔案的配置進行初始化

createlogfont函式建立邏輯字型物件時,會通過get_matched_devfont獲取匹配的裝置字型,並通過dbc_font_ops->new_instance建立乙個新的devfont,並繫結到邏輯字型中
給對應控制項的裝置環境設定好邏輯字型後呼叫drawtext進行繪製。

drawtext最終會呼叫到devfont->font_ops->get_glyph_bbox函式獲取字型顯示區域。然後devfont->font_ops->get_glyph_bbox會呼叫devfont->charset_ops->conv_to_uc32將字串轉換為unicode編碼,去ttf檔案中匹配字型。

MiniGUI 使用TTF字型

向量字型的配置和使用如下 1 編譯配置 使minigui支援向量字型 2 minigui 編譯時,開啟configure相應的配置選項 enable ttfsupport 注 如果沒有安裝freetype1即使 使用了此選項,也會被預設關閉掉。3 將字型放在 usr local lib minigu...

label顯示不同字型

在專案開發中,我們經常會遇到在這樣一種情形 在乙個uilabel 使用不同的顏色或不同的字型來體現字串,在ios 6 以後我們可以很輕鬆的實現這一點,官方的api 為我們提供了uilabel類的attributedtext,使用不同顏色和不同字型的字串,我們可以使用nsattributedtext ...

C dataGridView字型顯示設定

1.設定datagridview中資料的顯示風格,需要設定defaultcellstyle裡面的selectionbackcolor還有font 字型設定 設定某行的字型顏色 datagridview1.rows i defaultcellstyle.forecolor color.red 2.設定...