Динамическое встраивание шрифтов и форматирование текстового потока с их помощью

#actionscript-3 #apache-flex #tlf #textflow

#actionscript-3 #apache-flex #tlf #textflow

Вопрос:

Во время выполнения я загружаю несколько swf-файлов, содержащих разные шрифты. У меня возникла проблема, когда я применяю его к textflow в расширенном редактируемом тексте. Есть идеи, как применить эти пользовательские шрифты к textflow?

Вот часть моего кода.

Для регистрации шрифтов

 var FontClass:*;
var dom:ApplicationDomain = response.target.applicationDomain; 
FontClass = dom.getDefinition(fileName) as Class;
Font.registerFont(FontClass);
  

Работает!

Для применения шрифта к textflow.

  var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.fontFamily = mFontName; //Font Name
    cf.fontLookup = FontLookup.EMBEDDED_CFF; 

    var editManager: IEditManager = IEditManager(textflow.interactionManager);
    editManager.applyLeafFormat(cf);
  

Никаких сбоев! Работает!

Но примененный шрифт неверен. Пожалуйста, любые предложения.

Ответ №1:

IEditManager это интерфейс, он ничего не делает. Вы должны использовать EditManager .

Интерфейсы не являются рабочими классами, они используются для определения общего набора функций, любой класс, реализующий интерфейс, должен создавать рабочие версии всех функций, определенных в интерфейсе, иначе компилятор завершит работу с ошибкой. Дальнейшее чтение здесь

Комментарии:

1. Спасибо за ответ, но это не сработало. Проблема заключается в применении пользовательских шрифтов к TextFlow. Если я применяю шрифт устройства (например, Segoe) с тем же кодом, он работает правильно. У меня есть определенный пользователем набор шрифтов, и я внедрил их в разные swf-файлы. Я могу загружать и встраивать swf-файлы в свое приложение, но они не применяются к textflow. Например, у меня есть шрифт clearviewATT, у меня есть разные swf-файлы для его разных стилей (например, bold, regular, bolditalic, light и т.д.). Когда я применяю шрифт к textflow, кажется, что текст отформатирован в соответствии с семейством шрифтов по умолчанию.

2. Добавьте эту деталь в свой вопрос, вся информация полезна