Category Archives: CS5

FontLoader 2.3

Вышла новая версия FontLoader — 2.3!
Наконец-то внедрена поддержка CFF-шрифтов (в теге DefineFont4) для работы FlashTextEngine. Эту поддержку можно было добавить единственной строчкой с ID тега DefineFont4 (91), но мне этого показалось слишком мало, чтобы поднимать версию FontLoader-а.

В ходе сборки библиотек с CFF-шрифтами в Flash CS5 неожиданно выяснилось (по правде сказать, я так и не пощупал FTE до сих пор), что для внедрения требуется библиотека textLayout.swc, которая может быть внедрена непосредственно в swf, либо может загружаться как RSL.

В первом случае кроме излишнего веса конечного swf, проблемы не было — тег DefineFont4 объявлен, шрифт есть, FontLoader пашет как автомат Калашникова. Во втором же случае Flash CS5 создает оболочку-прелоадер и в него внедряет наш swf, используя Embed (он же DefineBinaryData), т. е. в бинарном виде. Прелоадер загружает самого себя, загружает необходимые RSL и выполняет loadBytes внедренного swf. При подобной схеме FontLoader не находит в таком прелоадере шрифтов. В связи с этим, был добавлен рекурсивный анализ тегов DefineBinaryData на предмет наличия там валидного SWF. Проще говоря, теперь FontLoader умеет выдергивать шрифты из embedded-swf вне зависимости от вложенности.

Для подготовки библиотек со шрифтами можно использовать любой инструмент — Flash IDE от пятой версии до последней или Flash/Flex Builder (метатег [Embed]), либо Flex SDK.

Посмотреть демо и скачать примеры с исходниками класса.

Font Embedding в Flash CS5

Наконец-то:

UPD: Однако это не избавило от чехарды. Теперь один и тот же шрифт имеет разные начертания (как должно было быть) и разные имена (>_<), например Times Roman с начертанием regular и Times с начертанием italic. Хотя я явно указал просто Times в обоих случаях. Правда, с Myriad Pro всё было в порядке, пример из чехарды работает, наконец-то. А с Times — пляски.