inc(XO,10) , if XO>GetMaxX then begin

XO := 0;

inc(YO,20) end end;

{Записываем шрифт в файл и завершаем программу} BlockWrite(F,Р^,256*Н) ;

Close(F) ;

CloseGraph end.

В этой программе один из ключевых параметров — высота шрифта (переменная Н) определяется на основе анализа типа загруженного драйвера. В адаптерах CGA, EGA и VGA реализуется одинаковое разрешение по горизонтали в графическом режиме — 640 пиксел. Это определяет ширину поточечного образа каждого символа в 640/80 = 8 пиксел (для максимальной длины текстовой строки в 80 символов). Высота графического экрана, а следовательно, и высота образа символа различна: 200 строк развертки для CGA дают высоту символа в 200/25 = 8 пиксел для 25 текстовых строк, в то время как для EGA имеем 350/25 =14 пиксел, а для VGA — 480/25 = 19 пиксел. Адаптер VGA в текстовом режиме обеспечивает разрешение 720х400 пиксел, поэтому в нем используется шрифт размером 9х16. Однако поточечный образ каждого символа определяется матрицей 8х16 бит, так как в этом случае дополнительный 9—и пиксел по горизонтали автоматически выводится справа от символа цветом фона и служит для разделения символов друг от друга в строке.

После прогона приведенной выше программы в текущем каталоге будет сформирован двоичный файл, содержащий поточечные образы всех 256 символов. Эти образы используются при выводе сообщений в текстовом режиме, а значит Вы можете загрузить этот файл в память, чтобы рисовать символы графическими средствами.

Замечу, что для УСА—адаптера стандартный шрифт 8х16 обеспечивает 480/16 = 30 текстовых строк, т.е. вывод на экран этим шрифтом будет чуть мельче, чем в текстовом режиме. Если Вы хотите получить более точную имитацию текстового режима на VGA—адаптере, можно преобразовать создаваемый программой файл 8х16. fnt в файл 8x.l9.fnt. Увеличение высоты каждого образа до 19 пиксел обеспечит почти полную имитацию текстового вывода. Такое преобразование реализует следующая программа.

^——————————————————————————+

1 Эта программа служит для преобразования \ \ файла 8х16.fnt в файл 8х19. fnt I +---__------_------------------------------+^

Uses Graph;

type

tl6 = array [0..15] of Byte;