![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как инсталировать шрифт в систему? [WinXP]
demon © (2008-11-16 22:17:00)Есть несколько шрифтов (*.ttf файлов), их нужно установить с систему, как это сделать?
demon (2008-11-18 01:22:00) [1]Ура! Заработало.
нужно было добавить
AddFontResource(pchar(fname2));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
ЗЫ. Покритикуйте код, как правильнее было бы?
demon (2008-11-18 00:37:00) [2]вот написал код:
program addTTF;
{$APPTYPE CONSOLE}
uses Windows, SysUtils, registry;
var
fname,fname2, temp:string;
PWindowsDir: array [0..255] of Char;
hReg: TRegistry;
procedure haveerror(i : integer);
begin
case i of
0: writeln('Error with copyring. ');
1: writeln('Error with adding to registry. ');
end;
halt;
end;
begin
if ParamCount > 0 then
begin
if FileExists(ParamStr(1)) and (uppercase(extractfileext(ParamStr(1)))='.TTF') then
begin
try
GetWindowsDirectory(PWindowsDir,255);
fname:=expandfilename(ParamStr(1)) ;
fname2:=PWindowsDir+'\FONTS\'+extractfilename(ParamStr(1));
CopyFile(pchar(fname), pchar(fname2), true);
except
haveerror(0);
end;
try
hReg := TRegistry.Create;
hReg.RootKey := HKEY_LOCAL_MACHINE;
hReg.LazyWrite := false;
hReg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts', false);
temp:=extractfilename(ParamStr(1));
delete(temp, length(temp)-3, 4);
hReg.WriteString(temp+' (TrueType)', extractfilename(ParamStr(1)));
hReg.CloseKey;
hReg.free;
except
haveerror(1);
end;
writeln('Successful') ;
end else writeln('error') ;
end else
begin
writeln('Programm addTTF install TTF font in system');
writeln('Use: addTTF <filename>');
end;
end.
не появляеться шрифт в системе, хотя в папку скопировался и в реестр добавился.
demon (2008-11-17 21:42:00) [3]нуу нет, это типа программа-инсталятор, вернее это командный файлы был изначально, приводивший свежеустановленую систему в нужное мне состояние (ну там проги с rar-ов распаковавал и настройки в реестр вносил), но шрифты так просто не установишь, вот и пишу консольную утилитку :)
CodeMaster (2008-11-17 21:30:00) [4]Вообще не понимаю зачем тебе инсталировать Шрифт в систему? Делаешь программу - закидываешь в её директорию файл шрифта, связываешь функцией AddFontResource и работаешь как с обычным шрифтом.
А вообще лучше канешно сделать на WinApi, там и эффектов можно добиться неплохих.
demon (2008-11-17 03:39:00) [5]Все ровно там нету ничего по извлечению информации о названии шрифта из ttf файла, просто добавляеться заранее прописаное название.
А можно ли где глянуть спецификацию по ttf файлам (ну там описание формата, не знаю как правильно сказать...)?
Германн (2008-11-17 01:28:00) [6]
> demon © (17.11.08 00:38) [5]
>
> Нет, не проинсталирует.
> Но если после копирования открыть Fonts с панели управления,
> то шрифты пропишуться в реестр.
>
Возможно поможет этот ответ:
http://www.delphi-club.ru/delphi/add_true_type_font.html
Токо он несколько устарел. Ветка реестра Fonts нынче находится в другом месте.
demon (2008-11-17 00:38:00) [7]Нет, не проинсталирует.
Но если после копирования открыть Fonts с панели управления, то шрифты пропишуться в реестр.
{RASkov} (2008-11-17 00:27:00) [8]> в системную папку
ну имелось в виду [1]) т.е. %SystemRoot%\Fonts
{RASkov} (2008-11-17 00:26:00) [9]> [2] demon © (16.11.08 23:42)
Пробывать не охото.... но помоему простое копирование в системную папку файла со шрифтом(ами) и ось сама все проинсталирует...
А вообще есть АПИ функции для работы со шрифтами посмотри: Font and Text Functions
и например: AddFontResource
demon (2008-11-16 23:42:00) [10]Это понятно.
А как тогда получить название шрифта чтобы дабавить его в реестр?
CodeMaster (2008-11-16 23:02:00) [11]Ищешь папку Fonts и копируешь туда всё (подсказка реестр)