+ flex builder 에서내장 폰트 사용하기.
(flex project achive)
embedFonts.as
AssetManager.as
http://www.marcosweskamp.com/blog/archives/000113.html
http://marcosweskamp.com/blog/2005/10/embedding-fonts-in-as3.html
http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html
http://www.connectedpixel.com/blog/fonts/embedding
http://nochump.com/blog/?p=20
http://blog.paoloiulita.it/2008/03/11/as3-embedding-font-with-code-only/
+ swf 파일을 불러와서 폰트를 사용하는 방법
우선 아래처럼 라이브러리에 New font 로 원하는 폰트를 링크등록시킨후, swf 파일을 만든다.
embedFont.zip |
embedFonts.as
package {
import flash.display.Sprite;
import flash.text.AntiAliasType;
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
public class embedFont extends Sprite
{
public function embedFont()
{
Font.registerFont(AssetManager.dinMedium);
var tm:TextFormat = new TextFormat();
tm.size = 48;
tm.font = "dinMedium";
tm.color = 0x000000;
var tf:TextField = new TextField();
tf.embedFonts = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.defaultTextFormat = tm;
tf.text = "is this Din \nMedium font?";
addChild(tf);
}
}
}
AssetManager.as
package
{
final public class AssetManager
{
[Embed(source="../data/DINMed.TTF", fontName="dinMedium", mimeType="application/x-font-truetype")]
static public var dinMedium:Class;
}
}
refer to
http://mx.coldstorageonline.com/index.php?bid=48http://www.marcosweskamp.com/blog/archives/000113.html
http://marcosweskamp.com/blog/2005/10/embedding-fonts-in-as3.html
http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html
http://www.connectedpixel.com/blog/fonts/embedding
http://nochump.com/blog/?p=20
http://blog.paoloiulita.it/2008/03/11/as3-embedding-font-with-code-only/
+ swf 파일을 불러와서 폰트를 사용하는 방법
우선 아래처럼 라이브러리에 New font 로 원하는 폰트를 링크등록시킨후, swf 파일을 만든다.
그리고 Loader로 불러서 사용하면 되는데,
위 사이트를 참고로 아래와 같이 두개의 파일을 만들어 실행하면 된다.
중요한 건 빨간색 부분인데, 필요에 따라서 간단하게 바꿔쓰면 좋을 것 같다.
// FontLoadingExample.fla document class
// FontLoadingExample.as
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
public class FontLoadingExample extends Sprite {
private var textFieldFactory:TextFieldFactory;
public function FontLoadingExample() {
textFieldFactory = new TextFieldFactory();
textFieldFactory.addEventListener(TextFieldFactory.FONT_LOADED, fontReady);
textFieldFactory.loadFont("fontEmbed.swf");
}
private function fontReady(e:Event):void {
var tf:TextField = textFieldFactory.getNewTextField("Bingo!", 0x000000, 14);
addChild(tf);
}
}
}
// custom class
// TextFieldFactory.as
package {
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormatAlign;
import flash.text.TextFieldType;
import flash.text.AntiAliasType;
import flash.utils.*;
import flash.display.Loader;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class TextFieldFactory extends EventDispatcher {
public static var FONT_LOADED:String = "fontLoaded";
private static var embeddedFont:Font = null;
private var loader:Loader = null;
public function TextFieldFactory() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
}
public function loadFont(swfURL:String):void {
var context:LoaderContext = new LoaderContext();
context.applicationDomain=ApplicationDomain.currentDomain;
loader.load(new URLRequest(swfURL), context);
}
private function completeHandler(event:Event):void {
var embeddedFontClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("embedDin") as Class;
//"embedDin" 는 폰트 swf에서 링크된 이름
Font.registerFont(embeddedFontClass);
var embeddedFontsArray:Array = Font.enumerateFonts(false);
embeddedFont = embeddedFontsArray[0];
dispatchEvent(new Event(TextFieldFactory.FONT_LOADED));
}
public function getNewTextField(t:String, c:uint, s:uint):TextField {
if ((embeddedFont != null) && embeddedFont.hasGlyphs(t)) {
return getNewTextFieldEmbeddedFont(t,c,s);
} else {
return getNewTextFieldDeviceFont(t,c,s);
}
}
public function getNewTextFieldEmbeddedFont(t:String, c:uint, s:uint):TextField {
trace("getNewTextFieldEmbeddedFont: "+t);
var tf:TextField = new TextField();
var fo:TextFormat = new TextFormat();
fo.font = embeddedFont.fontName;
fo.color = c;
fo.size = s;
tf.defaultTextFormat = fo;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.type = TextFieldType.DYNAMIC;
tf.multiline = false;
tf.selectable = false;
tf.textColor = c;
tf.embedFonts = true;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.border = true;
tf.wordWrap = false;
tf.text = t;
return tf;
}
public function getNewTextFieldDeviceFont(t:String, c:uint, s:uint):TextField {
var tf:TextField = new TextField();
var fo:TextFormat = new TextFormat();
trace("getNewTextFieldDeviceFont: "+t);
fo.font = "_serif";
fo.color = c;
fo.size = s;
tf.defaultTextFormat = fo;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.type = TextFieldType.DYNAMIC;
tf.multiline = false;
tf.selectable = false;
tf.textColor = c;
tf.embedFonts = false;
tf.border = true;
tf.wordWrap = false;
tf.text = t;
return tf;
}
}
}
refer to :
http://easeyourdigitallife.blogspot.com/2007/06/flash-cs3-actionscript-3-example-using.html
+ 라이브러리에 등록된 폰트 바로 사용하기
위에 그림처럼 라이브러리에 등록된 폰트를 직접 사용하기
var dinClass:embedDin = new embedDin(); trace(dinClass is Font); var tm:TextFormat = new TextFormat(); tm.font = dinClass.fontName; tm.size = 50; var tf:TextField = new TextField(); tf.embedFonts = true; tf.defaultTextFormat = tm; tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "IS Din?"; addChild(tf);


embedFont.zip


