Консультация № 44795
31.05.2006, 16:49
0.00 руб.
0 2 2
Здравствуйте,уважаемые эксперты!
Не могли бы Вы подсказать мне, Можно-ли запаковать свой оригинальный шрифт в exeшник программы,чтобы она(программа) могла отображать с помощью него текст на других компьютерах,не имеющих этого шрифта в папке Font?

Обсуждение

Неизвестный
31.05.2006, 17:30
общий
это ответ
Здравствуйте, Ustas!
Скорей всего - нет. Я, например, не встречал, чтобы это можно было делать. Однако, можно написать процедуру установки шрифта. Воспользуйтесь каким-дь InstallShield и в нем сделайте установку шрифта. Насколько я знаю, достаточно записать шрифт в папку \%System%\Fonts\
Неизвестный
31.05.2006, 17:41
общий
это ответ
Здравствуйте, Ustas!
Как вариант, можно сделать фонт ресурсом и при надобности извлекать отдельным файлом.
Для этого вначале нужно его поместить ресурсом в ЕХЕ.
создайет файл fontres.rc
в него запишите такую строчку без кавычек "MyFont Fonts <font filename>"
и скомпилировать ресурс с помощью brcc32.exe fontres.rc
полученный файл fontres.res переместите в папку с программой и слинкуйте диресктивой {$R fontres.res}.
в программе извлекать вот так:

procedure TForm1.FormCreate(Sender: TObject);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(hInstance, ‘MyFont‘, Pchar(‘Fonts‘));
Res.SavetoFile(‘fontfilename‘);
Res.Free;
AddFontResource(PChar(‘fontfilename‘));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;

и теперь его можно использовать в программею. Только нужно нужно знать внутреннее имя шрифта (а-ля Arial, Times New Roman......). Что бы удалить шрифт нужно

RemoveFontResource(PChar("fontfilename"))
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
Форма ответа