Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Установка собственного шрифта [D5, WinXP]


Илья_ ©   (2009-01-12 01:10:00) 

Моя программа использует собственный шрифт, которого нет
в Windows. Как посоветуете это сделать? Установить шрифт
вместе с программой во время инсталляции или пользоваться
им без установки регистрируя при каждом запуске программы?
Если второе, то как это можно сделать проще и правильнее?


Илья_   (2009-01-13 16:46:00) [1]


> KSergey ©   (13.01.09 06:23) [10]
> А требуется? В вопросе про это не сказано.


Конечно сейчас мало кто их использует, но хочется чтобы программа
работала и на этих системах. Будет глупо если программа способна
на них работать, а из за утановки шрифта такой возможности не будет.
Я думаю нужно проверять, если Windows 95/98/Me то AddFontResource, а
если выше то AddFontResourceEx.


Dimka Maslov   (2009-01-13 10:25:00) [2]


> KSergey ©   (13.01.09 06:22) [9]

АвтоКад у меня работе лицензионный. Вот когда ставили пиратский, можно было закрыть папку Fonts на запись и он её не засорял. А вот новая лицензионная версия в таком случае просто прекращает установку...


KSergey   (2009-01-13 06:23:00) [3]

> Илья_   (12.01.09 18:44) [8]
> тоже не будет. Но написано что Windows 95/98/Me: Unsupported.

А требуется? В вопросе про это не сказано.


KSergey   (2009-01-13 06:22:00) [4]

> Dimka Maslov ©   (12.01.09 17:45) [5]
> Вот например такая программа как AutoCAD

Вот когда у нас будут покупать программы - таких проблем не будет, т.к. если уж я купил и установил АвтоКад, то у меня просто не должно быть времени на форумы, ибо стоимость АвтоКада еще нужно отработать, а это не просто. :)


Илья_   (2009-01-12 18:44:00) [5]

> Anatoly Podgoretsky ©   (12.01.09 18:01) [7]
> Спасибо за ссылку, в этом компоненте используется принцип изложеный в
Eraser ©   (12.01.09 01:53) [1]  AddFontResource.

Мне кажется, что в моём случае лучше использовать AddFontResourceEx.

http://msdn.microsoft.com/en-us/library/ms533937.aspx

Можно сделать шрифт приватным и система удалит его после закрытия программы, конфликта имён с уже установленными тоже не будет. Но написано что Windows 95/98/Me: Unsupported.


Anatoly Podgoretsky   (2009-01-12 18:01:00) [6]

http://www.podgoretsky.com/ftp/Language/Components/SYSTEM/PortFont.zip


Илья_   (2009-01-12 17:49:00) [7]

В справке указано, что перед регистрацией шрифта с помoщью AddFontResource необходимо проверять нет ли уже такого шрифта.
Что делать если шрифт с таким именем (Font FaceName) уже установлен в системе, но выглядит иначе чем мой? Такое часто встречается, когда
шрифты одного семейства имеют разные особенности и вид, например
XFont Italic, XFont Cyr Bold и т.д., но при этом имеют одно и тоже имя XFont?

В справке нет ничего про AddFontResourceEx.
Что означают её параметры?

>KSergey ©   (12.01.09 16:37) [4]
>Я понимаю преимущества вашего метода - не нужен инсталлятор

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


Dimka Maslov   (2009-01-12 17:45:00) [8]


> Все же, думаю, красивее ставить/сносить шрифт инсталлятором,
>  причем (наверное?) класть его в правильное место - со шрифтами


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


KSergey   (2009-01-12 16:37:00) [9]

> Eraser ©   (12.01.09 16:33) [3]
> можно при завершении программы вызывать RemoveFontResource.

Программа может и взорваться.

> или же регистрировать через AddFontResourceEx с спец. флагом.

наверное вариант.

Все же, думаю, красивее ставить/сносить шрифт инсталлятором, причем (наверное?) класть его в правильное место - со шрифтами.
Я понимаю преимущества вашего метода - не нужен инсталлятор, но в корпоративной среде это не гуд как раз...


Eraser   (2009-01-12 16:33:00) [10]

> [2] KSergey ©   (12.01.09 11:06)

можно при завершении программы вызывать RemoveFontResource.
или же регистрировать через AddFontResourceEx с спец. флагом.


KSergey   (2009-01-12 11:06:00) [11]

> Eraser ©   (12.01.09 01:53) [1]

После выходна из программы он ведь останется зарегистрированным? Если да - то после сноса программы шрифт будет зарегистрирован, но недоступен системе, если я правильно понимаю. Хорошо ли это?


Eraser   (2009-01-12 01:53:00) [12]

проще всего использовать такой способ
     AddFontResource(PChar(IncludeTrailingPathDelimiter(ExtractFilePath(Application.E xeName)) +
       'font_name.ttf'));
     SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

о назначении функции и сообщение можно почитать в MSDN.


Наверх

Титульная страница Поиск, карта сайта Написать письмо