Я пишу программу, которая преобразует файл постскриптума в более простую последовательность точек, которые я могу отправить на плоттер, который я создаю. Я делаю это, запустив немного кода заголовка, который заменяет операции рисования с операциями, которые печати указывает на стандартный вывод, что моя основная программа управления будет использовать:Отключить шаблон кэширования
/stroke { gsave
matrix defaultmatrix setmatrix
flattenpath
/str 20 string def
{(m) print 2 copy exch str cvs print () print =}
{(l) print exch str cvs print () print =}
{6 {pop} repeat (error) =} % should never happen...
{(l) print exch str cvs print () print =}
pathforall
grestore
stroke
} bind def
/fill {
gsave stroke grestore fill
} bind def
Как примечание стороны, я действительно хочу приписка была команда printf, например 1 1 add (1+1=%d) printf
.
Для этого, чтобы работать со шрифтами, я отключил кеширование шрифтов, установив ограничение кеша на 0, с 0 setcachelimit
. В противном случае интерпретатор postscript не будет вызывать операции рисования для последующего использования кешированных объектов. Я бы скорее отключил кеширование шрифтов, переопределив setcachedevice
и setcachedevice2
, но эти операторы также должны обрабатывать некоторые характеристики метрики символов, а не только кеширование.
Пути пользователя также могут быть кэшированы, и я был в состоянии отключить это кэширование, переопределив ucache
и установив ограничение на кеш на 0 через /ucache {} def
.
Однако не существует команды для настройки параметров кэша паттерна, и шаблонам не требуется явно запрашивать кеширование., И даже если бы это было, мне нужно было заставить его вызывать операции рисования для каждого и каждой ячейке шаблона даже в пределах одной операции заполнения. Как отключить кэширование шаблонов?
Вы знаете об интерпретаторе, который будет уважать этот параметр? Я попробовал его с ghostscript, но он все равно кэширует их, даже между отдельными операциями заполнения. – AJMansfield
Ну, я полагаю, что CPSI от Adobe делает это, также делает Global Graphics 'JAWS Rip. У меня нет реального представления о других. Если вы имеете в виду интерпретатор PostScript с открытым исходным кодом, то я не думаю, что в наши дни есть какие-то исключения, кроме Ghostscript (у Luser Droog есть один, но я не уверен, что он достаточно полно, чтобы иметь дело с шаблонами). Вы не можете отключить кеш шаблона в Ghostscript, что является фундаментальным для работы графической библиотеки. – KenS
Возможно, вам захочется рассмотреть wirting устройство Ghostscript вместо того, чтобы взломать язык, который даст вам доступ к объектам, а не пытается извлечь их в этом довольно медленном и болезненном виде. Наконец, вы можете переопределить makepattern и setpattern, чтобы сохранить определение шаблона самостоятельно.Затем вы можете переопределить setcolorspace, чтобы пометить шаблон по области самостоятельно. Как вы планируете иметь дело с изображениями и оттенками? – KenS