5ucgui學(xué)習(xí)資料第07章 字體_W_第1頁(yè)
5ucgui學(xué)習(xí)資料第07章 字體_W_第2頁(yè)
5ucgui學(xué)習(xí)資料第07章 字體_W_第3頁(yè)
5ucgui學(xué)習(xí)資料第07章 字體_W_第4頁(yè)
5ucgui學(xué)習(xí)資料第07章 字體_W_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 第7章 字體隨C/GUI 一起提供的普通字體大部分是標(biāo)準(zhǔn)字體。實(shí)際上,你或許會(huì)發(fā)現(xiàn)這些字體對(duì)于你的應(yīng)用已完全足夠。對(duì)單獨(dú)的字體,想了解更詳細(xì)的情況,請(qǐng)參考第 25 章:標(biāo)準(zhǔn)字體,這一章描述了C/GUI 中所有的字體,及這些字體在屏幕上顯示時(shí)的所有字符。 C/GUI 支持ASCII,ISO 8859-1 及 Unicode。通常,C/GUI 按 8 位字符進(jìn)行編譯,允許最大為 256 的不同的字符代碼,32 之前的編碼除外,這部分字符作為控制字符保留。字符是否有效取決所選擇的字體(即該字體是否包括有所需的字符)。 第 1 頁(yè)C/GUI 中文手冊(cè) 第 7 章 字體7.1 有效字體 當(dāng)前C/GUI

2、 版本提供 4 種字體:等寬位圖字體,比例位圖字體,帶有 2bpp(bit/pixel) 用于建立反混淆信息的比例位圖字體,帶有 4bpp(位/像素)用于建立反混淆信息的反混淆字體。(更多關(guān)于抗鋸齒字體的信息請(qǐng)參考第 15 章:“抗鋸齒”) 所有的字體會(huì)與你的應(yīng)用相連接,而字體的選擇在 GUIConf.h 中定義。我們推薦編譯所有的字體并將它們作為一個(gè)庫(kù)模塊進(jìn)行連接,或者將所有的字體工程文件放入一個(gè)你能與你的應(yīng)用相連接的庫(kù)當(dāng)中。這種方法可以讓你確定那些你在應(yīng)用中需要的字體被真正連接。字 體轉(zhuǎn)換器(在一本獨(dú)立的手冊(cè)中描述)用于創(chuàng)建附加的字體。 為了能在你的應(yīng)用中使用一種字體,你必須要做到下面幾點(diǎn)

3、:字體在與C/GUI 規(guī)范相兼容的“C”文件,工程文件或庫(kù)這三種文件中任一種當(dāng)中。字體文件與你的應(yīng)用鏈接。 字體的描述要包含在 GUIConf.h 中(這很必要,這是為了避免由于沒(méi)有聲明的外部 常量而產(chǎn)生的編譯警告) 增加字體一旦你連接過(guò)一個(gè)如上面所描述的字體文件,將要連接的字體聲明為一個(gè)外部常量 GUI_FONT,如下面范例所顯示的那樣: 范例extern const GUI_FONT GUI_FontNew; int main (void) GUI_Init () ; GUI_Clear(); GUI_SetFont(&GUI _FontNew); GUI_DispString(Hello

4、 worldn); return 0; 選擇字體C/GUI 提供不同的字體,總會(huì)有其中的一種被選中??梢酝ㄟ^(guò)調(diào)用函數(shù) GUI_SetFont()第 2 頁(yè)C/GUI 中文手冊(cè) 第 7 章 字體改變所選擇的字體,該函數(shù)選擇字體用于伴隨當(dāng)前任務(wù)的文字輸出。如果在你的應(yīng)用中沒(méi)有字體被選擇,則使用默認(rèn)字體。該默認(rèn)值由 GUIConf.h 配置,可以進(jìn)行修改。你應(yīng)該確認(rèn)默認(rèn)字體是你的應(yīng)用中真正用到的字體,因?yàn)槟J(rèn)字體會(huì)與你的應(yīng)用連接,因此可能會(huì)耗盡 ROM 存儲(chǔ)空間。 C/GUI 的兼容性老版本的C/GUI 使用一個(gè)不同的字體概念,字體在一個(gè)字體表中列出,它們?cè)诒砀裰械奈恢猛ㄟ^(guò)一個(gè)整數(shù)選擇。由于缺乏靈活

5、性,這種概念改變了。新的概念較原來(lái)的概念提高了一個(gè)等級(jí),字體標(biāo)識(shí)符(例如 F6x8)依然有效。 7.2 字體API下表列出了與字體處理相關(guān)的函數(shù),在各自的類型中按字母順序進(jìn)行排列。函數(shù)的詳細(xì) 描述后面列出。 7.3 一種字體的選擇 GUI_GetFont()描述返回當(dāng)前選擇字體的指針。C/GUI 中文手冊(cè)第 3 頁(yè)函 數(shù) 說(shuō) 明 字體的選擇 GUI_GetFont() 返回當(dāng)前選擇字體的指針 GUI_SetFont() 設(shè)置當(dāng)前字體 字體相關(guān)函數(shù) GUI_GetCharDistX() 返回當(dāng)前字體中指定字符的寬度(X 軸,以像素為單位)GUI_GetFontDistY() 返回當(dāng)前字體 Y 軸

6、方向間距 GUI_GetFontInfo() 返回一個(gè)包含字體信息的結(jié)構(gòu) GUI_GetFontSizeY() 返回當(dāng)前字體的高度(Y 軸,以像素為單位) GUI_GetStringDistX() 返回一個(gè)使用當(dāng)前字體的文本的 X 軸尺寸 GUI_GetYDistOfFont() 返回一個(gè)特殊字體的 Y 軸間距 GUI_GetYSizeOfFont() 返回一個(gè)特殊字體的 Y 軸尺寸 GUI_IsInFont() 估計(jì)一個(gè)指定的字符是否在一種特殊字體里面 第 7 章 字體函數(shù)原型const GUI_FONT * GUI_GetFont(void)GUI_SetFont()描述設(shè)置用于文字輸出的

7、字體。函數(shù)原型const GUI_FONT * GUI_SetFont(constGUI_FONT* pNewFont) ;返回值返回先前所選擇字體的指針,這樣你可以在稍后一點(diǎn)恢復(fù)原先使用的字體。范例用 3 種不同尺寸顯示樣本文字,然后恢復(fù)原先的字體: void DispText(void) const GUI_FONT GUI_FLASH* OldFont=GUI_SetFont(&GUI_Font8x16); GUI_DispStringAt(This text is 8 by 16 pixels, 0, 0);GUI_SetFont(&GUI_Font6x8); 6 by 8 pixel

8、s, 0, 20);GUI_DispStringAt(This text isGUI_SetFont(&GUI_Font8); isproportional, 0, 40);/ 恢復(fù)字體 GUI_DispStringAt(This textGUI_SetFont(OldFont); 上面范例程序運(yùn)行結(jié)果的屏幕截圖:第 4 頁(yè)C/GUI 中文手冊(cè)參數(shù) 含義 pFont 所選擇及使用字體的指針 第 7 章 字體用不同的字體顯示文字和數(shù)值:GUI_SetFont(&GUI _Font6x8); GUI_DispString(The result is:); GUI_SetFont(&GUI_Font

9、8x8); GUI_DispDec(42,2); /顯示文字/顯示數(shù)值上面范例程序運(yùn)行結(jié)果的屏幕截圖:7.4 字體相關(guān)函數(shù) GUI_GetCharDistX()描述返回當(dāng)前選擇字體中用于顯示一個(gè)指定字符的寬度(X 軸,以像素為單位)函數(shù)原型int GUI_GetCharDistX(U16 c);GUI_GetFontDistY()描述返回當(dāng)前選擇字體 Y 軸方向間距C/GUI 中文手冊(cè)第 5 頁(yè)參數(shù) 含義 c 需計(jì)算寬度的字符 第 7 章 字體函數(shù)原型int GUI_GetFontDistY(void);附加信息Y 軸方向間距是一個(gè)以像素為單位在兩個(gè)文字相鄰的線之間的垂直距離。返回值是當(dāng)前選

10、擇字體入口 Y 軸方向距離數(shù)值。該返回值對(duì)于比例字體及等寬字體都有效。 GUI_GetFontInfo()描述計(jì)算指向一個(gè)特殊字體的 GUI_FONTINFO 結(jié)構(gòu)的指針。函數(shù)原型void GUI_GetFontInfo(const GUI_FONT*pFont,GUI_FONTINFO*pfi);附加信息GUI_FONTINFO 結(jié)構(gòu)的定義如下:typedef struct U16 Flags; GUI_FONTINFO;變量標(biāo)志的成員使用以下數(shù)值:GUI_FONTINFO_FLAG_PROP GUI_FONTINFO_FLAG_MONO GUI_FONTINFO_FLAG_AA GUI_F

11、ONTINFO_FLAG_AA2 GUI_FONTINFO_FLAG_AA4 第 6 頁(yè)C/GUI 中文手冊(cè)參數(shù) 含義 pFont 指向字體的指針 pfi 指向一個(gè) GUI_FONTINFO 結(jié)構(gòu)的指針 第 7 章 字體范例獲得 GUI_Font6x8 字體的信息。計(jì)算后,F(xiàn)ontInfo.Flags 包含 GUI_FONTINFO_FLAG_MONO 標(biāo)志。 GUI_FONTINFO FontInfo; GUI_GetFontInfo(&GUI_Font6x8, &FontInfo);GUI_GetFontSizeY()描述返回當(dāng)前選擇字體的高度(Y 軸,以像素為單位)函數(shù)原型int GUI

12、_GetFontSizeY(void);附加信息返回值是當(dāng)前選擇字體入口 Y 軸方向大小數(shù)值。該值小于或等于通過(guò)執(zhí)行 GUI_GetFontDistY()獲得的返回值Y 軸方向間距。 該返回值對(duì)于比例字體及等寬字體都有效。GUI_GetStringDistX()描述返回在當(dāng)前選擇的字體中用于顯示一個(gè)指定字符串的 X 軸尺寸。函數(shù)原型int GUI_GetStringDistX(const char GUI_FAR *s);C/GUI 中文手冊(cè)第 7 頁(yè)參數(shù) 含義 s 字符串的指針 第 7 章 字體GUI_GetYDistOfFont()描述返回一種特殊字體的 Y 軸方向間距。函數(shù)原型int G

13、UI_GetYDistOfFont(const GUI_FONT*pFont);附加信息參考 GUI_GetFontDistY()。GUI_GetYSizeOfFont()描述返回一種特殊字體的 Y 軸方向尺寸。函數(shù)原型int GUI_GetYSizeOfFont(const GUI_FONT*pFont);附加信息參考 GUI_GetFontSizeY()GUI_IsInFont()描述估計(jì)一個(gè)指定的字符是否在一種特殊字體里面第 8 頁(yè)C/GUI 中文手冊(cè)參數(shù) 含義 pFont 字體的指針 參數(shù) 含義 pFont 字體的指針 第 7 章 字體函數(shù)原型char GUI_IsInFont(con

14、st GUI_FONT*pFont, U16 c);附加信息如果指針 pFont 設(shè)置為 0,則使用當(dāng)前選擇字體。范例估計(jì)字體 GUI_FontD32 是否包含“X”:if (GUI_IsInFont(&GUI_FontD32, X) = 0) GUI_DispString(GUI_FontD32 does not contains X );7.5 字符設(shè)置 ASCIIC/GUI 支持所有的 ASCII 字符。下表是從 32 到 127 共 96 個(gè)字符: 很不幸,因?yàn)?ASCII 立足于美國(guó)用于信息互換的標(biāo)準(zhǔn),它為美國(guó)的需要而制定。它不包括用于歐洲語(yǔ)言的任何特殊的字符,諸如 , 等等。沒(méi)有單

15、獨(dú)的標(biāo)準(zhǔn)適合這些 ASCII 字符的“歐洲擴(kuò)展”?,F(xiàn)在已經(jīng)有幾個(gè)不同的標(biāo)準(zhǔn),其中一個(gè)用于互聯(lián)網(wǎng)并且被大多數(shù) Windows 應(yīng)用程序所接受的標(biāo)準(zhǔn)是 ISO8859-1,一個(gè) ASCII 字符的擴(kuò)展集。 C/GUI 中文手冊(cè)第 9 頁(yè)Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F 2x ! # $ % & ( ) * + , - . / 3x 0 1 2 3 4 5 6 7 8 9 : ; ? 4x A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z _ 6x a b c d e f g h i j k l m n

16、 o 7x p q r s t u v w x y z | 參數(shù) 含義 pFont 字體的指針 c 搜索的字符 第 7 章 字體ISO 8859-1 西文、拉丁文字符設(shè)置 C/GUI 支持 ISO8859-1,字符的定義如下表如示:第 10 頁(yè)C/GUI 中文手冊(cè)代碼 描述 字符 160 non-breaking space 161 inverted exclamation 162 cent sign 163 pound sterling 164 general currency sign 165 yen sign 166 broken vertical bar 167 section sig

17、n 168 umlaut (dieresis) 169 copyright 170 feminine ordinal 171 left angle quote, guillemotleft 172 not sign 173 soft hyphen 174 registered trademark 175 macron accent 176 degree sign 177 plus or minus 178 superscript two 179 superscript three 180 acute accent 181 micro sign 182 paragraph sign 183 mi

18、ddle dot 184 cedilla 185 superscript one 186 masculine ordinal 187 right angle quote, guillemot right 188 fraction one-fourth 189 fraction one-half 190 fraction three-fourth 191 inverted question mark 192 capital A, grave accent 193 capital A, acute accent 第 7 章 字體C/GUI 中文手冊(cè)第 11 頁(yè)194 capital A, circ

19、umflex accent 195 capital A, tilde 196 capital A, dieresis or umlaut mark 197 capital A, ring 198 capital A, diphthong (ligature) 199 capital C, cedilla 200 capital E, grave accent 201 capital E, acute accent 202 capital E, circumflex accent 203 capital E, dieresis or umlaut mark 204 capital I, grav

20、e accent 205 capital I, acute accent 206 capital I, circumflex accent 207 capital I, dieresis or umlaut mark 208 Eth, Icelandic 209 N, tilde 210 capital O, grave accent 211 capital O, acute accent 212 capital O, circumflex accent 213 capital O, tilde 214 capital O, dieresis or umlaut mark 215 multip

21、ly sign 216 capital O, slash 217 capital U, grave accent 218 capital U, acute accent 219 capital U, circumflex accent 220 capital U, dieresis or umlaut mark 221 capital Y, acute accent 222 THORN, Icelandic 223 sharp s, German (s-z ligature) 224 small a, grave accent 225 small a, acute accent 226 sma

22、ll a, circumflex accent 227 small a, tilde 228 small a, dieresis or umlaut mark 229 small a, ring 230 small ae diphthong (ligature) 231 cedilla 232 small e, grave accent 第 7 章 字體UnicodeUnicode 是最終的字符編碼,它是一個(gè)基于 ASCII 和 ISO8859-1 的國(guó)際標(biāo)準(zhǔn),UNICODE 要求 16 位的字符,因?yàn)樗械淖址加兴鼈兊墓獭D壳?,已?jīng)定義了超過(guò) 30,000 個(gè)不同的字符。不過(guò),不是所有的字

23、符圖像能在C/ GUI 中定義。定義這些附加的字符是使用者的工 作。請(qǐng)聯(lián)系 Micrium 公司,或你的發(fā)行人,因?yàn)槲覀兛赡苡心闼枰淖址?7.6 字體轉(zhuǎn)換器 能用于C/GUI 的字體必須在“C”中定義為 GUI_FONT 結(jié)構(gòu)。該結(jié)構(gòu)或者由這些結(jié)構(gòu)引用的與之相當(dāng)?shù)淖煮w數(shù)據(jù),可能相當(dāng)大。手工產(chǎn)生這些字體時(shí)耗時(shí)巨大且效率很低。因此我們推薦使用字體轉(zhuǎn)換器,它能夠從字體自動(dòng)產(chǎn)生“C”文件。 字體轉(zhuǎn)換器是一個(gè)簡(jiǎn)單的 Windows 程序。你只需在程序載入一種 Windows 安裝字體,如果有需要?jiǎng)t對(duì)其進(jìn)行編輯,然后將其保存為“C”文件。該“C”文件可以進(jìn)行編譯,你需要第 12 頁(yè)C/GUI 中文手冊(cè)233 small e, acute acce

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論