官术网_书友最值得收藏!

2.3.7 字體

GUI引擎使用字體驅動將文本對象渲染到屏幕上或屏幕外圖片上,該驅動占用內存空間小,速度快。GUI引擎在內部以列表的形式維護著所有字體,字體文件只加載一次,GUI引擎提供了支持truetype字體文件的初始化列表。以下是Tilcon開發套件中字體庫的重要特性:

■ 可以使用API命令TRT_RegisterFontFile() 注冊對新增字體的支持。

■ 可以使用API命令TRT_SetValues()來改變文本顯示效果,如大小、粗體/斜體、下劃線等文本屬性。

■ 若窗口大小被改變,文本將相應地做出調整以適應窗口。

■ 字體是完全可擴展的,不限制字體的特定點陣大小,但界面編輯器在字體選擇組合框中限定了字體的種類數量。

■ 支持抗鋸齒。

■ 支持所有的有效顏色,包括透明色和XOR色,同時支持多種陰影模式和陰影色。

■ 應用程序使用TRT_GetValues()和TRT_SetValues()接口獲取/設置字體屬性值,屬性格式為TRT_ATT_FONT_*。

GUI引擎支持四種文本字體類型:Helvetica、Courier、New Century、Times Roman。font.dat文件包含了界面編輯器識別的所有可用字體列表,由界面編輯器中的字體管理器(見圖2-14)維護著,是界面編輯器的字體注冊機構。

圖2-14 字體管理器

當一個界面對象的文本組件被創建時,文本組件的字體屬性被設置為界面編輯器顯示的默認字體,開發者可以選擇需要設置字體的文本,并對字體、大小等屬性進行修改,這些屬性值被保存在屏幕內界面對象的組件中,供GUI引擎中的字體管理進程繪制文字使用。如圖2-15所示。

圖2-15 字體屬性配置處理過程

當屏幕被顯示時,文本組件被傳遞給GUI引擎中的字體管理程序,字體管理函數決定是否加載被請求的字體到內存中。默認字體預先在GUI引擎中注冊了,非默認字體在使用前,必須使用API命令TRT_RegisterFont()在GUI引擎中進行注冊。除了字體屬性,文本組件還需要包括粗體、斜體、大小等屬性,才能正確地繪制文字。運行時,文本組件與字體管理器協同工作,它們之間的協同關系如圖2-16所示。

圖2-16 運行時文本組件與字體管理器協同工作機制

設置文本字體支持的操作步驟如下:

(1)選擇界面編輯器中“Options > Font Manager”菜單,打開字體管理窗口;

(2)選擇字體類型(font type)編號,該值可以是任何大于32的數;

(3)輸入字體名稱,該名稱將在界面編輯器快捷工具區內的可選字體列表中顯示;

(4)點擊“OK”按鈕,關閉配置窗口;

(5)拷貝font.dat文件到目標機文件系統的字體目錄下,比如Windows平臺的字體文件存放目錄是C:\WINDOWS\fonts;

(6)在應用程序代碼調用TRT_StartEx()之后加入代碼行“TRT_pid = StartData.TRT_CID;”進行字體注冊;

(7)設置該字體在字體類型(font type)列表中的索引值;

(8)在nameStr域設置字體名稱。

以下代碼行展示了如何在應用程序中對字體進行注冊。

    TRT_FontRegister fontRegisterProps;
    long taskMask = TRT_FONTREGISTER_MASK_SET| TRT_FONTREGISTER_MASK_FACENAME;
    fontRegisterProps.fontType = 33;
    fontRegisterProps.fontStyle = 0;
    fontRegisterProps.nameStr = "Asian";
    TRT_RegisterFont(TRT_pid, taskMask, (void*)(&fontRegisterProps));

[注意]部分字體可能不支持粗體和/或斜體,若未指定格式,默認的數字文本精確到小數點后兩位。另外,VxWorks和Linux平臺的本地字體引擎不支持文本旋轉,必須使用Tilcon字體引擎進行字體旋轉。

有些對象的文本字體通過快捷工具欄內的字體設置框或“Options > Text Fonts”菜單進行修改,比如按鈕(button)等,有些對象的文本字體通過對象屬性設置對話框進行修改,比如表格(table)對象。圖2-17所示字體配置窗口適用于所有文本對象、按鈕、面板、刻度線等已經輸入文字的情況。

圖2-17 字體與大小配置

一旦對象被創建且屬性設置對話框被關閉(只要文本已經輸入即可),選中該對象,即可用快捷工具欄中的字體設置框或“Options > Text Fonts”菜單進行字體和大小配置,以及是否顯示為粗體或斜體。如果是點陣字體,在選擇“Options > Text Fonts”菜單彈出的字體選擇對話框中,還可以控制字體寬、高和字間距。

主站蜘蛛池模板: 大新县| 绍兴市| 宁武县| 哈巴河县| 乐清市| 莱州市| 玉山县| 常德市| 进贤县| 崇明县| 鄂伦春自治旗| 玉林市| 太康县| 瓦房店市| 广宗县| 东莞市| 灯塔市| 丘北县| 临夏县| 云霄县| 措美县| 北宁市| 富民县| 平顺县| 齐河县| 海晏县| 平邑县| 中宁县| 娱乐| 新野县| 长白| 乾安县| 增城市| 遂川县| 丰顺县| 哈巴河县| 甘孜| 卓资县| 万年县| 宁安市| 虹口区|