Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   FAQ (http://www.flasher.ru/forum/forumdisplay.php?f=86)
-   -   Внедрение шрифта (http://www.flasher.ru/forum/showthread.php?t=93152)

Ri4a33 15.03.2007 02:36

Внедрение шрифта
 
ну понятно, что вопрос пойдёт о шрифте во флеше... - а точнее у меня такая проблема - я делаю Флеш-сайт с нестандартными шрифтами, и на пк без этих шрифтов, они заменяются на "дефаулт". как мне это предотвратить, можно ли чтобы они сохронялись как картинка? а анимация с текстом как анимация? крч. как сделать чтоб шрифт в браузере не изменялся?

iNils 15.03.2007 03:09

Шрифты заменяются только если у вас динамическое поле, чтобы это не происходило надо внедрить шрифты в swf. Для этого надо выбрать текстовое и в панели его свойств нажать кнопку Embed, после чего указать необходимый диапазон символов (можно необходимые символы вбить вручную). Например Cyrillic (не выбирайте All, так как будут внедрены все символы шрифта, а это могут мегабайты лишнего веса)

CorC 15.03.2007 10:13

вот тут даже инструкция написана
и пример выложен
http://flasher.ru/forum/showthread.php?t=93010

this.create 15.03.2007 10:45

Цитата:

Сообщение от Ri4a33
как мне это предотвратить, можно ли чтобы они сохронялись как картинка?

Моно так же сделать текстовые поля типа static. При этом символы в таком поле запоминаются флэшем как векторные рисунки. Недостаток - нельзя изменять впоследствии, при значительном размере текста лишний "вес" swf. Достоинства - векторные картинки, значит можно масштабировать не теряя в качестве, при небольшом количестве текста "вес" swf почти такой же как при встройке символов( или даже меньше).

iNils 15.03.2007 10:58

Цитата:

Сообщение от this.create
Моно так же сделать текстовые поля типа static. При этом символы в таком поле запоминаются флэшем как векторные рисунки. Недостаток - нельзя изменять впоследствии, при значительном размере текста лишний "вес" swf. Достоинства - векторные картинки, значит можно масштабировать не теряя в качестве, при небольшом количестве текста "вес" swf почти такой же как при встройке символов( или даже меньше).

Что за бред? Что в статическом поле, что в динамическом внедряется во флеш шрифт. И на вес существенно влияет количество внедренных символов, а не количество текста.

CorC 15.03.2007 10:59

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

iNils 15.03.2007 11:14

Какой новый шрифт?

CorC 15.03.2007 12:42

я всмысле про new font в библиотеке
типа лишний обьект :)

iNils 15.03.2007 12:52

Я где то на днях писал, что шрифт в библиотеки, это самое последнее дело.

etc 15.03.2007 13:00

Шрифт в либе — зло.

pkfun 15.03.2007 19:51

Цитата:

Сообщение от iNils
Что за бред? Что в статическом поле, что в динамическом внедряется во флеш шрифт. И на вес существенно влияет количество внедренных символов, а не количество текста.

Ну что ж, каждый может ошибиться. Запомним.

screamge 15.03.2007 20:20

а какое объяснение того что фонт в либе зло, если только это объяснение не вес?

etc 15.03.2007 20:28

Попробуй добавить кириллический диапазон.

screamge 15.03.2007 21:17

а мне его добавлять ни разу не приходилось и думаю ещё долго не придётся...по этому чесно говоря не понимаю критики по внедрению шрифтов в библиотеку

etc 15.03.2007 21:38

Цитата:

Сообщение от screamge
а мне его добавлять ни разу не приходилось

Вот когда придется (очень странно, что раньше не приходилось), тогда и узнаешь.

screamge 15.03.2007 21:49

всё очень просто....я не делаю русскоязычные сайты.

etc 15.03.2007 22:00

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

screamge 15.03.2007 22:06

вопрос чисто теоритический....что если есть много динамических полей? проставлять каждому ембед?

to _etc: только не надо отправлять меня искать по всему форуму или тыкать в sharedfonts.

etc 15.03.2007 22:09

Да, выставлять каждому embed, но необязательно для всех полей указывать все диапазоны, достаточно одному полю указать нужные, а остальным хотя бы один символ, чтобы сделать у них embedFonts = true.
Причем, это не зависит от того, как был импортирован шрифт, в поле с указанными диапазонами или кривым методом импортирования в либу (где только определенные диапазоны будут внесены).

screamge 15.03.2007 22:12

а если на лету нужно менять шрифт? что заного делать динамик поля?

etc 15.03.2007 22:17

HTML, CSS и TextFormat никто не отменял. У поля есть только свойство embedFonts. Оно или true или false. Если необходимые шрифты в ролике есть, то они будут использованы при embedFonts = true. Если нет, то при true символы данного шрифта не будут показаны.

screamge 15.03.2007 22:29

ладно, согласен...кирилические шрифты подлючать через либ вредно.

iNils 15.03.2007 23:06

Вложений: 4
Внедрение шрифта в библиотеку, лишает вас гибкости в выборе диапазона символов.

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

Размер: 51327 байт
Символов: 1545
Вложение 17297
Вложение 17298
Как видим, N-е количество символов нами вообще не используются, но тем не менее они включены в swf.

Теперь внедрим через текстовое поле. Для нас актуальны два диапазона: Basic Latin + Cyrillic

Размер: 27509 байт
Символов: 593
Вложение 17299
Размер упал фактически в два раза! Но все равно есть символы, которые нам совсем не нужны.

Но у нас есть хорошая возможность повлиять на это. Конечно можно ручками вбивать символы в специальное отведенное поле на панели выбора диапазона, но это не удобно, особенно когда вы используете множество полей.
Для этого надо отредактировать UnicodeTable.xml, вбив свой диапазон. Подробнее об этом можно прочесть тут.

Мой набор включает в себя 212 символов, включая тире, дефис и елочки.

Размер: 21777 байт
Символы (212):
Вложение 17300
Уменьшили вес еще на 20%. Учитывая, что часто внедряется несколько написаний и пару шрифтов, суммарно вес флешки можно сократить на 50-200 кб. А главное, теперь я внедряю символы 3-я кликами (а не проматываю и не ищу Cyrillic). Есть правда один минус, про который я написал по ссылке выше и об этом не стоит забывать.

screamge 15.03.2007 23:38

а что делать если имеется к слову несколько loadMovie в которых везде нужен динамик текст? что делать тогда, везде ембдить...пусть даже эти 22 кб

Ri4a33 16.03.2007 00:01

Спaсибо за выше перечисленную инфу - получилось! :)

iNils 16.03.2007 02:06

Вложений: 2
Цитата:

Сообщение от screamge
а что делать если имеется к слову несколько loadMovie в которых везде нужен динамик текст? что делать тогда, везде ембдить...пусть даже эти 22 кб

В примере есть два swf со вшитыми шрифтами font705.swf и font706.swf, где внедерены символы согласно моему собственному диапазону. Также есть два fla main.fla и load.fla. Первый подгружает в себя библиотеки со шрифтами и файл (пример внешнего swf где надо назначить шрифт). В обоих fla нет внедренного шрифта. Но нажимая кнопки с названиями шрифтов, мы подключаем их к текстовому полю загруженному из load.swf.

PS. Добавил файл font705.fla в качестве примера создания файла-библиотеки шрифта.
Скачать шрифт iFlash 705

screamge 16.03.2007 02:16

to iNils: очень интересная штука, уменьшаем размер загружаемого файла за счёт уничтожения ненужных символов и загружаем его всего один раз (я имею ввиду sharedlib). Спасибо будемс знать

З.Ы. и самое главное экономим место на жёстком диске, храня вместо 50 кб всего 22!

etc 16.03.2007 12:21

Я сталкивался с тем, что шрифт в либе не имеет диапазона cyrillic, когда как если зашить в поле, то он есть.

iNils 16.03.2007 12:25

Мне вообще не понятна логика диапозона в либе. А если мне нужен там арабский или японский?

etc 16.03.2007 12:50

Я думаю, это зависит от текущего языка системы. Посколько система у меня англоязычная была, то и русский диапазон она из принципа не добавляла.

iNils 16.03.2007 13:02

Цитата:

Сообщение от __etc
Я думаю, это зависит от текущего языка системы. Посколько система у меня англоязычная была, то и русский диапазон она из принципа не добавляла.

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

Mnilionic 04.04.2007 04:50

пытался повторить выложенный пример с подключением swf с внедрённым шрифтом.
ничего не получается :(

verdana.swf :
на сцене: текстовое поле с внедрёнными символами (для пробы все 160 Кб)

test.swf :
в библиотеке: символ my_font (Identifier = vrdn, Import for runtime = verdana.swf)
на сцене: текстовое поле txt (Arial, 12px) и символ my_font
AS:
Код:

txt.embedFonts = true;
                var frmt = new TextFormat();
                frmt.font = "verdana";
                txt.setTextFormat (frmt);
                txt.setNewTextFormat (frmt);

в verdana.swf запихал текстовое поле в символ и поставил ему Export for runtime.

Символ импортируется тепрерь, но текст в целевом поле не появился.

скриптом перебираю свойства текстового поля в импотируемом символе.
оказывается шрифт там называется не Verdana, а Verdana_11pt_st.
Это я должен был угадать?
Если это название подставить в скрипт форматирования текстокого поля, то всё работает.
Почему изменилось название шрифта и как его предсказать-то?

etc 04.04.2007 14:21

Ну у тебя я вижу как минимум две ошибка, первая — название шрифта чувствительно к регистру, а во вторых не нужно было включать Bitmap text.

iNils 04.04.2007 15:29

Битмап текст, генерирует новый текст заданного размера, подгоняя шрифт под пиксели. Именно поэтому название изменилось:
[Название шрифта]_[размер шрифта]pt_st

Mnilionic 04.04.2007 18:39

Точняг. Отключил битмэп-текст и заработало.
Только как мне теперь сделать чтоб в целевом текстовом блоке текст отображался попиксельно (битмеп-текст)?
при использовании antiAliasType, gridFitType, sharpness всё равно как-то коряво

etc 04.04.2007 18:42

Включить обратно Bitmap text и зная схему построения имени шрифта, использовать его.

Mnilionic 04.04.2007 19:28

тогда получится шрифт только одного кегля?
Ну что ж придётся так.
Спасибо большое

ой.. а что означает суффикс st при образовании нового имени шрифта?

etc 04.04.2007 20:59

Цитата:

Сообщение от Mnilionic
тогда получится шрифт только одного кегля?
Ну что ж придётся так.
Спасибо большое

ой.. а что означает суффикс st при образовании нового имени шрифта?

Да, кегль один.
st? Фиг его знает.

iNils 05.04.2007 15:53

Цитата:

Сообщение от Mnilionic
тогда получится шрифт только одного кегля?

Как я уже вышел говорил, шрифт подгоняется под пиксели, и у каждого кегля будет своя подгонка. Поэтому внедряется только указанный размер иначе бы вес swf был бы не предсказуем. Но вполне можно для текстового поля включить галку html, вбить n-символов и для каждого установить свой кегль, например 10,14,15,20 и указать диапазон символов.
Цитата:

Сообщение от Mnilionic
ой.. а что означает суффикс st при образовании нового имени шрифта?

По началу я думал, что это сокращение от standart и обозначает начертание, но включение bold или italic, ничего не изменило.

Mnilionic 05.04.2007 19:59

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


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

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