Это может быть сложно сделать правильно. Мне пришлось бороться с этим около 10 дней назад, и только если я попробовал несколько комбинаций имен и параметров для встраивания, я смог заставить его работать.
Я читаю сообщения в блогах, в которых содержался неподтвержденный совет, что вам нужно было включить fontStyle, если вам нужен жирный шрифт или еще много чего. Вот заклинание, которое сработало для меня:
[Embed(source="assets/HelveticaBold.ttf",
fontName="HelveticaBold",
fontWeight="bold",
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')]
private static var HelveticaBold:Class;
Я не думаю, что unicodeRange
является строго необходимым, но мне не нужен был весь шрифт, и приведенное выше дает вам эквивалент "Basic Latin" в IDE.
Когда я хочу использовать шрифт, я делаю так:
var titleFormat:TextFormat = new TextFormat();
titleFormat.font = "HelveticaBold";
titleFormat.bold = true;
titleFormat.color = 0x0;
titleFormat.size = 18;
var errorTitle:TextField = new TextField();
addChild(errorTitle);
errorTitle.embedFonts = true;
errorTitle.autoSize = TextFieldAutoSize.LEFT;
errorTitle.antiAliasType = AntiAliasType.ADVANCED;
errorTitle.x = 5;
errorTitle.y = 5;
errorTitle.defaultTextFormat = titleFormat;
Не могу поверить, что пропустил самый важный кусок. Вышеописанное не сработало, пока я не заставил компилятор mxmlc использовать собственный менеджер шрифтов.
Добавьте следующее как параметр компилятора:
-managers=flash.fonts.AFEFontManager
В Flex 3 имеется техническая справка Adobe по устранению неполадок со шрифтами, в которой перечислены доступные менеджеры шрифтов. Попробуйте их, пока не найдете тот, который работает.