Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Runtime fonts in Flash Builder 4

I am trying to get the following example to work in Flash Builder 4:

http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html

The Actionscript project compiles but all I get on screen is a tiny rotated square with no text in it.

Does anyone know why this might be happening? My code is identical to the example above - I have compiled the first class into _Arial.swf.

Edit

I've also tried this:

package {  
    import flash.display.Sprite;  
    import flash.display.Loader;  
    import flash.events.Event;  
    import flash.net.URLRequest;  
    import flash.text.*;  

    public class _Arial extends Sprite {
        [Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', fontFamily='myFont', mimeType='application/x-font')]  
        public static var _Arial:Class;  

        public function _Arial():void {  
            drawText();
        }

        public function drawText():void {  
            var tf:TextField = new TextField();  
            tf.defaultTextFormat = new TextFormat("_Arial",60,0);
            tf.embedFonts = true;  
            tf.antiAliasType = AntiAliasType.ADVANCED;  
            tf.autoSize = TextFieldAutoSize.LEFT;  
            tf.border = true;  
            tf.text = "Scott was here\nScott was here too\nblah scott...:;*&^% ";  
            tf.rotation =  15;
            addChild(tf);
            trace(Font.enumerateFonts());
        }  
    }
}


var fontList:Array = Font.enumerateFonts(false);
for (var i:uint=0; i<fontList.length; i++) {
    trace("font: "+fontList[i].fontName);
}

The trace displays: font: _Arial

like image 283
codecowboy Avatar asked Mar 02 '26 15:03

codecowboy


2 Answers

Ok, I got it to work... I started with this

   public class _Arial extends Sprite
{

    [Embed(source='fonts/Arial.ttf', fontName='_Arial',
    mimeType="application/x-font-truetype",
        unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E',
    embedAsCFF= "false")]
    public static var _Arial:Class; 

}

and to test it , I added that

  public function _Arial():void
  {
    var tf:TextField = new TextField();
    tf.defaultTextFormat = new TextFormat ( "_Arial" , 24 , 0 );
    tf.autoSize = TextFieldAutoSize.LEFT;           
            tf.embedFonts = true;
    tf.text = "This is some text to test!";
    tf.rotation = 20;
    addChild(tf);

  }

The text did display , so I got rid of the constructor and tried the code example again, and it worked!!!

like image 156
PatrickS Avatar answered Mar 04 '26 05:03

PatrickS


You have naming problems. The class is called _Arial, but you give the font you embed the same class name. That's causing problems to begin with.

Second, to use embedded fonts, you just use them like this:

// embed the font
[Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', mimeType='application/x-font')]  
public static var ArialFont:Class;


// use the font
var someTextFormat:TextFormat = new TextFormat( '_Arial', 12 );
like image 44
poke Avatar answered Mar 04 '26 05:03

poke



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!