Проблемы с тегом [embed] и шрифтами - PullRequest
0 голосов
/ 14 мая 2010

У меня есть проблема с тегом [embed]. Даже если для свойства embedFonts текстового поля установлено значение true, текст не отображается.

Дело в том, что раньше он работал, а после некоторых изменений (не связанных со шрифтами) - нет. Я хотел бы понять, как работает процесс встраивания шрифта, чтобы найти ошибку в моем коде.

Я заявляю:

[Embed(source = 'asset/font.ttf', fontName="font", mimeType="application/x-font-truetype")] private static var font:String;

чтобы назначить шрифт программе.

Тогда я называю «шрифт» при объявлении моего текстового формата. Является ли свойство "fontName" ссылкой на текстовый формат?

Я работаю с flashdevelop и flex_sdk_4.0.0.14159 (большой Adobe, с воздухом (~ 140mo))

Спасибо!

-Leg

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Это может быть сложно сделать правильно. Мне пришлось бороться с этим около 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 по устранению неполадок со шрифтами, в которой перечислены доступные менеджеры шрифтов. Попробуйте их, пока не найдете тот, который работает.

0 голосов
/ 16 мая 2010

Проблема возникла из-за модификации в 4.0 Flex SDK

http://opensource.adobe.com/wiki/display/flexsdk/Font+Embedding+Reprise

Я установил совместимость с Flash Player 9 (с SDK 3.4), и он снова работает.

...