Можно ли встраивать шрифты во время выполнения для использования в существующих экземплярах динамических текстовых полей в SWF-файлах?

Я пытаюсь встроить шрифты во время выполнения в ActionScript, и это немного работает. Я могу встраивать шрифты либо с помощью тега embed, либо путем загрузки ресурса библиотеки шрифтов с именем связи и использования его с новым TextField. Однако в текстовом поле, которое существует во фрагменте ролика, уже нет встроенного шрифта и отсутствуют символы.

Быстрый пример в коде (textInstance существует во фрагменте ролика):

var embeddedFonts = Font.enumerateFonts(); //Shows embedded font

var textFormat:TextFormat = textInstance.getTextFormat();

textInstance.text = "Don't be lazy"; //missing characters 

var textField:TextField = new TextField();

textField.embedFonts = true;
textField.defaultTextFormat = textFormat;
textField.selectable = false;
textField.autoSize = TextFieldAutoSize.LEFT;
textField.multiline = true;

textField.text = "Don't be lazy"; //shows all characters
addChild(textField);

Можно ли сделать это? Я хочу внедрить шрифт во время выполнения, загружаю несколько SWF-файлов и не хочу встраивать шрифт в каждый SWF-файл.


person Dan Grossen    schedule 25.05.2011    source источник


Ответы (2)


Я предполагаю, что вы уже textInstance добавили в ваш swf-файл, и в нем есть TextFormat шрифт, который вы загружаете позже.

После загрузки шрифта в swf вы должны либо снова установить текст с помощью textInstance.text = textInstance.text (если textInstance имеет defaultTextFormat), либо установить textFormat с помощью textInstance.setTextFormat(textFormat), потому что текстовое поле не обновляется автоматически при загрузке шрифта.

person DanielB    schedule 25.05.2011
comment
Никаких кубиков. В тексте все еще отсутствуют символы :( - person Dan Grossen; 25.05.2011

Мне пришлось создать новый TextFormat со шрифтом и установить его как defaultTextFormat, чтобы заставить его работать.

person Dan G    schedule 25.05.2011