Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Подгрузка swf со шрифтами (http://www.flasher.ru/forum/showthread.php?t=163375)

Jitakuzu 08.08.2011 13:43

Подгрузка swf со шрифтами
 
Доброго времени суток

Подгружаю в AS3 проекте swf файл, который содержит EMBED шрифты:
Код AS3:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, fontLoaded);
loader.load(new URLRequest("MyTFT.swf"));
 
function fontLoaded(e:Event):void
{
        textField.embedFonts = true;
        textField.defaultTextFormat = new TextFormat("CloisterBlack", 60, 0x000000);
        textField.text = "Hello World";
}

MyTFT.swf содержит следующий код:
Код AS3:

[Embed(source='assets/CloisterBlack.ttf', fontName="CloisterBlack",
          mimeType="application/x-font", unicodeRange="U+0041-U+005A")]
var myFont:Class;
 
Font.registerFont(myFont);

В общем, все работает. Совершаю идентичные действия во Flex проекте - ничего не получается. Ошибок нет, просто текст не появляется. В чем может быть проблема?

ShockWave512 09.08.2011 01:57

- а шрифт вообще становится виден в проекте ? (Font.enumerateFonts(false))

- может не флекс не выполняет Font.registerFont(myFont);, кто его запускает?

- может имя "CloisterBlack" перестает видеть внутри флекс окружения?

Jitakuzu 09.08.2011 11:44

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

alatar 09.08.2011 11:48

Jitakuzu, что вы пишете во флекс-проекте?

ShockWave512 09.08.2011 11:48

то есть три вопроса в игнор? удобно :)

Jitakuzu 09.08.2011 11:51

Да, после некоторых манипуляция начало появляться предупреждение в окне вывода:
Предупреждение: несовместимый встроенный шрифт "CloisterBlack" указан для mx.controls::Text (Text7) . Для этого компонента требуется объявление встроенного шрифта посредством embedAsCff=false.
Как использовать embedAsCff?

alatar 09.08.2011 11:56

TextField не может работать с cff, этот параметр предназначен для встраивания шрифтов используемых в новом текстовом FTE. Для шрифтов используемых в TextField он всегда должен быть false.

Jitakuzu 09.08.2011 12:01

ShockWave512, извиняюсь, сейчас попробую ответить:
1. Все что могу получить при выводе, это единственный шрифт [object MainTimeline_myFont], скорее всего это он, так как других не подгружаю. Как получить его имя из объекта я не знаю
2. Шрифт регистрируется в MyTFT.swf
3. Если объявить TextFormat со шрифтом CloisterBlack, то текст не выводится вовсе. Если указать несуществующий шрифт (например, CloisterBla123ck), то текст выводится в стандартном шрифте. Мне этого подсказывает о том, что шрифт все таки виден

Добавлено через 1 минуту
alatar, так что мне написать то? и где? Подскажи.
P.S. ShockWave512 мне это писал =)

alatar 09.08.2011 12:03

Код AS3:

[Embed(source='assets/CloisterBlack.ttf', fontName="CloisterBlack",
          mimeType="application/x-font", unicodeRange="U+0041-U+005A", embedAsCff="false")]


Jitakuzu 09.08.2011 12:10

Все сделал, trace(Font.enumerateFonts(false)) выводит [object CloisterBlack].
То есть, шрифт подгружается, но
Код AS3:

sometext.text = "new text";
sometext.setStyle("fontFamily", "CloisterBlack");

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

alatar 09.08.2011 12:13

Там "false" в кавычках должен быть.

Добавлено через 33 секунды
Вы какой версией SDK пользуетесь?

Добавлено через 4 минуты
Или флешка со шрифтом в FlashIDE компилируется?

Jitakuzu 09.08.2011 13:25

Проект использует SDK 4.5
MyTFT.swf скомпилирована во Flash'е. Шрифт добавлен в библиотеку и экспортирован под именем CloisterBlack. Формат контура выбран TLF(DF4)
trace(Font.enumerateFonts(false)) выводит [object CloisterBlack]. По идеи, шрифт подгружается, но текст все равно выводится в стандартном шрифте

Добавлено через 1 минуту
просто если в MyTFT.swf написать
Код AS3:

[Embed(source='assets/CloisterBlack.ttf', fontName="CloisterBlack",
          mimeType="application/x-font", unicodeRange="U+0041-U+005A", embedAsCff="false")]
var myFont:Class;
 
Font.registerFont(myFont);

То компилятор начинает ругаться:
Код AS3:

Параметр транскодинга "embedAsCff" не поддерживается "flex2.compiler.media.FontTranscoder"
Транскодинг assets/CloisterBlack.ttf невозможен.


alatar 09.08.2011 13:38

Компилятор во FlashIDE не поддерживает параметр embedAsCff.
Цитата:

Формат контура выбран TLF(DF4)
TextField не поддерживает этот "формат контура". Это аналог embedAsCff.
Цитата:

Шрифт добавлен в библиотеку и экспортирован под именем CloisterBlack.
Какой смысл добавлять шрифт в библиотеку, если используется Embed?

Jitakuzu 09.08.2011 13:41

нет, Embed я не использую, swf не компилится тогда.
Я просто добавил шрифт в библиотеку и экспортирую его. Основное приложение его видит, но не применяет его к тексту.
Как сделать так, чтобы подгруженные шрифты применялись к тесту? Какой тип текстового поля использовать?

Добавлено через 10 минут
Если можно, то мне бы пример какой нибудь, 100% рабочий, какая структура должна быть у swf со шрифтами, какое текстовое поле использовать во Flex'е и как применить к нему подгруженный шрифт


Часовой пояс GMT +4, время: 21:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.