Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Установка собственного шрифта   Найти похожие ветки 

 
Илья_   (2009-01-12 01:10) [0]

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


 
Eraser ©   (2009-01-12 01:53) [1]

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

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


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

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

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


 
Eraser ©   (2009-01-12 16:33) [3]

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

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


 
KSergey ©   (2009-01-12 16:37) [4]

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

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

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

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

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


 
Dimka Maslov ©   (2009-01-12 17:45) [5]


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


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


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

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

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

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

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


 
Anatoly Podgoretsky ©   (2009-01-12 18:01) [7]

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


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

> 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.


 
KSergey ©   (2009-01-13 06:22) [9]

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

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


 
KSergey ©   (2009-01-13 06:23) [10]

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

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


 
Dimka Maslov ©   (2009-01-13 10:25) [11]


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

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


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


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


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



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
2-1257844185
defen
2009-11-10 12:09
2009.12.27
закрытие приложения


2-1257499247
LordTor
2009-11-06 12:20
2009.12.27
Подскажите как сделать синхронизациию 2х папок


2-1257708059
andrewtitoff
2009-11-08 22:20
2009.12.27
Почему не фильтруется ADOQuery?


2-1257779059
Jaroslight
2009-11-09 18:04
2009.12.27
Среднее значение показателей типа TTime


2-1257909781
igan
2009-11-11 06:23
2009.12.27
Типы данных C, VB -> Delphi