FontLoader v. 2.2
Очередная новая версия FontLoader. Добавилось событие IOErrorEvent.VERIFY_ERROR, которое посылается в случае, если загруженный файл имеет неверный формат (например, вместо swf загружен html).
14 comments
14 Comments so far
Leave a reply
Наиполезнейший класс.
Сомневаюсь, что многие загружают единственную swf-ку с кучей внедренных шрифтов. Более приятной, имхо, была бы вот такая штука:
Вот бы еще в качестве параметра передавать ему массив
fl.load(['Arial.swf','Tahoma.swf','Verdana.swf']);
Ну, вообще говоря, ничего не мешает сделать менеджер загрузкок. FontLoader — конкретный лоадер конкретного файла, делать из него монстра закачек в мои планы как-то не входило
з. Ы. Сорри, почему-то абсолютное большинство комментариев распознается как спам, приходится аппрувить постоянно.
Вот не пойму только, зачем такие навороты с байтаррэями. Заголовки пришивать зачем? Класс SWFByteArray и все такое… Неужели просто нельзя залить SWF и прошерстить его на предмет присутствующих полей с фонтами? Чего я тут недопонимаю?
Можно, только шрифты мы как использовать будем?
Ну как, стандартно же.. Файлик залили, зарегистренный ембедед фонтс считали и вперед. Или, скажем так, ЧТО такого может Ваш Лодырь, чего нельзя достичь мирным путем? Возможность считать более одного фонта из одного SWF-a? Так для шарного ембеда все фонты разделяют и так. По начертаниям. Шоб не запутатсо. Один файлик – одно начертание…
А какие именно спецификации по формату SWF вы использовали в этой работе? Что-то типа такого http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v9.pdf ?
Послушайте, если вы просто загрузите swf с шрифтом в каком-либо виде, использовать этот шрифт вы не сможете в общем случае. Только если он не регистрируется автоматически, что сделать несложно, но по ряду причин бывает невозможно (например, у вас вообще нет исходного шрифта, есть только swf). Эту проблему FontLoader и решает.
Что касается спецификации, то да, в частности и эта спецификация была использована.
Э-э.. Как же я не смогу его использовать? Вроде же это и есть основное отличие AVM2 от AVM1, что теперь фонты стали доступны глобально по плееру. Вот, скажем, стандартный туториал, как это типически имплементить: http://www.communitymx.com/content/article.cfm?cid=67A61
Да, доступны. Но есть несколько проблем:
1. Необходимость вызова registerFont (в туториале это описано);
2. Из-за п. 1 необходимо указывать класс для embedded-шрифта, а в Flash IDE это можно сделать только создавая шрифт в библиотеке;
3. Из п. 2 вытекает новая проблема — невозможность указания конкретных диапазонов символов (за исключением CS5, где наконец-то добавили эту опцию) в диалоге создания шрифта (зато это можно сделать в свойствах текстового поля на сцене). Как следствие, кириллица в диапазон по умолчанию не попадает;
4. Если воспользоваться метатегом [Embed], то необходимо наизусть знать все параметры этого тега, плюс коды диапазонов символов. Не WYSIWYG way, но для хардкорщиков подойдет. Правда, последние могут болезненно воспринять тот факт, что помимо класса шрифта, в конечном swf ещё окажется некоторое количество мусора, вроде Flex-овых asset-ов.
FontLoader упрощает процесс создания внешнего шрифта до следующей процедуры:
1. Во Flash IDE создаем на сцене поле с шрифтом X и вшитыми диапазонами Y;
2. Компилируем;
3. Загружаем с помощью FontLoader-а скомпилированный swf;
4. PROFIT.
Никаких классов, никакого выучивания наизусть метатегов. А если у вас вообще нет нужного шрифта в системе для создания swf с ним, но есть сам swf, в котором такой шрифт присутствует, то FontLoader является решением данной проблемы. Ему вообще по барабану на формат swf, главное, чтобы там был embedded-шрифт в каком-нибудь виде. Собственно, всё. Понятно, что для труъ-флешеров FontLoader нафиг не упал, но этот инструмент и не для них.
Круто! Вот это я понимаю, глубокое изучение вопроса!
Спасибочки! Кучу времени экономите людям.
Правильно я понимаю что сейчас FontLoader не умеет загружать шрифты для spark-овских контролов, которые используют Flash Text Engine ? Шрифты для FTE должны эмбедится с атрибутом embedAsCFF=”true”, как только я делаю флешку со шрифтами, где у эмбеда шрифта есть атрибут embedAsCFF=”true” FontLoader перестает находить oбъекты класса Font в загруженной swf-ке. Если это так, существует ли какая-то возможность подгружать шрифты для FTE во время выполнения?
Спасибо за помощь!
FontLoader не знает ничего о тегах DefineFont4.
Планируется ли научить FontLoader понимать теги DefineFont4 ?
Только при наличии свободного времени. К сожалению, его почти нет сейчас
Ясно, спасибо.
Буду искать альтернативный путь, если не найду попробую допилить FontLoader…