![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Установка собственного шрифта [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.