본문 바로가기

Flex

폰트 동적 추가 하기.

폰트 동적 추가하기 fontKR.swf 에 font Class가 들어있고 linkage 네임은 font_kr로 되어있다.
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.text.AntiAliasType;
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class FontLoadTest extends Sprite
{
private var fontLibrary:Class;
private var font:Font;

public function FontLoadTest()
{
init();
}

private function init():void
{
loadFont("fontKR.swf");
}

private function loadFont(url:String):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fontLoaded);
loader.load(new URLRequest(url));
}

private function fontLoaded(e:Event):void
{
fontLibrary = e.target.applicationDomain.getDefinition("font_kr") as Class;
Font.registerFont(fontLibrary);
var fontArray:Array = Font.enumerateFonts(false);
font = fontArray[0];
trace(font.fontName);

buildText();
}

private function buildText():void
{
var tf:TextField = new TextField();
tf.defaultTextFormat = new TextFormat(font.fontName,40,0);
tf.embedFonts = true;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = "나눔고딕 Light ℃";

addChild(tf);
}
}
}
fontLibrary = e.target.applicationDomain.getDefinition("font_kr") as Class; 로딩된 폰트가 들어있는 SWF를 linkage이름으로 클래스화 시키고 Font.registerFont(fontLibrary); 폰트에 등록하면 사용할수 있다.