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;