或許,系統自帶的字體不足以體現應用程序的魅力,對於表現極強的漢字來說,更是如此。這時候,我們就會想,要是能把網上下載的藝術字體塞到應用包中,那豈不美哉?那么,這可以實現嗎?答案是Yes的。
接下來,阿拉就給大家分別演示WP 8.1兩個開發框架中如何嵌入自定義字體。
為啥是兩大框架?我們知道從7x到8.0的開發框架是Silverlight for Windows Phone,為了便於兼容和直接項目升級,在8.1中,微軟的開發團隊依然保留了這個框架;另外一個框架是從Win RT應用移植的API集,這個不用我多說了,猜也猜到了,就是方便編寫與Windows 平板應用通用應用而准備的。
當然,如果僅僅打算開發WP應用,那么兩個框架都可以用,你看哪個順眼就用哪個,無所謂,大同小異;如果你計划編寫通用程序,那只能選擇運行時API集,即從RT應用移植過來的子集。
但我告訴你,無論是哪個框架,都沒什么本質區別,至少用起來是一樣的,微軟后來許多開發技術都是從WPF中來的,保存了很好的延續性,你只要學會WPF,其他的框架就可以不學自通了。
總之,記住我的一句話:技術和知識永遠是死的,人永遠是活的,不要把知識學死了。
運行時API
先看看在運行時API下如何嵌入自定義字體。這個就灰常簡單了。
1、打開萬能的VS,新建一個項目,項目模板選擇“空白應用程序(Windows Phone)”,凡是括號中指明“Windows Phone”的模板都是基於從RT移植的運行時API的。如圖。
2、打開“解決方案資源管理器”窗口(不要問我在哪里),用鼠標右鍵拼命點擊項目名稱節點,從彈出的菜單中選擇“添加”-“現有項”,選擇一個字體文件,字體可以網上下,多得是。
3、打開MainPage.xaml頁,聲明一個TextBlock元素,然后在XAML編輯器中選中這個TextBlock,接着打開屬性窗口,找到FontFamily屬性,點擊下拉列表,你就會看到剛添加到項目的字體文件了。
注意看,添加到項目的自定義字體的右邊會多了一個A符號。這樣就會生成以下XAML:
<TextBlock FontFamily="禹衛書法行書簡體.ttf#yuweij" ……
連URL都不用自己寫了,從中我們看到引用字體文件的方法是“文件URL + # + 字體名稱”。#后面就是字體的名字。
4、搞定,現在往TextBlock中放些文本。
<TextBlock FontFamily="禹衛書法行書簡體.ttf#yuweij" FontSize="50"> 《登黃鶴樓》<LineBreak/> 崔顥<LineBreak/> 昔人已乘黃鶴去,<LineBreak/> 此地空余黃鶴樓。<LineBreak/> 黃鶴一去不復返,<LineBreak/> 白雲千載空悠悠。<LineBreak/> 晴川歷歷漢陽樹,<LineBreak/> 芳草萋萋鸚鵡州。<LineBreak/> 日暮鄉關何處是,<LineBreak/> 煙波江上使人愁。 </TextBlock>
現在,可以運行一下了。看看應用頁面,是不是發現,氣質馬上提升了九個檔次?
Silverlight框架
SL框架也是可以嵌入字體的,和上面的差不多。
1、新建一個項目,項目模板為“空白應用程序(Windows Phone Silverlight)”,凡是用SL框架的項目模板,括號中都會注明“Windows Phone Silverlight”。
版本就選8.1吧。
2、打開“解決方案資源管理器”窗口,右擊項目節點,從彈出的菜單中選擇“添加”-“現有項”,把自定義字體文件添加進來。
3、打開MainPage主頁,聲明一個TextBlock元素,然后在XAML編輯器中選中它,並打開屬性窗口。找到FontFamily屬性,從下拉列表中選擇剛剛添加的字體。
這時候,生成的XAML中同樣向我們展示了其URL格式:
<TextBlock FontFamily="/CustFontfamilyAppSL;component/禹衛書法行書簡體.ttf#yuweij"/>
格式同樣是“字體文件URL + # + 字體名字”。
4、現在,可以往TextBlock中放點文本,以體驗一下。
<TextBlock FontFamily="/CustFontfamilyAppSL;component/禹衛書法行書簡體.ttf#yuweij" FontSize="50"> 《秋窗風雨夕》<LineBreak/> 秋花慘淡秋草黃,<LineBreak/> 耿耿秋燈秋夜長。<LineBreak/> 已覺秋窗秋不盡,<LineBreak/> 那堪風雨助凄涼。<LineBreak/> ……<LineBreak/> 淚燭搖搖爇短檠,<LineBreak/> 牽愁照恨動離情。<LineBreak/> 誰家秋院無風入?<LineBreak/> 何處秋窗無雨聲。<LineBreak/> ……<LineBreak/> 不知風雨幾時休,<LineBreak/> 已教淚灑窗紗濕。 </TextBlock>
然后,我們可以運行了,看看結果吧。
估計此刻有人已經在罵我是騙子了,為什么運行后看不到自定義的字體啊?
莫急,莫急,鎮定是一筆財富,千萬別急。先結束調試項目,然后打開“解決方案資源管理器”,找到剛才添加到項目的字體文件,並且選中它,然后打開屬性窗口,將“生成操作”改為Resource。
現在,你再運行一次看看。
看到了吧,我這么誠實的人,怎么會騙你呢?