Вывод текста
Шрифт DefaultFont входит в модуль Graph и доступен в любой момент. Это – единственный матричный шрифт, т.е. его символы создаются из матриц 8x8 пикселей. Все остальные шрифты – векторные: их элементы формируются как совокупность векторов (штрихов), характеризующихся направлением и размером. Векторные шрифты отличаются более богатыми изобразительными возможностями, но главная их особенность заключается в легкости изменения размеров без существенного ухудшения качества изображения. Каждый из этих шрифтов размещается в отдельном дисковом файле. Если Вы собираетесь использовать какой-либо векторный шрифт, соответствующий файл должен находиться в Вашем каталоге, в противном случае вызов этого шрифта игнорируется и подключается стандартный.
Замечу, что шрифт DefaultFont создается графическим драйвером в момент инициации графики на основании анализа текстового шрифта. Поэтому, если Ваш ПК способен выводить кириллицу в текстовом режиме, Вы сможете с помощью этого шрифта выводить русскоязычные сообщения и в графическом режиме. В остальных шрифтах эта возможность появляется только после их модификации.
Для задания направления выдачи текста можно использовать константы:
const HorizDir = 0;{Слева направо} VertDir = 1;{Снизу вверх}
Как видим, стандартные процедуры OutText и OutTextXY способны выводить сообщения лишь в двух возможных направлениях – слева направо или снизу вверх. Зная структуру векторных шрифтов, нетрудно построить собственные процедуры вывода, способные выводить сообщения в любом направлении.
Каждый шрифт способен десятикратно изменять свои размеры. Размер выводимых символов кодируется параметром Size, который может иметь значение в диапазоне от 1 до 10 (точечный шрифт – в диапазоне от 1 до 32). Если значение параметра равно 0. устанавливается размер 1, если больше 10 – размер 10. Минимальный размер шрифта, при котором еще отчетливо различаются все его детали, равен 4 (для точечного шрифта – 1).
Следующая программа демонстрирует различные шрифты. Их размер выбран так. чтобы строки имели приблизительно одинаковую высоту. Перед исполнением программы скопируйте все шрифтовые файлы с расширением .CHR в текущий каталог.
Uses Graph, CRT; const FontNames: array [1..10] of String[4] = ('TRIP', 'LITT'' SANS ', ' GOTH ', 'SCRI ', ' SIMP ','TSCR ', ' LOOM ', ' EURO',' BOLD '); Tabl = 50; Tab2 = 150; Tab3 =220; var d, r, Err,{Переменные для инициации графики} Y,dY,{Ордината вывода и ее приращение} Size,{Размер символов} MaxFont,{Максимальный номер шрифта} k: Integer;{Номер шрифта} NT, SizeT, SynibT: String;{Строки вывода} c: Char; {-------------------} Procedure OutTextWithTab (S1, S2, S3, S4: String); {Выводит строки S1..S4 с учетом позиций табуляции Таb1..ТаbЗ} begin MoveTo((Tab1-TextWidth(Sl)) div2,Y); OutText (S1); MoveTo(Tabl+(Tab2-Tabl-TextWidth(S2)) div2,Y); OutText (S2); MoveTo(Tab2+(Tab3-Tab2-TextWidth(S3)) div 2,Y); OutText(S3); if S4='Symbols' then {Заголовок колонки Symbols} MoveTo((Tab3+GetMaxX-TextWidth(S4)) div 2,Y) else {Остальные строки} MoveTo(Tab3+3,Y); OutText(S4) end; {------------} begin {Инициируем графику} InitGraph(d,r, ' '); Err: = GraphResult; if ErrogrOk then WriteLn(GraphErrorMsg(Err)) else begin {Определяем количество шрифтов:} {$IFDEF VER70'} MaxFont: = 10;. {$ELSE} MaxFont: = 4; {$ENDIF}