ШРИФТЫ_
♦CCHR, *CHR, *CSIZE, *LARGE, +NORMAL, *DIR
Подобно таким мощным диалектам Бейсика, как
Mega-Basic и старшие версии Beta Basic, маленький PRO-DOS позволяет
работать со шрифтами различных размеров.
Простейшей операцией со шрифтом, выполняемой
PRO-DOS, является переключение набора символов со стандартного (ширина
знака 8 пикселей) на узкий (ширина знака 4 пикселя). Делает это
переключение оператор
*cchr
Применяется узкий шрифт так же, как и обычный
(с учетом приведенных в предыдущем разделе особенностей вывода данных в
окна). Только атрибуты для двух смежных символов, вписанных в
стандартное знакоместо (8x8 пикселей), естественно, будут всегда
одинаковы. Кроме того, узкие символы не распознаются функцией
стандартного Бейсика SCREENS (X,Y) (см. стр. 92).
После переключения на узкий шрифт произойдет
переопределение всех зарегистрированных в системе окон. За единицу
измерения величин, определяющих расположение и размеры окна, будет
принято не стандартное, а узкое знакоместо (4x8 пикселей).
Приведем пример, который иллюстрирует эту достаточно неординарную особенность:
30 * WSIZE 10, 2, 16, 8: REM Единственное окно 40 *TPAT BIN 11100010: REM Шаблон для его заливки 50 GO SUB 100: REM Сходим на заливку 60 *CCHR: REM Узкий шрифт
70 PAUSE 100: GO SUB 100: REM Зальемся еще разок 80 STOP
100 *CLS: PRINT "***": RETURN: REM Здесь заливают
Результат работы программы приведен на рис. 1 1.
Создается впечатление, что на экране
присутствуют два разичных окна На самом же деле, это одно и то же,
определенное в строке номер 30 окно, которое по-разному трактуется в
зависимости ог типа установленного шрифта Попутно заметим, что
изменение размера шрифта не влияет на фактуру заливки, заданную
инструкцией *ТРАТ
Если узкий шрифт инициализирован сразу после запуска PRO-DOS или после команды *NEW,
то для него будет доступна лишь левая половина экрана. Строка, длиннее
32 символов, будет переноситься, а попытка выполнить, скажем, оператор
PRINT AT 0, 40; "***"
будет игнорироваться. Чтобы сделать доступной
для узкого шрифта правую половину экрана, необходимо создать окно
соответствующего размера, например, оператором
♦WSIZE 0, 0, 63, 23
Восстановить режим печати нормальным шрифтом, то есть отменить действие *CCHR, можно при помощи оператора
*CHR
Если узкий шрифт но своим свойствам практически
аналогичен обычному, то шрифты, которые мы с извесгной долей условности
будем называть графическими, существенно отличаются от него.
Размер графических шрифтов задается неисполняемым оператором
*CSIZE n, m
и может быть только кратным (и, в частности,
равным) размеру стандартного. Первый параметр определяет значение
вертикального, а второй — горизонтального масштабных факторов.
Оба значения могут быть только целочисленными. Например, инструкция
*CSIZE 2, 1 «сгенерирует» шрифт в два раза выше, a *CSIZE
1, 2 — в два раза шире стандартного. Команда +CSIZE 32, 24
сформирует шрифт, где каждый символ будет размером во весь экран.
Возможно и дальнейшее увеличение размеров символа (вплоть до
♦CSIZE 255, 255), равно как и уменьшение до нулевого размера
(*CSIZE 0, m, *CSIZE п, 0 или +CSIZE 0, 0). Однако эти варианты вряд ли
представляют практический интерес.
Рис. 11. «Раздвоение» окон.
Поскольку оператор +CSIZE является неисполняемым, в PRO-DOS введен специальный оператор инициализации графического шрифта
♦LARGE
Он не требует параметров. После того как +LARGE
встретится в программе, PRINT начнет печатать графическим шрифтом,
размеры которого были заданы последним выполненным оператором
♦CSIZE. Обратное переключение на стандартный шрифт производит
оператор
♦NORMAL
♦LARGE без предварительного выполнения
оператора ♦CSIZE устанавливает графический шрифт с размером,
равным стандартному (8x8 пикселей). То есть по умолчанию считается, что
выполнен оператор ♦CSIZE 1,1.
Теперь о специфике работы с графическими
шрифтами. Во-первых, при печати с их использованием игнорируются
ключевые слова AT и TAB — оператор PRINT выводит символы, начиная
с левого верхнего угла экрана. Если текст превышает длину строки
экрана, то вывод продолжается с начала той же строки.
Позиция вывода устанавливается с помощью
оператора ♦PLOT х, у (но не PLOT без звездочки') Параметры х
(0...256) и у (0...192) задают координаты верхнего левого угла позиции
печати первого выводимого символа. Для того, чтобы в этой позиции не
появлялась точка, можно использовать конструкцию
PRINT INVERSE 1;: +PLOT х, у: PRINT INVERSE 0
При выводе на экран надписей, выполненных
графическими шрифтами, так же как и при графических построениях,
игнорируются знакоместа и окна, символы накладываются на существующее
изображение, не стирая его. Это и позволило нам называть их
«графическими».
При работе с графическими шрифтами нужно
следить за цветовыми атрибутами экрана. Может получиться так, что один
символ будет окрашен в несколько цветов (хотя это не всегда плохо).
Уникальной среди диалектов Бейсика является
способность PRO-DOS печатать графическими шрифтами в восьми
направлениях. Неисполняемый оператор
♦DIR п
определяет направление печати в зависимости от
значения параметра п, которое задается тем же способом, что и для
операторов скроллинга (см. стр. 143).
Приведем пример, демонстрирующий возможности графических шрифтов (рис. 12):
30 ♦NORMAL: REM Стандартный шрифт
40 FOR L=2 ТО 15: PRINT AT L, 6; "NORMAL": NEXT L:REM Строки стандартным шрифтом
50 «CSIZE 2, 2: REM Размер графического шрифта
60 «LARGE: REM Инициализация графического шрифта
70 40DIR 14: REM Пишем вправо-вниз
80 PRINT INVERSE 1;: *PLOT 20, 180: PRINT INVERSE 0;
90 PRINT "GRAPHIC": REM Строка графическим шрифтом
Символы графических шрифтов различных размеров
формируются непосредственно в процессе работы программы из текущего
набора символов, расположенного в ПЗУ или ОЗУ. Поэтому при
использовании альтернативного (например, русифицированного) символьного
набора автоматически будут получаться графические шрифты такого же
вида. Напротив, изображения символов узкого шрифта закодированы внутри
системного файла PRO-DOS, и поэтому русификация его более трудоемка*.
NORMAL. СО NORMAL VA NORMAL NORMAL - •"ORMRL 0RMRL
N
NOPI NORI _ NORMrtL V NORMAI^/4 NORMAL* NORMAL ^♦
Рис. 12. Возможности графических шрифтов.
Рис. 7. Построения прерывистыми линиями.