Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Установка шрифтов в Runtime
toizyДата: Пятница, 06 Апреля 2007, 09:26 | Сообщение # 1
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Известно, что существует проблема с использованием оригинальных шрифтов в
проекте. Так, если вы применили для какого-нибудь заголовка экзотический шрифт,
существующий у вас в системе, то когда вы принесете файл своему другу, у
которого данного шрифта нет, у него вместо заголовка будут каракули. Эта
проблема решается несколькими способами. Первый способ (имхо, не самый лучший)
- это использовать команду InstallFont(), которую прописать в скрипте старта
первой страницы проекта. Сам файл используемого шрифта надо внедрить в проект (
Меню "Проект" - "Внедренные файлы...") и обращаться к нему через условный путь
<Emdedded>\. То есть в скрипте старта первой страницы должна быть запись,
похожая на эту: InstallFont("<Embedded>\DERBY.TTF")

После этого присваиваете нужным текстовым объектам выбранный шрифт и проблема,
вроде бы, решена. Потому-что теперь после старта проекта на любом компьютере
будет выполняться команда установки вашего шрифта во временный каталог, откуда
он и будет подключаться к проекту, а после закрытия проекта, соответственно,
удаляться (не проверялось :))). Но тут существует, на мой взгляд, по крайней
мере две проблемы. Первая, это то, что файлы некоторых шрифтов весят по 200 Кб
и больше, что затрудняет их использование, если вы собираетесь сделать
компактный проект. И вторая проблема заключается в трудности проверки на вашем
собственном компьютере, происходит ли подключение шрифта? А вдруг вы что-
нибудь сделали неправильно? Ведь в вашей системе шрифт установлен постоянно, и
поэтому всегда будет отображаться правильно, независимо от того, происходит ли
его инсталляция или нет. Не будете же вы ради проверки постоянно удалять его
из системной папки? (Впрочем, у меня эта проблема решена, так как я использую
менеджер шрифтов Extensis Suitcase и все остальные шрифты, кроме системных,
подключаются только после запуска этой программы, и отключаются после ее
закрытия. Поэтому, установив нужный шрифт, я закрываюменеджер шрифтов, и
назначенный шрифт в проекте сразу пропадает. Тут-то уж не ошибешься, работает
ли команда InstallFont()).

Однако есть и другие способы расправиться со "строптивыми" шрифтами. Вот еще
один. Выделив нужный текстовый объект, в меню "Объект" выберите "Преобразовать
в рисунок", и ваш заголовок превратится из текстового объекта в битмап, у
которого автоматически создадутся прозрачные области, чтобы просвечивал фон.
Битмап, как известно, есть картинка (растровый объект), а значит будет
отображаться одинаково при любых обстоятельствах. При этом, что важно,
исходный текстовый объект не удаляется из проекта, а делается скрытым (к его
имени добавятся буквы _BAK). Это очень важно, так как позволяет в дальнейшем
редактировать текстовый объект. Кстати, не забудьте перед преобразованием в
рисунок сгладить шрифт (установить флажок "Сгладить" в свойствах текстового
объекта).
Этот способ хорош тем, что не требует внедрять в проект файл шрифта. Но
появление в проекте дополнительного битмапа также увеличивает его размер.

Еще один способ предложил bron(автор русификаций ММВ версий 4.9.01 и 4.9.5).
Заключается он в следующем. Пишем то, что нужно, и шрифтом, каким нужно. Затем
выбираем пункт меню "Эффекты > ММВ-эффекты > Подсветка". В открывшемся окне в
поле "Перо" ставим ширину пера 0 и направление "Внешний", в поле "Цвет" такой
же цвет, как у шрифта, остальные поля оставляем, как есть. После применения
эффекта появится группа объектов, один из которых будет иметь имя типа Text_GL.
Это и есть то, что нам нужно (объект также получается растровый). Второй
объект в группе нужно сделать скрытым. Этот способ хорош тем, что буквы
автоматически будут сглаженными, за счет применения к ним эффекта.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
OnideoДата: Вторник, 07 Февраля 2012, 08:33 | Сообщение # 2
Постоянный участник
Группа: Проверенные
Сообщений: 225
Репутация: 0
Награды: 0
Статус: Offline
Дано: шрифт B52
-----------------------
Я использую его в своём проекте и все тексты
я преобразовал в битмапы, но проект в итоге
нужно оптимизировать и я решил всё же удалить все битмапы,
которыми стали тексты и оставить сами тексты.
И ещё: почти все тексты состоят из букв русского алфавита,
но благо у всех у них стоит кодировка кириллица.
Так вот, я так понимаю достаточно просто ввести InstallFont
в скрипте первой страницы и всё?
Или нужно каждому тексту присваивать этот шрифт?
Можно ли сделать этот шрифт по умолчанию?
Главное, чтобы у всех пользователей текст отображался правильно.
Прикрепления: B52.rar (66.6 Kb)




Сообщение отредактировал Onideo - Вторник, 07 Февраля 2012, 08:39
 
YURIYДата: Вторник, 07 Февраля 2012, 11:27 | Сообщение # 3
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Onideo)
Или нужно каждому тексту присваивать этот шрифт?


Зачем? В MMB встроен искусственный интеллект, он сам догадается и присвоит :)

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



Вечная память Андрею Сергееву!
 
OnideoДата: Вторник, 07 Февраля 2012, 12:02 | Сообщение # 4
Постоянный участник
Группа: Проверенные
Сообщений: 225
Репутация: 0
Награды: 0
Статус: Offline
YURIY,
а имя шрифта без разницы какое?
а то я когда скопировал его из папки Windows\Fonts
на рабочий стол
он у меня почему то отобразился с именем "main"
Наверно он установлен у меня в системе по умолчанию.
Или нужно дать имя шрифту какое оно есть
при наведении на файл TTF курсором мыши
то бишь B52?
Важная деталька?




Сообщение отредактировал Onideo - Вторник, 07 Февраля 2012, 12:03
 
YURIYДата: Вторник, 07 Февраля 2012, 12:07 | Сообщение # 5
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Onideo)
Важная деталька?


Лучше дать файлу оригинальное название, как у самого шрифта.



Вечная память Андрею Сергееву!
 
OnideoДата: Вторник, 07 Февраля 2012, 12:13 | Сообщение # 6
Постоянный участник
Группа: Проверенные
Сообщений: 225
Репутация: 0
Награды: 0
Статус: Offline
YURIY,
Помню в прошлый раз когда я шрифт Forte
делал внешним
Code
InstallFont("<SrcDir>\Forte.TTF")

он у меня почему то не загружался в проект
Получается что что через внедрёнку гораздо эффективней?
Code
InstallFont("<Embedded>\B52.TTF")




Сообщение отредактировал Onideo - Вторник, 07 Февраля 2012, 12:14
 
YURIYДата: Вторник, 07 Февраля 2012, 12:15 | Сообщение # 7
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Onideo)
Получается что что через внедрёнку гораздо эффективней?


Нет разницы. Просто в первом случае не забывать про это.



Вечная память Андрею Сергееву!
 
  • Страница 1 из 1
  • 1
Поиск: