(Открываем файл} RegisterChrFile := -1;

Assign (F,S);

{$!-} Reset (F,1);

{$!+} if IQResultOO then

Exit;

{Читаем заголовок} if not ReadFile(Buf,128) then

Exit;

RegisterChrFile := -2;

if HeadoHeadO then

Exit; {Неверный формат файла} (Ищем конец текста} repeat

k := 1;

while (k<=128) and (Buf[k]o$lA) do inc(k);

if )c=129 then

if not ReadFile(Buf,128) then

Exit until But[k]=$lA;

{Позиционируем файл на блок параметров) ParOffs := Buf[k+l]+Buf[k+2] shi 8;

Seek(F,ParOffs) ;

{Читаем параметры}

if not ReadFile(FPar,16) or (FPar.ParPrefix<>'+') then Exit;

{Резервируем память для описателя} RegisterChrFile := -3;

if MaxAvaiKSizeOf(TFontDesc) then

Exit; /Her памяти для регистрации} New(PD) ;

{Формируем новый дескриптор} with PD^FPar do begin

NextFont := Nib;

NFont :- FontNumb+1;

Name.FName := S;

FirstChr := FirstChar;

LastChar := FirstChar+CharsCount-1;

Height := UpperMargin;

Bottom := LowerMargin;

{Читаем таблицу смещений} RegisterChrFile := -1;

Seek(F,ParOffs+DataOffset-3*CharsCount);

if not ReadFile(Offs[FirstChar],2*CharsCount) then begin

Dispose(PD) ;

Exit end;

{Настраиваем смещения) for k := FirstChar to LastChar do

Offs[k] := Offs[k]+ParOffs+DataOffset;

{Формируем таблицу длин} fo» k := PirstChar to LastChar-1 do Leng[k] := Offs[k+1]-Offs[k];