Утилита для загрузки и выгрузки шрифтов в ОС Windows
Скачать (вместе с исходниками) [27KB, zip]
ХЗ что тут писать. Из исходника и так всё понятно.
program fontload; uses SysUtils, Windows; const WM_FONTCHANGE = $001D; var doSomething: function(fn: string):integer; dir: string = 'C:\windows\fonts\'; pattern: string = '*.pfm'; function GetFileExt(S: String): String; var i, Pos: Integer; begin pos:=1; for i := Length(S) downto 1 do begin if S[i - 1] = '.' then begin Pos := i; break; end; end; Result := Copy(S,Pos,Length(S)); end; procedure LoadAll(dir: string); var DirInfo: TSearchRec; begin FindFirst(dir, faAnyFile, DirInfo); repeat if DirInfo.Name <> '' then doSomething(DirInfo.Name); until FindNext(DirInfo) <> 0; SysUtils.FindClose(DirInfo); end; function normalizefontname(s:string):string; var ext: string; begin ext:=Uppercase(GetFileExt(s)); if {(ext = 'PFB') or }(ext = 'PFM') then begin ext:=Copy(s, 1, length(s) - 4); Result:=dir + ext + '.pfm|' + dir + ext + '.pfb'; end else if (ext = 'OTF') or (ext = 'TTF') or (ext = 'FON') then Result:=dir + s else Result:=''; end; function load(fn: string): Integer; var x: String; begin Result:=0; x:=normalizefontname(fn); if (x = '') then Exit; AddFontResource(PChar(x)); end; function unload(fn: string): Integer; var x: String; begin Result:=0; x:=normalizefontname(fn); if (x = '') then Exit; RemoveFontResource(PChar(x)); end; begin doSomething:=load; if (paramcount = 1) then begin pattern:='*'; dir:=ParamStr(1); end else if (paramcount = 2) then begin if (ParamStr(1) = 'unload') then begin doSomething:=unload; pattern:='*'; dir:=ParamStr(2); end else begin pattern:=ParamStr(2); dir:=ParamStr(1); end; end else if (ParamCount = 3) then begin if (ParamStr(1) = 'unload') then begin doSomething:=unload; pattern:=ParamStr(3); dir:=ParamStr(2); end else MessageBox(0, 'error', 'error', 0); end; if (dir[Length(dir)] <> '\') then dir:=dir + '\'; LoadAll(dir + pattern); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); end.