(Открываем файл} 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];