Posts Tagged: fonts


4
Jun 10

Migrating to Flex SDK 4

In moving to compiling projects with the new Flex SDK 4, in noticed a couple of gotchas to do with the EMBED metatag that I thought I'd better share:

Runtime shared libraries
If you're like me and want to embed assets in your project with the EMBED Flex metatag, so you can manage and update things easily, there's a an extra compiler parameter you must add, in order for your project to compile properly:

--static-link-runtime-shared-libraries=true

This is already added as a new default parameter to the new version of FlashDevelop. But if you're planning to build projects from outside of FlashDevelop, you must add this to your compiler string. Otherwise, the compiler will think you have uninitialised constants and warn you so.

Embedding fonts
Using the EMBED metatag (or runtime loading) for fonts is the sensible way forward. The amount of projects I've seen where you need to build from an FLA file full of fonts you need to install that you can't find is crazy. With Flex SDK 4, you'll need to add an extra attribute to your embed tag for fonts, called 'embedAsCFF':

[Embed(source='myfont.ttf', fontName='MY_FONT', fontWeight='regular', unicodeRange='U+0020-U+0040,U+0041-U+005A', mimeType='application/x-font', embedAsCFF='false')]
public static const MY_FONT :Class;


6
Sep 09

How to embed fonts in pure AS3

On my travels as a contractor, I've seen various methods used for embedding fonts in ActionScript 3 projects (code embedded, creating font SWFs, runtime loading, etc). Each of them has its own merits (and limitations), but generally you're looking for something that's easy to do, easy to maintain (for others, not just yourself) and of course that works!

So, here's the method I use for pure AS3 projects I compile with the Flex SDK. I embed the TTF or OTF file in a 'Style' class and include those font files in the CVS/SVN repository too - it does my head in when fonts go missing, because a designer can't remember which font they used:

import flash.text.Font;
import flash.text.TextFormat;

// UNICODE RANGE REFERENCE
/*
Default ranges
U+0020-U+0040, // Punctuation, Numbers
U+0041-U+005A, // Upper-Case A-Z
U+005B-U+0060, // Punctuation and Symbols
U+0061-U+007A, // Lower-Case a-z
U+007B-U+007E, // Punctuation and Symbols

Extended ranges (if multi-lingual required)
U+0080-U+00FF, // Latin I
U+0100-U+017F, // Latin Extended A
U+0400-U+04FF, // Cyrillic
U+0370-U+03FF, // Greek
U+1E00-U+1EFF, // Latin Extended Additional
*/

[Embed(source = '../fonts/myfont.ttf', fontName = 'MY_FONT',
fontWeight = 'regular', unicodeRange =
'U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E',
mimeType = 'application/x-font')]
public static const MY_FONT :Class;

public static const DEFAULT_FONT :String        = "MY_FONT";
public static const DEFAULT_TEXT_COLOUR :int = 0xFFFFFF;
public static const DEFAULT_TEXT_SIZE :int = 14;
public static const MY_TEXT_FORMAT :TextFormat = new
TextFormat(DEFAULT_FONT, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_COLOUR);

Through experience, this seems to be the most robust and maintainable way of dealing with fonts (not to throw out more flexible, but perhaps less robust ways, such as runtime loading), especially when you need control of the unicode ranges you are embedding - which I have included for reference.


1
Sep 09

Typelight – a freeware font editor

I just stumbled across this rather useful OpenType font editor. Called typelight, there are freeware and business licensing options available and you should certainly consider it before forking out for something like Fontographer.


2
Sep 08

When fonts attack

You know the drill... you open an FLA you've been given and it complains it's missing several never-before-heard-of fonts that you can't find anywhere. Wouldn't life be easy if everything could just be Arial, for example. Try this little JSFL command I wrote (packaged as a ZIP, since it needs the dialog box XML file included) to change all textfields in an FLA to a given font name.