Записки о Flash

Компиляция шрифтов в Adobe Flash CS4

Жил-был Flash. Хорошо жил. От 1 до 9-ой версии.
А потом воспаленный мозг разработчиков новой версии IDE решил, что нужно «поправить» работу со шрифтами в CS4. И поправили.

Теперь я не могу скомпилировать либу с одним и тем же шрифтом, но разными начертаниями, дабы использовать оные в html-тексте. Простейший код:

This content requires Adobe Flash Player.


Заставить его работать в CS4, не прибегая к метатегу Embed вы не сможете. А для использования Embed вам нужен Flex SDK, написать класс, влепить переменную, порадоваться в итоге новым трем классам и одному интерфейсу в swf-ке (рутовый, класс шрифта и флексовый FontAsset на пару с IFlexAsset). Я уже не говорю про безумно казуальное указание диапазонов символов.
Зато в CS4 можете налепить кучу шрифтов с разными именами (Myriad Pro Bold, Myriad Pro Italic и т. п.) и стилем начертания regular. Браво, Adobe!


24 comments

24 Comments so far

  1. silin January 25th, 2010 10:57

    ага, но ведь остался и старый добрый способ: создать где-нибудь в сторонке текстфилды с нужным начертанием и диапазоном эмбеда – и все отлично заработает,
    таким же макаром и в SWC загнать его не проблема,
    по мне так (через SWC)и в mxmlc-ные проекты удобнее их встраивть, чем через [Embed..]

  2. etc January 25th, 2010 11:01

    Этот старый добрый способ как раз и не работает.
    Мне всего лишь нужно три фонта в swf, а не сто мильенов классов.

  3. FSB January 25th, 2010 11:15

    Мда )
    Flash CS4 в целом довольно странный продукт, после долгих мучений на двух проектах, в том числе с анимационными моделями на ~8000 кадров вернулись в CS3. Одни и те же флашники в CS3 редактируются почти без видимых тормозов, в то время как CS4 подвисает на несколько секунд-минуту при навигации по кадрам.

  4. etc January 25th, 2010 11:20

    А я пока не знаю, как решить проблему, CS3 у меня нет, к сожалению.

  5. silin January 25th, 2010 11:52

    >>Этот старый добрый способ как раз и не работает.

    у меня работает, однако, o_O
    почему и удивился, что за проблема такая..

  6. andyone January 25th, 2010 12:04

    Вы говорите о разных вещах. etc хочет иметь 1 класс – предок Font с шрифтом с начертаниями regular, bold и italic если я правильно понял. Реализовать это в CS4 нельзя.

  7. etc January 25th, 2010 12:49

    silin, возможно, это зависит от конкретного шрифта?

    andyone, да-да, только не класс, а просто три фонта с одинаковым именем и разными начертаниями. В CS3 это ещё было возможно.

  8. andyone January 25th, 2010 13:16

    Фонты, что в библиотеке ресурсов?

  9. etc January 25th, 2010 13:19

    Нет, не в библиотеке. Просто swf с тремя текстовыми полями, с зашитыми в них шрифтами.

  10. andyone January 25th, 2010 13:25

    Тогда это у тебя какой-то баг. Все прекрасно работает.
    http://gyazo.com/efb83309120bb7a9f38e476a04b66ff2.png
    http://gyazo.com/e06890a311ffef90244527b17eb655e2.png

  11. etc January 25th, 2010 13:30

    Проблема в том, что шрифты на выходе имеют разные имена, Myriad Pro, Myriad Pro Bold, Myriad Pro Italic и у всех начертание regular (визуально же они соответствуют названиям). А в CS3 один и тот же Myriad Pro и разные fontStyle.
    Причем, если в CS3 можно выбрать как Myriad Pro Bold, так и Myriad Pro с выбранным bold-начертанием, то уже в CS4 этого сделать нельзя.

  12. andyone January 25th, 2010 13:51

    Вейт, а где ты получил разные имена? Если с помощью Font.enumerateFonts()- он возвращает 3 раза “Myriad Pro”. Если судить по байткоду, то это реально 3 разных шрифта (всего их 10 разных шрифтов), у них одна font family:
    http://gyazo.com/5dcb0af02eddfb2ae8df6bc0e37740ad.png

    Если в CS3 адоб использовал не имя шрифта, а font family, то это реально косяк и его нужно было исправить.

  13. etc January 25th, 2010 13:56

    У меня возвращает следующее:

    Myriad Pro Bold, regular
    Myriad Pro, regular

    А ожидалось, как в CS3:

    Myriad Pro, bold
    Myriad Pro, regular

    В итоге в CS4 не работает тот самый примитивный код с html.

  14. andyone January 25th, 2010 14:07

    Это возвращает Font.enumerateFonts()?

  15. etc January 25th, 2010 14:13

    Да.

  16. andyone January 25th, 2010 14:25

    И у тебя мак? Под виндой Font.enumerateFonts() выдает только “Myriad Pro”, так что вероятнее всего обрабатывает шрифты именно так как тебе нужно.

    http://ftp.parcsis.org/andyone/flash/fnt.zip

    Можешь посмотреть скомпилированный файл, если работает, ошибка платформозависимая.

  17. etc January 25th, 2010 14:30

    Да-да, мак :)
    Скачал архив, запустил, результат:
    http://www.picamatic.com/show/2010/01/25/02/29/6373584_789x340.png

  18. andyone January 25th, 2010 14:39

    Значит нужно ставить виртуалку и там компилировать, к тому же можно отписать в jira адоба об этом ахтунге.

  19. etc January 25th, 2010 14:44

    Да с виртуалкой, пожалуй, перебор :)
    Нас тут несколько человек с маками, все работают над проектами и каждому ставить виртуалку как-то…
    Насчет jira подумаю, возможно, напишу, хотя это скорее всего поведение конкретных шрифтов такое.

  20. andyone January 25th, 2010 14:53

    Поставить одному, расшарить для остальных по VNC. Все зависит от необходимости.

  21. etc January 25th, 2010 16:24

    Ну это всё равно, мягко сказать, тотальный изврат :)

  22. iter January 29th, 2010 10:08

    А вот нифига не платформозависимая бага… под виндой похожий косяк – но с битмап шрифтами, если верить муку, любой шрифт с галочкой битмап должен переименовываться в FONTNAME_Npt_type
    где FONTNAME – имя шрифта
    N – размер кегля
    type = i ; b ; st ; bi в зависимости от начертания.
    а вооот… CS4 решил что все будут называться FONTNAME_Npt_st и баста
    поэтому если добавить в проект два bitmap шрифта bold и regular, то везде будет лишь regular… хм и баста.

  23. etc January 29th, 2010 16:38

    Пришлось откопать CS3 и компилить шрифты им.

  24. [...] Однако это не избавило от чехарды. Теперь один и тот же шрифт имеет разные начертания [...]

Leave a reply