end end;

{Проверяем существование файла) if Pos('.',FName)=0 then FMame := FName+'.CHR' ;

{$!-} {Отключаем контроль lOEtrorf Assign(F,FName);

Reset(F,1); {Пытаемся открыть файл} {$!+} {Восстанавливаем контроль ЮЕггог} if IQResultoO then begin

WriteLn('Файл '+FName+' не найден');

Goto Loop end;

{Читаем заголовок файла} FontRead(FontHead,SizeOf(FontHead)) ;

if FontHead. FontFileIDoHead then begin

WriteLn('Ошибка в заголовке файла!');

Goto Loop end;

{Ищем смещение блока параметров и длину файла'} with FontHead do begin

k := 5; {Начинаем с пятого байта} while (kOizedf (FontHead)) and (B[k]o$lA) do inc(k);

if B[k]=$lA then begin

HeaaerSize := B[k+l]+B[k+2] ehl 8;

FileSize := B[k+7]+B[k+8] ahl 8;

AFileSize := k+7;

{Читаем блок параметров} Seek(F,HeaderSize) ;

FontRead(FontPara,SizeOf(FontPara)) ;

if FontPara.ParPrefix='+' then

Exit {Нормальный выход) else /Her префикса параметров}

Goto HeadErr end end;

{Не найден терминатор CopycightEnd) HeadErr:

Close(F) ;

WriteLn('Ошибка в заголовке файла!');

Goto Loop end; {Каше Input} {—————} Procedure ReadData;

{Читает данные из файла} var

k: Integer;

LastChar: Byte;

begin

with FontPara do begin

LastChar := FirstChar+CharsCount-1;

{Заполняем таблицу смещений} for k := 0 to 255 do

if k in [FirstChar..LastChar] than