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");

该文本就使用嵌入的字体来显示,如显示的内容没有嵌入,则不显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值