Показать сообщение отдельно
Старый 20.06.2002, 15:07
Stary вне форума Посмотреть профиль Отправить личное сообщение для Stary Посетить домашнюю страницу Stary Найти все сообщения от Stary
  № 25  
Stary
 
Аватар для Stary

Регистрация: Jul 2001
Адрес: Харьков
Сообщений: 102
Отправить сообщение для Stary с помощью ICQ
По умолчанию Небольшой ликбез

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

То, о чем ты пишешь, называется "антиалиасинг" (по английски antialiasing, то есть "сглаживание", устранение т. н. "алиасинга" или ступенчатости. Речь, как правило, идет о том, что гладкая криволинейная поверхность отображается на экране монитора ступенчатой, что обусловлено квадратной формой пикселей
Антиалиасинг заключается в том, что края криволинейной (или состоящей из наклонных прямых) фигуры сглаживаются, крайние (т. н. "граничные") пикселы делаются полупрозрачными, переходя в цвет фона. Особо отмечу, что антиалиасинг векторных изображений был в свое время выдающимся достижением (каковое значение и актуальность он не утратил и по сей день), а сомневающимся предлагаю поработать в Corel Draw 6 (а если нет такового, то в более поздней версии отключите режим "view-enhanced" - и многое вам станет понятно.

Теперь о тексте во Флеш. Нет - сначала о тексте в IE. Если вы наделаете скриншотов текста из браузера, а потом в Фотошопе будете разглядывать текст при большом увеличении, то неизбежно обратите внимание, что те красивые четкие буковки стандартных шрифтов (к таковым относятся Arial, Verdana, Times New Roman, Courier и, может быть, еще какие-нибудь) не имеют ничего общего (ну, или почти ничего) с реальными начертаниями букв в этих шрифтах. Для примера - напишите в том же Фотошопе рядом с текстом из скриншота какой-нибудь текст таким же шрифтом и сравните. Почему так происходит? Дело в том, что при малых кеглях (размерах шрифта) браузер использует не те криволинейные фигуры, которые содержатся в файле ttf в качестве букв, а специальные пиксельные символы, состоящие из "квадратиков", всегда располагающиеся на экране фиксированно относительно пиксельной сетки (их нельзя подвинуть на пол-пиксела в какую-либо сторону - только на целое число пикселов). Повторю, что эти специальные начертания существуют для ограниченного числа шрифтов (я даже не знаю, хранятся ли они в самом файле ttf или берутся из куда-нибудь еще) и для ограниченного диапазона их размеров (кеглей).

Вернемся в Флешу. Здесь тоже можно использовать эти начертания, но по всей видимости Флеш берет их из тех самых системных установок и ТОЛЬКО для тех самых системных шрифтов. Для того, чтобы это произошло (Максвелл, внимание!), нужно проделать следующее: при создании текстового поля обратить внимание на палитру "Text Options". Здесь есть три варианта, точнее два: если в выпадающем списке стоИт "Static Text" (а если ты не собираешься менять текст динамически, то другое и не требуется), необходимо поставить флажок "Use Device Fonts", но помните, что это можно делать ТОЛЬКО если вы пишете одним из системных, то есть имеющихся на подавляющем большинстве компьютеров, шрифтов (список см. выше - если кто знает дополнения - пишите, буду рад). В противном случае флеш-плеер, не найдя нужного шрифта (но не проверяйте это на своей машине - у вас то этот шрифт ЕСТЬ), заменит его первым попавшимся (как правило - Times New Roman).
Второй вариант - если вы используете не статик, а "Dynamic Text" или "Input Text". Тут для достижения того же эффекта вообще ничего не надо делать (главное - НЕ нажимать никаких кнопок внизу палитры "Text Options" и НЕ вводить ничегов поле рядом с этими кнопочками).

Откуда же берется антиалиасинг во Флеше? Если вы не поставите галочку "Юз девайс фонтс" или нажмете кнопку "[...]" в палитре динамического текста, то Флеш осуществляет инклуд, то есть присоединение ВЕКТОРНЫХ ИЗОБРАЖЕНИЙ символов вашего шрифта и использует эти изображения при воспроизведении фильма. Зачем? Да затем, что иначе пользователь, не имеющий такого шрифта на своей машине, увидит вместо красивого текста нечто непредсказуемое (флеш кажется пытается в таком случае писать шрифтом по умолчанию - Times New Roman). И вот тут то загвоздка. В случае воспроизведения текста, набранного присоединенным шрифтом, как в больших (что совсем неплохо), так и в малых кеглях используется антиалиасинг, как и в любых векторных кривых. Можно, конечно, его отключить, понижая качество воспроизводимого фильма программно, но это мало того, что не улучшит внешний вид текста (специальные начертания в этом случае все-равно не используются и текст, скорее всего, будет выглядеть криво), но и здорово ухудшит качество всех остальных векторных графических элементов фильма (а на такую жертву в большинстве случаев идти не стоит).

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

Удачи.