当前位置:编程问答 > Flash >

flash as3 嵌入字体方法总结(二)

2.利用代码嵌入
package
{
 import flash.display.Sprite;
 import flash.text.Font;
 import flash.text.TextField;
 import flash.text.TextFormat;
 [SWF(width = 800,height = 600,backgroundColor = 0xffffff)]
 public class MyFont extends Sprite
 {
   /**
   * source="MSYH.TTF"--- 字体资源,路径
   * fontName="myMSYHFont" ---- 字体自定义名称
   * unicodeRange="" ---- 需要嵌入的字体,16进制unicode码,U+ 为前缀
   */
  [Embed(source="MSYH.TTF", fontName="myMSYHFont",
      unicodeRange="U+2a,U+2b,U+2d,U+2f,U+30-U+39,U+41-U+5a,U+61-U+7a,U+6597,U+5730,U+4e3b",
       mimeType="application/x-font" ,embedAsCFF="false")]
  public var myMSYHFontClass:Class;//微软雅黑
  public function MyFont()
  {
   Font.registerFont(myMSYHFontClass);//注册字体
  
   test();
  }
 
  private function test():void
  {
   var tlf :TextField = new TextField();
   tlf.width = 800;
   tlf.height = 600;
   tlf.selectable = false;
   tlf.wordWrap = true;
  
   var textFormat :TextFormat = new TextFormat();
   textFormat.font = "myMSYHFont";
   textFormat.size = 36;
   textFormat.color = 0xff0000;
   tlf.appendText( "0123456789\n");
   tlf.appendText( "abcdefghijklmnopqrstuvwxyz\n");
   tlf.appendText( "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");
   tlf.appendText( "斗地主\n");
   tlf.appendText( "/ * + -\n");
   tlf.embedFonts = true;
   tlf.setTextFormat(textFormat);
  
   addChild(tlf);
   //返回16进制unicode码
   function toOxString(str:String):String
   {
    var result:String="";
    var len:int=str.length;  
    for (var i:int=0; i < len; i++)  
    {  
     result += "U+" + (str.charCodeAt(i)).toString(16);
     if(i < len - 1)
     {
      result += ",";
     }
    }
    return result;
   }
  
   trace(toOxString("斗地主/*+-"));
  }
 }
}
运行显示所嵌入的字体:
 

生成的MyFont.swf,可以在项目预加载载入,以后项目的其他地方就可以直接用嵌入的字体
/**
   *设置文本嵌入字体
   * @param tlf 实例
   * @param textFormat  tlf的defaultFormat
   * @param fontName --- 嵌入的字体名称,如上面的"myMSYHFont"
   */ 
  public static function setFontByTextFormat(tlf:TextField,
               textFormat :TextFormat,
               fontName :String):void
  {
   if(tlf == null || textFormat == null)
   {
    return;
   }
   textFormat.font = fontName;
   tlf.setTextFormat(textFormat);
  }
如:
var tlf :TextField = new TextField();
setFontByTextFormat(tlf,tlf.defaultTextFormat,"myMSYHFont");
该文本就使用嵌入的字体来显示,如显示的内容没有嵌入,则不显示

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,