Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Илья_   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1252914724
VirEx(home)
2009-09-14 11:52
2009.12.27
сервис + приложение (обмен данными)


1-1230031610
zulus5
2008-12-23 14:26
2009.12.27
PopurMenu в MDIChild


4-1226050103
pushkin42
2008-11-07 12:28
2009.12.27
А какое сообщение возникает когда...


2-1257501455
d@nger
2009-11-06 12:57
2009.12.27
dxDBTreeView и картинки


15-1256342365
POOP
2009-10-24 03:59
2009.12.27
Простое проектирование схем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский