萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> Flash嵌入字體的進階方法

Flash嵌入字體的進階方法

  關於如何在Flash應用中嵌入字體,這個話題一直都是一個焦點。
最簡單的,打開Flash, 新建一個動態文本,選擇字體,然後在 Embed Characters裡選擇或者添加需要嵌入的字符。
比較復雜的是下面兩種在Flash Builder裡分別針對Flex與Action Script項目的嵌入方法。

Flex項目
使用css格式swf文件:
css文件定義如下例

  1. @font-face{
  2.         src:url(“xxx.ttf”);
  3.         font-family:xxx;
  4.         unicodeRange:
  5.         U+0041-U+005A, /* Upper-Case [A..Z] */
  6.         U+0061-U+007A, /* Lower-Case a-z */
  7.         U+0030-U+0039 /* Numbers [0..9] */,
  8.         …..}

然後用mxmlc將css發布成swf文件,用StyleManager.loadStyleDeclarations([url])來調用,調用成功後就可以獲取字體信息。

Flash項目
使用Embed標簽

  1. [Embed (source="xxx.ttf",fontFamily="xxx", unicodeRange="..." )]
  2. private var myFontClass:Class;
  3. Font.registerFont(myFontClass)
復制代碼

前種方法的好處在於運行時加載字體信息,但是和後種方法一樣,缺點在於使用unicodeRange並不能很好的編輯所要嵌入的字符。下面我重點來介紹一下我最提倡的運行時載入字體的方法:
1,建立字體庫flash文件(如font_lib.fla),使用最簡單的方法,打開flash,在舞台上建立文本並且手動添加字符集。
2,建立一個AS作為Application, 比如font_zh.as     核心代碼如下:

  1. [Embed (source="font_lib.swf",  fontName="xxxx")]
  2. private var fontClass:Class;
  3. //這裡注意字體名xxx要與font_lib.fla裡的文本所使用的字體名一致。
  4. ….
  5. Font.registerFont(fontClass)


3,建立css文件,如style.css:

  1. headline{
  2.     font-family:’xxx’
  3.     font-size:20
  4. }


4,運行時載入style.css,用StyleSheet來初始化:

  1. var tmpStyleSheet: StyleSheet = new StyleSheet();
  2. tmpStyleSheet.parseCSS(參數為css的內容);


5,載入font_zh.swf後,便可以使用字體了,如:

  1. var tf:TextField = new TextField();
  2. tf.styleSheet = tmpStyleSheet;
  3. tf.embedFonts = true;
  4. tf.htmlText = “<headline>” + “This is a headline” + “</headline>”


這樣的方法,好處很多,既可以運行時載入字體文件,又可以很方便的修改需要嵌入的字符。
唯一的也是始終都無法避免的問題,就是無法運行時定義嵌入字符,無法避免每次修改字符集後都要手動更新字庫。

copyright © 萬盛學電腦網 all rights reserved