36 Глава 1

Procedure SetFont(var Font; X,Y: Byte);

Здесь Font — любая переменная, содержащая загруженный шрифт; Х — ширина символа в пикселах, У — высота символа.

Например, для загрузки шрифта из файла «8х16. fnt» можно использовать следующий фрагмент программы:

Uses Graph,F_GrText;

var

D,R: Integer;

F: File;

Font: Pointer;

begin {Инициируем графический режим}

D := Detect;

InitGraph(D,R,'') ;

{Открываем файл}

Assign(F,'8х16.fnt') ;

Reset(F,1) ;

{Резервируем динамическую память для размещения шрифта}

GetMem(Font,FileSize(F)) ;

{Считываем файл в память}

BlockReacKF^ont^FileSizefF) ) ;

Close(F) ;

{Регистрируем шрифт}

SetFont(Font,8,16) ;

{Назначаем нестандартные драйверы ввода/вывода}

GraphWriteOn;

В ходе выполнения процедуры осуществляется пересчет разрешения экрана для текстового ввода/вывода. С этой целью рассчитываются внутренние переменные MaxChar (максимальная длина текстовой строки на графическом экране) и MaxLine (максимальное количество текстовых строк). Для расчета используется графическое разрешение экрана, возвращаемое стандартными функциями GetMaxX и GetMaxY, поэтому перед обращением к процедуре должен быть инициирован графический режим работы адаптера. После выполнения процедуры отменяется ранее установленное текстовое окно (если, разумеется, оно было установлено с помощью процедуры Window), а курсор переводится в левый верхний угол экрана. Текущие цвета символов и фона не меняются.

Следует заметить, что п< раметр X, задающий горизонтальную ширину символов, используется только для определения MaxChar. При фактическом выводе на экран ширина любого символа считается равной 8 пикселам (т.е. предполагается, что поточечные образы символов описываются матрицами размером 8хН бит). Кроме того, если Вы установите Х не равным 8, это скажется на границах текстового окна и вводе символов, в то время как при выводе на EGA/VGA прямым доступом к памяти символы