在Flash平臺 有時候顯示文字的時候需要一些特定的字體來達到美觀效果,但由於平臺的差異性,或是有些用戶的設備並沒有我們使用的那個字體,那樣用戶就看不到我們想要的文字效果,所以我們就需要把字體嵌入到Flash中,但我們不能嵌入整個字體文件,因為一個字體文件本身是比較大的,在普通網絡帶寬情況下加載是十分慢的少則幾十秒,多則幾分鐘到幾十分鐘不等,為了更好的優化swf的體積達到我們的要求,所以就只嵌入那些需要使用的文字,下面我就簡單的說下怎麼樣來創建和使用嵌入字體
1.首先打開Flash,快捷鍵CTRL+L打開庫面板,然後在面板上右單擊鼠標
再選擇"新建字型"
2.這時候會彈出一個對話寬 如圖所示
在這個對話框中我們注意我標紅的這三個區域, 在第一個區域中是選擇你要嵌入的字體,這包括了你系統中所有的字體,選擇一個你要嵌入的字體.
在第二個區域對嵌入的字體有個特定的選擇,如果你勾選了全部,則整個字體文件都會嵌入到swf打包出來,整個swf就會比較大,下面還有很多選項,都比較好理解,根據需要來選擇,一般我們是不選擇.
在第三個紅色區域內,是寫入你需要使用這個字體的文字,Flash他會自動把重覆的文字給你過濾到的,所以不用擔心,如果在實際應用中你真實的使用文字不在這裏面的範圍內,是沒法看到想要的字體效果的
3.關於ActionScript導出
為什麼要使用ActionScript導出,因為我們要取這個Font的子類以便於加載完這個swf後在想要使用的地方進行設置這個想要嵌入的字體.
在分級顯示格式中我們看到有2種格式,一種是傳統格式,用於一般的TextFiled顯示嵌入.一種是TLF格式,用於FTE文本和TLF文本的字體嵌入,兩者不能並存,只能選其中一個,如果都要使用,只能創建2個嵌入字體.
再把為ActionScript匯出和在第1幀中匯出勾選上,在類中寫好你想要的類名,然後再生成swf,這個swf就是供我們使用的了.
下面再說下在ActionScript中怎麼使用這個嵌入字體.
1.首先我們要先把這個匯出的swf載入進來,不用多說,loader URLLoader 看你怎麼用了
2.取到這個swf中的連接類,就是剛我們寫的那個類名 還記得吧
3.調用Font的靜態方法Font.registerFont(FontClassRef); 記住 這裏面是你那個swf的那個字體類的引用哈
var classRef:Class=_loader.getDefinition("FZXZ")as Class;
Font.registerFont(classRef);
這一部已經在FlashPlayer中告知我們又註冊了一個外部字體進來
4.在FTE中使用嵌入字體
首先要保證在嵌入的時候,在ActionScript選項卡這邊的分級顯示格式選擇的是TLF格式,不然是沒有效果的.
然後在FTE中的FontDescription對象中有個fontLookup屬性,這決定了你的嵌入字體能否正常顯示,如果只是使用系統字體,那就把這個屬性賦值為FontLookup.DEVICE;如果想要使用外部嵌入字體就得賦值為FontLookup.EMBEDDED_CFF;這樣才能正常顯示,然後再把fontName屬性設置為你嵌入的那個字體的字體名字,這樣就能得到你想要的顯示效果了
5.在TextFiled中使用嵌入字體
在這選擇傳統格式,然後在使用TextFiled對象的時候把embedFonts屬性設置為true,再設置TextFormat模式中的字體名字為你嵌入字體名