<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6736147116482496749</id><updated>2011-07-07T18:01:31.191-07:00</updated><category term='runtime font loading'/><category term='Flash CS3'/><category term='ActionScript3'/><category term='embedded fonts'/><title type='text'>Ease your Digital Life</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://easeyourdigitallife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6736147116482496749/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://easeyourdigitallife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Frank Wiesner</name><uri>http://www.blogger.com/profile/06201978727740937226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://upload.wikimedia.org/wikipedia/en/a/a5/Muten-R%C3%B4shi_photo.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6736147116482496749.post-7198000278914745512</id><published>2007-06-19T07:27:00.000-07:00</published><updated>2007-06-19T07:51:09.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript3'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime font loading'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash CS3'/><title type='text'>Flash CS3 &amp; ActionScript 3 Example: Loading fonts at runtime</title><content type='html'>&lt;p&gt;This example demonstrates, how a movie can use fonts embedded into another movie. All resources I found so far (like &lt;a href="http://nochump.com/blog/?p=20"&gt;AS3 Runtime Font Loading&lt;/a&gt;) use some Flex2 code to get it done. My example is based on pure Flash CS3.&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Step 1: Create Embedded Font Movie:&lt;/p&gt;&lt;p&gt;Create a new movie with name &lt;code&gt;embeddedFont.fla&lt;/code&gt; and add a new font to your Library:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s1600-h/fontSymbolProperties.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s320/fontSymbolProperties.jpg" alt="" id="BLOGGER_PHOTO_ID_5077777850796514242" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Now edit the Linkage Properties:&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_lzvGuyeACeQ/RnfkMlUSm9I/AAAAAAAAABM/-yQEF8-AvSg/s1600-h/fontLinkageProperties.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_lzvGuyeACeQ/RnfkMlUSm9I/AAAAAAAAABM/-yQEF8-AvSg/s320/fontLinkageProperties.jpg" alt="" id="BLOGGER_PHOTO_ID_5077778009710304210" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Save the file and publish as swf.&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Step 2: Create Class Files:&lt;/p&gt;&lt;p&gt;Create a new movie with name &lt;code&gt;FontLoadingExample.as&lt;/code&gt; and add the following code:&lt;/p&gt;&lt;pre&gt;package {&lt;br /&gt; import flash.display.Sprite;&lt;br /&gt; import flash.text.TextField;&lt;br /&gt; import flash.events.Event;&lt;br /&gt;&lt;br /&gt; public class FontLoadingExample extends Sprite {&lt;br /&gt;&lt;br /&gt;   private var textFieldFactory:TextFieldFactory;&lt;br /&gt;&lt;br /&gt;   public function FontLoadingExample() {&lt;br /&gt;     trace("FontLoadingExample")&lt;br /&gt;     textFieldFactory = new TextFieldFactory();&lt;br /&gt;     textFieldFactory.addEventListener(TextFieldFactory.FONT_LOADED, fontReady);&lt;br /&gt;     textFieldFactory.loadFont("embeddedFont.swf")&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   private function fontReady(e:Event):void {&lt;br /&gt;     var tf:TextField = textFieldFactory.getNewTextField("Bingo!", 0x000000, 14);&lt;br /&gt;     addChild(tf);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Now create a new movie with name &lt;code&gt;TextFieldFactory.as&lt;/code&gt; and add the following code:&lt;/p&gt;&lt;pre&gt;package {&lt;br /&gt;&lt;br /&gt; import flash.text.Font;&lt;br /&gt; import flash.text.TextField;&lt;br /&gt; import flash.text.TextFormat;&lt;br /&gt; import flash.text.TextFieldAutoSize;&lt;br /&gt; import flash.text.TextFormatAlign;&lt;br /&gt; import flash.text.TextFieldType;&lt;br /&gt; import flash.text.AntiAliasType;&lt;br /&gt; import flash.utils.*;&lt;br /&gt; import flash.display.Loader;&lt;br /&gt; import flash.events.Event;&lt;br /&gt; import flash.events.EventDispatcher;&lt;br /&gt; import flash.net.URLRequest;&lt;br /&gt; import flash.system.ApplicationDomain;&lt;br /&gt; import flash.system.LoaderContext;&lt;br /&gt;&lt;br /&gt; public class TextFieldFactory extends EventDispatcher {&lt;br /&gt;&lt;br /&gt;   public static var FONT_LOADED:String = "fontLoaded";&lt;br /&gt;   private static var embeddedFont:Font = null;&lt;br /&gt;   private var loader:Loader = null;&lt;br /&gt;&lt;br /&gt;   public function TextFieldFactory() {&lt;br /&gt;     loader = new Loader();&lt;br /&gt;         loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   public function loadFont(swfURL:String):void {&lt;br /&gt;     var context:LoaderContext = new LoaderContext();&lt;br /&gt;     context.applicationDomain=ApplicationDomain.currentDomain;&lt;br /&gt;     loader.load(new URLRequest(swfURL), context);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   private function completeHandler(event:Event):void {&lt;br /&gt;     var embeddedFontClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("EmbeddedGaramond") as Class;&lt;br /&gt;     Font.registerFont(embeddedFontClass);&lt;br /&gt;     var embeddedFontsArray:Array = Font.enumerateFonts(false);&lt;br /&gt;     embeddedFont = embeddedFontsArray[0];&lt;br /&gt;     dispatchEvent(new Event(TextFieldFactory.FONT_LOADED));&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextField(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     if ((embeddedFont != null) &amp;amp;&amp; embeddedFont.hasGlyphs(t)) {&lt;br /&gt;       return getNewTextFieldEmbeddedFont(t, c, s)&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;       return getNewTextFieldDeviceFont(t, c, s)&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextFieldEmbeddedFont(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     trace("getNewTextFieldEmbeddedFont: "+t);&lt;br /&gt;&lt;br /&gt;     var tf:TextField = new TextField();&lt;br /&gt;     var fo:TextFormat = new TextFormat();&lt;br /&gt;&lt;br /&gt;     fo.font = embeddedFont.fontName;&lt;br /&gt;     fo.color = c;&lt;br /&gt;     fo.size = s&lt;br /&gt;     tf.defaultTextFormat = fo;&lt;br /&gt;     tf.autoSize = TextFieldAutoSize.LEFT&lt;br /&gt;     tf.type = TextFieldType.DYNAMIC;&lt;br /&gt;     tf.multiline = false;&lt;br /&gt;     tf.selectable = false;&lt;br /&gt;     tf.textColor = c;&lt;br /&gt;     tf.embedFonts = true;&lt;br /&gt;     tf.antiAliasType = AntiAliasType.ADVANCED;&lt;br /&gt;     tf.border = true;&lt;br /&gt;     tf.wordWrap = false;&lt;br /&gt;     tf.text = t;&lt;br /&gt;     return tf;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextFieldDeviceFont(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     var tf:TextField = new TextField();&lt;br /&gt;     var fo:TextFormat = new TextFormat();&lt;br /&gt;&lt;br /&gt;     trace("getNewTextFieldDeviceFont: "+t);&lt;br /&gt;     fo.font = "_serif";&lt;br /&gt;     fo.color = c;&lt;br /&gt;     fo.size = s&lt;br /&gt;     tf.defaultTextFormat = fo;&lt;br /&gt;     tf.autoSize = TextFieldAutoSize.LEFT&lt;br /&gt;     tf.type = TextFieldType.DYNAMIC;&lt;br /&gt;     tf.multiline = false;&lt;br /&gt;     tf.selectable = false;&lt;br /&gt;     tf.textColor = c;&lt;br /&gt;     tf.embedFonts = false;&lt;br /&gt;     tf.border = true;&lt;br /&gt;     tf.wordWrap = false;&lt;br /&gt;     tf.text = t;&lt;br /&gt;     return tf;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Save both files.&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Step 3: Create the Font Loading Movie:&lt;/p&gt;&lt;p&gt;Create a new movie with name &lt;code&gt;FontLoadingExample.fla&lt;/code&gt; and and set the document class to &lt;code&gt;FontLoadingExample.fla&lt;/code&gt;.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_lzvGuyeACeQ/RnfsAlUSm-I/AAAAAAAAABU/19uZtz3PxSI/s1600-h/settingDocumentClass.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_lzvGuyeACeQ/RnfsAlUSm-I/AAAAAAAAABU/19uZtz3PxSI/s320/settingDocumentClass.jpg" alt="" id="BLOGGER_PHOTO_ID_5077786599644896226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Save, publish and run the movie. You will see the words "Bingo!" set with the embedded font.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6736147116482496749-7198000278914745512?l=easeyourdigitallife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://easeyourdigitallife.blogspot.com/feeds/7198000278914745512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6736147116482496749&amp;postID=7198000278914745512' title='48 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6736147116482496749/posts/default/7198000278914745512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6736147116482496749/posts/default/7198000278914745512'/><link rel='alternate' type='text/html' href='http://easeyourdigitallife.blogspot.com/2007/06/flash-cs3-actionscript-3-example.html' title='Flash CS3 &amp; ActionScript 3 Example: Loading fonts at runtime'/><author><name>Frank Wiesner</name><uri>http://www.blogger.com/profile/06201978727740937226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://upload.wikimedia.org/wikipedia/en/a/a5/Muten-R%C3%B4shi_photo.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s72-c/fontSymbolProperties.jpg' height='72' width='72'/><thr:total>48</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6736147116482496749.post-1465445187627817147</id><published>2007-06-19T07:07:00.000-07:00</published><updated>2007-06-19T07:26:18.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript3'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash CS3'/><title type='text'>Flash CS3 &amp; ActionScript 3 Example: Using hasGlyphs() with embedded fonts</title><content type='html'>&lt;p&gt;This example demonstrates the &lt;code&gt;hasGlyphs()&lt;/code&gt; function with an embedded font (no need for Flex2).&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Step 1: Embed Font:&lt;/p&gt;Create a new movie and add a new font to your Library:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s1600-h/fontSymbolProperties.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s320/fontSymbolProperties.jpg" alt="" id="BLOGGER_PHOTO_ID_5077777850796514242" border="0" /&gt;&lt;/a&gt;&lt;p&gt;now edit the linkage properties:&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_lzvGuyeACeQ/RnfkMlUSm9I/AAAAAAAAABM/-yQEF8-AvSg/s1600-h/fontLinkageProperties.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_lzvGuyeACeQ/RnfkMlUSm9I/AAAAAAAAABM/-yQEF8-AvSg/s320/fontLinkageProperties.jpg" alt="" id="BLOGGER_PHOTO_ID_5077778009710304210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="font-weight: bold;"&gt;Step 2: Add Code:&lt;/p&gt;&lt;p&gt;Create a new text file with the name &lt;code&gt;Test.as&lt;/code&gt; in the same folder and add the following code:&lt;/p&gt;&lt;pre&gt;package {&lt;br /&gt; import flash.display.Sprite;&lt;br /&gt; import flash.text.TextField;&lt;br /&gt;&lt;br /&gt; public class Test extends Sprite {&lt;br /&gt;&lt;br /&gt;   private var textFieldFactory:TextFieldFactory;&lt;br /&gt;  &lt;br /&gt;   public function Test() {&lt;br /&gt;     trace("Embedded Font Test")&lt;br /&gt;     textFieldFactory = new TextFieldFactory();&lt;br /&gt;     var tf:TextField = textFieldFactory.getNewTextField("Bingo!", 0x000000, 14);&lt;br /&gt;     addChild(tf);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Now create a new text file with the name &lt;code&gt;TextFieldFactory.as&lt;/code&gt; in the same folder and add the following code:&lt;/p&gt;&lt;pre&gt;package {&lt;br /&gt;&lt;br /&gt; import flash.text.Font;&lt;br /&gt; import flash.text.TextField;&lt;br /&gt; import flash.text.TextFormat;&lt;br /&gt; import flash.text.TextFieldAutoSize;&lt;br /&gt; import flash.text.TextFormatAlign;&lt;br /&gt; import flash.text.TextFieldType;&lt;br /&gt; import flash.text.AntiAliasType;&lt;br /&gt; import flash.utils.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public class TextFieldFactory {&lt;br /&gt;&lt;br /&gt;   private static var embeddedFont:Font = null;&lt;br /&gt;&lt;br /&gt;   public function TextFieldFactory() {&lt;br /&gt;     var embeddedFontClass:Class = getDefinitionByName("EmbeddedGaramond") as Class;&lt;br /&gt;     Font.registerFont(embeddedFontClass);&lt;br /&gt;     var embeddedFontsArray:Array = Font.enumerateFonts(false);&lt;br /&gt;     embeddedFont = embeddedFontsArray[0];&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextField(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     if ((embeddedFont != null) &amp;amp;&amp; embeddedFont.hasGlyphs(t)) {&lt;br /&gt;       return getNewTextFieldEmbeddedFont(t, c, s)&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;       return getNewTextFieldDeviceFont(t, c, s)&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextFieldEmbeddedFont(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     trace("getNewTextFieldEmbeddedFont: "+t);&lt;br /&gt;&lt;br /&gt;     var tf:TextField = new TextField();&lt;br /&gt;     var fo:TextFormat = new TextFormat();&lt;br /&gt;&lt;br /&gt;     fo.font = embeddedFont.fontName;&lt;br /&gt;     fo.color = c;&lt;br /&gt;     fo.size = s&lt;br /&gt;     tf.defaultTextFormat = fo;&lt;br /&gt;     tf.autoSize = TextFieldAutoSize.LEFT&lt;br /&gt;     tf.type = TextFieldType.DYNAMIC;&lt;br /&gt;     tf.multiline = false;&lt;br /&gt;     tf.selectable = false;&lt;br /&gt;     tf.textColor = c;&lt;br /&gt;     tf.embedFonts = true;&lt;br /&gt;     tf.antiAliasType = AntiAliasType.ADVANCED;&lt;br /&gt;     tf.border = true;&lt;br /&gt;     tf.wordWrap = false;&lt;br /&gt;     tf.text = t;&lt;br /&gt;     return tf;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public function getNewTextFieldDeviceFont(t:String, c:uint, s:uint):TextField {&lt;br /&gt;     var tf:TextField = new TextField();&lt;br /&gt;     var fo:TextFormat = new TextFormat();&lt;br /&gt;&lt;br /&gt;     trace("getNewTextFieldDeviceFont: "+t);&lt;br /&gt;     fo.font = "_serif";&lt;br /&gt;     fo.color = c;&lt;br /&gt;     fo.size = s&lt;br /&gt;     tf.defaultTextFormat = fo;&lt;br /&gt;     tf.autoSize = TextFieldAutoSize.LEFT&lt;br /&gt;     tf.type = TextFieldType.DYNAMIC;&lt;br /&gt;     tf.multiline = false;&lt;br /&gt;     tf.selectable = false;&lt;br /&gt;     tf.textColor = c;&lt;br /&gt;     tf.embedFonts = false;&lt;br /&gt;     tf.border = true;&lt;br /&gt;     tf.wordWrap = false;&lt;br /&gt;     tf.text = t;&lt;br /&gt;     return tf;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Set the document class to &lt;code&gt;Test&lt;/code&gt; and save all files. Pulish and run the movie and you will see the words "Bingo!" set with the embedded font.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6736147116482496749-1465445187627817147?l=easeyourdigitallife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://easeyourdigitallife.blogspot.com/feeds/1465445187627817147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6736147116482496749&amp;postID=1465445187627817147' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6736147116482496749/posts/default/1465445187627817147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6736147116482496749/posts/default/1465445187627817147'/><link rel='alternate' type='text/html' href='http://easeyourdigitallife.blogspot.com/2007/06/flash-cs3-actionscript-3-example-using.html' title='Flash CS3 &amp; ActionScript 3 Example: Using hasGlyphs() with embedded fonts'/><author><name>Frank Wiesner</name><uri>http://www.blogger.com/profile/06201978727740937226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://upload.wikimedia.org/wikipedia/en/a/a5/Muten-R%C3%B4shi_photo.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_lzvGuyeACeQ/RnfkDVUSm8I/AAAAAAAAABE/6WJlgG2CAkI/s72-c/fontSymbolProperties.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
