Методика разработки сцен на PostScript Печать образца доступными шрифтами | Печать образца доступными шрифтамиСоздадим программу, печатающую строку всеми шрифтами, которые доступны через библиотеку, вместе с названием шрифта, под которым он известен.
Подключаем библиотеку
(c:/aaa/bbb/lib-2.ps) run Задаем образец - строку, которую будем печатать всеми доступными шрифтами
/Образец (Французкие батоны не так вкусны, как хотелось бы!) def Устанавливаем праметры страницы. Также чтобы шрифты отображались в Ghostscript красиво включаем сглаживание. Но пользоваться ею нужно очень осторожно - используются нестандартные операции! Также сразу выставляем курсор в верхний левый угол страницы - печатаем сверху вниз.
/Страница.Новая { 20 mm Страница.Поле.Сверху! РазрешитьСглаживание Страница.Формат.А3 Страница.ОблПечати.Показать Страница.Поле.Слева Страница.Поле.Снизу translate /Печать.Курсор..Х 0 def /Печать.Курсор..У Страница.ОблПечати.Высота def } def Определяем оператор, которая печатает строку с отступом х от края листа, но на той же строке.
/Печать.Строка { Печать.Курсор..У moveto show } def Оператор, который переводит курсор в начало следующей строки
/Печать.Строка.Следующая { /Печать.Курсор..У Печать.Курсор..У Шрифт.Высота 2 mul sub def /Печать.Курсор..Х 0 def } def Оператор, возращающий true если курсор находится за пределами доступной области печати или, по другому, если достигнут конец страницы. В противном случае false out логич /Печать.КонецСтраницы? { Печать.Курсор..У 0 А_меньшеилиравен_Б? } def
Оператор печатает образец текущим шрифтом.
/ПоказатьШрифт { Печатаем название шрифта, под которым он известен системе. (Записан в файле fontmap.ps)
dup Шрифт.Ариал-Рус 10 Шрифт.Размер! Шрифт.Применить 0 mm Печать.Строка % показал название шрифта Подключаем шрифт. Делаем название исполняемым и выполняем его. Ведь название шрифта на самом деле это имя оператора.
cvx exec % теперь подключаем этот шрифт Задаем его параметры. Чтоб упростить код они заданы в теле оператора
17 Шрифт.Размер! Шрифт.Применить Печатаем образец и начинаем новую строку.
Образец 50 mm Печать.Строка Печать.Строка.Следующая Если достигли конца страницы, печатаем следующую.
Печать.КонецСтраницы? { showpage Страница.Новая } if Закончили описание оператора! } def Переопределяем оператор из файла fontmap.ps, чтобы можно было отобразить шрифт.
/..ee { pop ПоказатьШрифт } def Опеределение вспомогательных операторов закончили. Задаем новую страницу. И запускаем файл fontmap.ps, с переопределенным оператором ..ee он выступает как БД по доступным шрифтам.
Страница.Новая (Шрифт.Ариал-Ж-Рус) ПоказатьШрифт (Шрифт.Ариал-Рус) ПоказатьШрифт (Шрифт.Ариал-К-Рус) ПоказатьШрифт (Шрифт.Ариал-ЖК-Рус) ПоказатьШрифт (c:/aaa/bbb/fontmap.ps) run Выводим последнюю страницу и заканчиваем работу.
showpage quit Текст программы можно взять отсюда |