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

Вниз

Как инсталировать шрифт в систему?   Найти похожие ветки 

 
demon ©   (2008-11-16 22:17) [0]

Есть несколько шрифтов (*.ttf файлов), их нужно установить с систему, как это сделать?


 
CodeMaster ©   (2008-11-16 23:02) [1]

Ищешь папку Fonts и копируешь туда всё (подсказка реестр)


 
demon ©   (2008-11-16 23:42) [2]

Это понятно.
А как тогда получить название шрифта чтобы дабавить его в реестр?


 
{RASkov} ©   (2008-11-17 00:26) [3]

> [2] demon ©   (16.11.08 23:42)

Пробывать не охото.... но помоему простое копирование в системную папку файла со шрифтом(ами) и ось сама все проинсталирует...
А вообще есть АПИ функции для работы со шрифтами посмотри: Font and Text Functions
и например: AddFontResource


 
{RASkov} ©   (2008-11-17 00:27) [4]

> в системную папку

ну имелось в виду [1]) т.е. %SystemRoot%\Fonts


 
demon ©   (2008-11-17 00:38) [5]

Нет, не проинсталирует.
Но если после копирования открыть Fonts с панели управления, то шрифты пропишуться в реестр.


 
Германн ©   (2008-11-17 01:28) [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 03:39) [7]

Все ровно там нету ничего по извлечению информации о названии шрифта из ttf файла, просто добавляеться заранее прописаное название.
А можно ли где глянуть спецификацию по ttf файлам (ну там описание формата, не знаю как правильно сказать...)?


 
CodeMaster ©   (2008-11-17 21:30) [8]

Вообще не понимаю зачем тебе инсталировать Шрифт в систему? Делаешь программу - закидываешь в её директорию файл шрифта, связываешь функцией AddFontResource и работаешь как с обычным шрифтом.

А вообще лучше канешно сделать на WinApi, там и эффектов можно добиться неплохих.


 
demon ©   (2008-11-17 21:42) [9]

нуу нет, это типа программа-инсталятор, вернее это командный файлы был изначально, приводивший свежеустановленую систему в нужное мне состояние (ну там проги с rar-ов распаковавал и настройки в реестр вносил), но шрифты так просто не установишь, вот и пишу консольную утилитку :)


 
demon ©   (2008-11-18 00:37) [10]

вот написал код:
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-18 01:22) [11]

Ура! Заработало.
нужно было добавить
AddFontResource(pchar(fname2));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);


ЗЫ. Покритикуйте код, как правильнее было бы?



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

Форум: "Основная";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1254382256
Андрей75
2009-10-01 11:30
2009.11.29
какая бесплатная программа есть для создание дистрибутива


2-1255420651
И. Павел
2009-10-13 11:57
2009.11.29
Нужна ли проверка InTransaction в однопоточном приложении?


15-1254090673
Nic
2009-09-28 02:31
2009.11.29
Странная вещь. Помогите


2-1255437491
alkul93
2009-10-13 16:38
2009.11.29
Сложная задача


1-1227069018
Vendict
2008-11-19 07:30
2009.11.29
Печать





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский