Загрузка swf-шрифтов с загрузчиком отлично работает в Flex SDK 3.5-не в Flex SDK 4


Для большого проекта у меня есть следующая настройка:

  • редактор содержимого, созданный с помощью Flex SDK 3.5
  • Средство просмотра содержимого, созданное с помощью Flex SDK 4.1

Оба должны работать с динамически загружаемыми шрифтами, поскольку пользователь может использовать те шрифты, которые он хочет.

Поэтому мы использовали такой подход:

  • преобразование файлов шрифтов с помощью Flash Professional в SWF-файлы (создание шрифта SWF )
  • редактор: загрузка шрифтов с помощью загрузчика ( загрузка SWF шрифт )
  • затем шрифты могут быть идеально использованы в приложении для создания htmlText
  • просмотрщик: тот же подход к загрузке шрифтов + регистрация их шрифтом.registerFont (Flex 4 Embed font from swf )

Теперь проблемы: хотя загруженные шрифты перечислены при трассировке шрифта.enumerateFonts (false), они не используются в текстовой области. Там текст отображается шрифтом по умолчанию.

Возможно, проблема в том, что шрифты загружаются как embedAsCFF для структуры макета текста, и этот способ не могут быть использованы в mx.контроли.Окна? Но поскольку я не могу изменить это на spark TextArea по нескольким причинам, мне нужно решение, чтобы использовать загруженные шрифты в этом mx.контроли.элемент textarea.

Есть идеи? Заранее большое спасибо!

Фрэнк

3 2

3 ответа:

Очевидно, что проблема была расположена в свойствах проекта.

В настройках" Flex Compiler "флажок" Использовать Flash Text Engine в компонентах MX " должен быть снят!

Я не уверен, почему вы используете Flash Pro для создания шрифта swf. Вы можете так же легко сделать это с помощью CSS путемвстраивания шрифтов и компиляции его в виде тематического swf, который может бытьзагружен во время выполнения .

Это должно работать как для Flex 3, так и для Flex 4 (с TLF).

Этот CSS-код эффективно модифицирует mx textarea, чтобы принять шрифты CFF:

mx|global{
    textFieldClass:         ClassReference("mx.core.UIFTETextField");
}

Из документов: "когда компоненты MX используют FTE, они могут использовать те же встроенные шрифты, что и компоненты Spark, которые всегда используют FTE. В противном случае шрифт должен быть встроен с embedAsCFF="false" для использования компонентами на основе текстовых полей и с embedAsCFF="true" для использования компонентами на основе FTE."http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIFTETextField.html