PDA

Просмотр полной версии : Embed fonts. Не все начертания отображаются в flash player 8


RedGrAg
12.02.2012, 04:23
Попытался найти похожую тему но не увидел.
Внедряю шрифты, но не все они отображаются, если компилировать под восьмой плеер.
В прикрепленном примере не работает Italic, но бывают и другие начертания.
Это можно как-то исправить? Что я не так делаю?

mooncar
12.02.2012, 11:04
Да, странно, при компиляции с выставленным параметром "Flash Player 8.0" не работает (проигрывание на самом плеере не проверял). Хотя вроде и Italic внедряется у вас. А для Regular все как и ожидается, в порядке.

Под FP8 в конце концов у меня заработало, но после применения класса TextFormat:

var tft:TextFormat = new TextFormat();
tft.italic = true ;

TF3.setNewTextFormat(tft);
TF3.text = 'Myriad Pro - проверка';

PS. Garamond Premier Pro у меня не нашлось.

RedGrAg
12.02.2012, 14:11
Спасибо за ответ.
Ваш способ сработал, но у него появилась другая проблема - текст вылез за пределы поля (причем выделение этого текста происходит в пределах данного поля).
И даже если получится это побороть, то не понятно как работать с такими начертаниями, как Semibold SemiCondensed (четвертое поле не картинке).

Для проверки, установил на виртуальную машину CS4 и собрал там такую же флешку.
Результат аналогичный. Получается что проблема не в IDE...

mooncar
12.02.2012, 14:15
У меня, к сожалению нет под рукой сейчас FP8, хотя с работой с TextFormat и там было все ок.

Mukon
12.02.2012, 14:57
Кое что попробовал:
Если поменять тип текстового поля с динамического на статический то текст в FP8 будет отображаться правильно. Это у меня получилось без использования AS.

RedGrAg
12.02.2012, 15:12
Mukon Ну да, так-то он работает.

В итоге всё уперлось в bold и iltalic.
Не отображаются только шрифты содержащие эти начертания (т.е. все полужирные, жирные и курсивы).
С остальными вроде всё в порядке.
Способ от mooncar частично решил проблему.
Осталось побороть этот выход за границы текстового поля.

mooncar
12.02.2012, 15:13
А нужно строго под FP8 ?

RedGrAg
12.02.2012, 15:37
Это скорее вопрос принципа )
Не хочется необоснованно поднимать версию, теряя часть юзеров, которые еще могут сидеть на восьмом плеере.
Просто мне кажется что я не правильно что-то делаю и решил наконец разобраться.
До этого, если нужны были такие шрифты, я компилил под 10-ку.

iNils
12.02.2012, 15:52
Не хочется необоснованно поднимать версию, теряя часть юзеров, которые еще могут сидеть на восьмом плеере.Одного человека из тысячи?
Проблема не в 8-ом плеере, а в публикации под версии меньше 9 (не видно и в 11 плеере, если компилили под 8). А сама проблема заключается в одном единственном четвертом байте. Открываем файл в hex редакторе, находим этот байт и меняем 0x08 на 0x09, сохраняем и запускаем - все три шрифта видны.

RedGrAg
12.02.2012, 16:27
Помимо редактирования четвертого байта, нашлось еще одно решение - отключение Auto kern и Render text is HTML (правда не такое универсальное, по сравнению с hex-редактором)

Спасибо всем за помощь!

mooncar
12.02.2012, 16:29
RedGrAg, проблема оказалась в следующем - у вас для поля выставлено межстрочное расстояние -18.
Тест выводился изначально, но просто уползал за пределы тектового поля.
Выставьте 0 и проблема будет решена.

iNils
12.02.2012, 16:34
Помимо редактирования четвертого байтаЕго не надо было редактировать) Я хотел показать, что содержимое файлов обоих компиляций одно и тоже. Разница в том, как плеер будет обрабатывать содержимое.
Экспериментальным путем, мы с mooncar'ом наткнулись на значение LEADING.
Я подозреваю, что когда плеер запускает swf, он начинает обрабатывать текстовое поле по правилам 8-го плеера, которое отличается от правил 9-го и выше и текст съезжает.

RedGrAg
12.02.2012, 16:50
Хм... я сбрасывал значение межстрочного расстояния , но никаких результатов это не дало. (
Так что пока остается только отключение поддержки HTML-тегов или публикация под 9/10 плеер.

Ну значит пора уже оставить восьмерку только для баннеров. )

Mukon
12.02.2012, 17:00
Но выход есть:

Вот смотрите, удалил со сцены TF3 и заменил его с помощью AS, вот код:


stop();

TF1.text="Garamond Premier Pro";
TF2.text="Garamond Premier Pro";

this.createTextField("TF3",0,89.05,223.85,371.95,40.10);
TF3.type="dynamic";
TF3.text="Myriad Pro";
TF3.border = true;
var tft:TextFormat = new TextFormat();
tft.font = "Myriad Pro";
tft.size = 30;
tft.align = "center";
tft.italic = true ;
TF3.setTextFormat(tft);

RedGrAg
12.02.2012, 17:09
Пересобрал флешку по новой, с нулевым значением межстрочного.
Теперь способ mooncar нормально отображается.
Почему-то изменение этого параметра в старой версии файла, результатов не давало.
Еще раз всем спасибо!