본문 바로가기

공부방/Flex

[Flex] 폰트 동적 추가 하기

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); 폰트에 등록하면 사용할수 있다.

출처 : http://rinn.kr/3