Тексты программ 297

for X := 0 to MaxW do for Y :» 0 to MaxH do

PutPixel(XE+X*DXE,YE+Y*DYE,White);

{Выводим базовую линию}

SetColor(Cyan);

YB := YE+succ(FontPara.UpperMargin)*DYE;

Line(XE,YB,XE2,YB) ;

{Выводим указатель границы символа}

WidthX := ХЕ;

Line(XE,YE,XE,YE2) ;

{Обводим рамкой}

?etColor(White) ;

Rectangle(ХЕ-dXm,YE-dYm,XE2+dXm,YE2+dYm) end; (ClearffE} _•————————————;

Procedure I nit;

{Запрашивает и вводит имя CHR-файла, вводит данные из файла, инициирует--гря~ фику и создает экран}

Procedure FontRsad. (var Dest; Size: Word);

(Читает из файла F в переменную Dest Size байР я контролирует результат. При ошибке аварийно завершает программу} var

k: Word;

begin

BlockRead(F,Dest,Size,k) ;

if k=Size then Exit;

WriteLnCОшибка при чтении данных из файла!');

Halt end; (FontRead) {—————} Procedure NameInput(var FName: String);

(Вводит и проверяет имя CHR-файла} label

Loop,HeadErr;

var

k: Byte;

begin

Write('Программа редактирования векторных BQI-шрифтов формата CHR. ') ;, WriteLn('<C) 1993 В.В.Фаронов') ;

{Проверяем параметры обращения} if ParamCountoO then

FName := ParamStr(l) else

FName := '';

if FName='' then

begin Loop: (Сюда возврат при ошибке в имени}

Write('Введите имя CHR-файла (*.CHR): ');

ReadLntFName) ;

it FName = ' ' then

begin {Пустой ввод} Write('Создать новый шрифт (Y/N)? ');

ReadLntFMame);

if (FName=") or

(UpCase(FName[1])<>'Y') then Halt;

FName :° '';

Exit