In a nutshell: Don’t try to use Windows TTF files when embedding fonts in Flex on OSX, possibly a CFF thing.

Long version: I had a strange problem with font embedding in Flex Gumbo on OS X when trying to embed the following character ranges (using CFF):

																// numerals, full stop, lower, upper, punctuation, basic latin
[Embed(source='ttf/arial.ttf', fontFamily='Arial', unicodeRange='U+0030-U+0039,   U+002E,   U+0041-U+005A, U+0061-U+007A,   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', cff='true')]
public static var Arial:Class;

The first range (U+0030-U+0039) contains the numerals 0 through 9, but they were not being embedded in the resultant SWF. The TTF font I was using was Arial (regular) from my XP machine, this is because on a Mac you get a totally opaque “suitcase” file (dfont) for the whole family.

For some reason the numerals, in fact any punctuation characters, were not embedding; but letters were fine. I tested this with:

var font:Font = Font.enumerateFonts()[0] as Font;
trace(font.fontFamily + " has numerals: " + font.hasGlyphs("0"));

Very strange. Anyway the solution to this problem is to extract the TTF files from the Mac font suitacase files using Fondu (see Aral’s post on how to do this, it only takes a minute to install).

Then a simple “fondu Arial” in Terminal will extract the 4 TTF files (one for each style/weight), which will work with the DefineFont4 embedding process. Phew.