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 прямым доступом к памяти символы