Flash&ActionScript/ActionScript
2011/11/16 17:25
폰트 내장시키기. embed fonts in fla
+ flex builder 에서내장 폰트 사용하기.
embedFonts.as
http://mx.coldstorageonline.com/index.php?bid=48
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 파일을 만든다.
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
{
[Embed(source="../data/DINMed.TTF", fontName="dinMedium", embedAsCFF="false", mimeType="application/x-font-truetype")]
static public var dinMedium:Class;
public function embedFont()
{
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);
}
}
}
http://mx.coldstorageonline.com/index.php?bid=48
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 파일을 만든다.
그리고 코딩.
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompLoadFont);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOErr);
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
loader.load(new URLRequest("fonts.swf"), context);
function onCompLoadFont(e:Event):void
{
var dinFontClass:Class = (e.currentTarget as LoaderInfo).applicationDomain.getDefinition("Din") as Class;
Font.registerFont(dinFontClass);
for each (var i:Font in Font.enumerateFonts(false))
{
trace("FONT :" ,i.fontName);
}
var dinfont:Font = Font.enumerateFonts(false)[0];
var tm:TextFormat = new TextFormat();
tm.size = 48;
tm.font = dinfont.fontName;
tm.color = 0x000000;
var tf:TextField = new TextField();
tf.embedFonts = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.defaultTextFormat = tm;
tf.text = "How are you, today?";
addChild(tf);
}
function onIOErr(e:IOErrorEvent):void
{
trace(this, e.toString());
}
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);


텍스트 필드에 HTML 속성으로 글을 쓰려면, TextField의 defaultTextFormat 대신에 setTextFormat 을 글 입력 후에 지정해줘야 한다. 이상~~하다..
플랙스 4이상에서 추가된 embedAsCFF="false" 속성은 http://blog.jidolstar.com/614 에서 참고하는게 좋음.
폰트 임베트 아주 잘 되네요 감사합니다. ^^