Загрузка SWF-шрифтов с помощью Loader прекрасно работает во Flex SDK 3.5, а не во Flex SDK 4 - PullRequest
2 голосов
/ 12 июля 2011

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

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

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

Итак, мы использовали этот подход:

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

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

Может быть, проблема в том, что шрифты загружаются как embedAsCFF для Text Layout Framework, и этот способ нельзя использовать в mx.controls.TextArea? Но так как я не могу изменить это на искровую TextArea по нескольким причинам, мне нужно решение использовать загруженные шрифты в этом mx.controls.TextArea.

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

Frank

Ответы [ 3 ]

1 голос
/ 08 августа 2011

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

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

0 голосов
/ 12 июля 2011

Этот код CSS эффективно модифицирует mx textarea для приема шрифтов CFF:

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

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

0 голосов
/ 12 июля 2011

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

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

...