Загрузка 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 ответа:
Очевидно, что проблема была расположена в свойствах проекта.
В настройках" 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