首先我们要生成一个swf的字体库,以微软雅黑为例,新建YaHei_font.fla,ctrl+L,在库面板中右键→新建字型,弹出字体元件属性窗口,选择要嵌入的字体, 并选择为ActionScript 导出. 填入自己的类名
然后点击确定,在fla第一帧上输入Font.registerFont(YaHei_font),注册全局字体,发布YaHei_font.fla,至此生成的YaHei_font.swf就是我们稍后需要嵌入的字体库了;
下面是如何运用刚才的字体库嵌入微软雅黑字体,新建test.fla,因代码较少,直接写在第一帧上了:
1 var ldr:Loader = new Loader ; 2 ldr.load(new URLRequest("YaHei_font.swf")); 3 ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onFontsLoaded); 4 function onFontsLoaded(e:Event):void 5 { 6 //获取嵌入的字体数组 7 var a = Font.enumerateFonts(); 8 //trace(a); 9 trace(a[0].fontName); 10 var tf:TextFormat = new TextFormat(a[0].fontName,16,0x333333,true); 11 var t:TextField = new TextField ; 12 t.defaultTextFormat = tf; 13 t.embedFonts = true;//允许嵌入字体 14 t.autoSize = flash.text.TextFieldAutoSize.LEFT; 15 t.text = "嵌入微软雅黑字体"; 16 t.x = t.y = 100; 17 this.addChild(t); 18 }
代码中Font.enumerateFonts()表示嵌入字体的数组,即可以嵌入多种字体,并按先后顺序存放在此数组中,a[0].fontName表示嵌入字体名称。