flash中嵌入字体实现原理及代码

1、建立FontLibrary.fla文件,在其文档类FontLibrary.as中写如下代码

复制代码
代码如下:

package {
import flash.text.Font;
public class FontLibrary extends Sprite {
[Embed(systemFont="华文中宋", fontName="MyFont", unicodeRange="U+8f93,U+5165,U+6587,U+5b57", mimeType="application/x-font")]
static public var MyClass : Class;
public function FontLibrary() {
Font.registerFont(MyClass);
}
}
}

如果不是嵌入系统字体,而是嵌入外部路径的字体,则按照如下写:

复制代码
代码如下:

package {
import flash.text.Font;
public class FontLibrary extends Sprite {
[Embed(source="pages/simhei.ttf", fontName="MyFont", unicodeRange="U+8f93,U+5165,U+6587,U+5b57", mimeType="application/x-font")]
static public var MyClass : Class;
public function FontLibrary() {
Font.registerFont(MyClass);
}
}
}

执行编译生成FontLibrary.swf
2、调用嵌入的字体文件,在主程序中写如下代码

复制代码
代码如下:

package{
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class Main extends MovieClip{
private var fontLoader:Loader;
private var txtFmt:TextFormat;
private var txtFld:TextField;
public function Main(){
fontLoader = new Loader();
fontLoader.load(new URLRequest("FontLibrary.swf"));
fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
}
private function completeHandler(e:Event):void{
txtFmt=new TextFormat("MyFont",68,0x000000);
txtFld=new TextField();
txtFld.autoSize=TextFieldAutoSize.LEFT;
txtFld.embedFonts=true;
txtFld.text="显示中文";
txtFld.setTextFormat(txtFmt);
addChild(txtFld);
}
}
}

IT时代网(关注微信公众号ITtime2000,定时推送,互动有福利惊喜)所有原创文章版权所有,未经授权,转载必究。
创客100创投基金成立于2015年,直通硅谷,专注于TMT领域早期项目投资。LP均来自政府、互联网IT、传媒知名企业和个人。创客100创投基金对IT、通信、互联网、IP等有着自己独特眼光和丰富的资源。决策快、投资快是创客100基金最显著的特点。

相关文章
中芯国际联手国家队斥500亿投建12吋晶圆制造 什么信号?
中芯国际等被美列黑名单 外交部:坚决反对美方无端打压中国企业
中芯国际遭“断粮”背后:芯片产业链加速国产化
被美国列入“黑名单”?中芯国际:未收到此类官方消息

精彩评论