Тексты программ 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