% Set defaults for Ghostscript to match Adobe CPSI behaviour for CET % skip if we've already run this -- based on fake "product" systemdict /product get (PhotoPRINT SE 5.0v2) readonly eq { (%END GS_CET) .skipeof } if % Note: this must be run at save level 0 and when systemdict is writeable currentglobal //true setglobal systemdict dup dup dup /version (3017.102) readonly .forceput % match CPSI 3017.102 /product (PhotoPRINT SE 5.0v2) readonly .forceput % match CPSI 3017.102 /revision 0 put % match CPSI 3017.103 Tek shows revision 5 /serialnumber dup {233640} readonly .makeoperator .forceput % match CPSI 3017.102 Tek shows serialnumber 1401788461 systemdict /.odef { % odef - 1 index exch //.makeoperator def } .bind .forceput % this will be undefined at the end 300 .sethiresscreen % needed for language switch build since it % processes gs_init.ps BEFORE setting the resolution 0 array 0 setdash % CET 09-08 wants local setdash /UNROLLFORMS //true def (%.defaultbgrucrproc) cvn { } bind def (%.defaultbgrucrproc) cvn load dup setblackgeneration setundercolorremoval 0 array cvx readonly dup dup dup setcolortransfer % CPSI doesn't define "Localization" resource. /Localization /Category undefineresource % Quality Logic test 09-59.ps tries to set each listed /OutputDevice. % This can cause problems with some devices (eg mswinpr2 on Windows) % so for the CET files we define the OutputDevice resource as % being empty. We need to redefine /.definecategory as that definition % gets destroyed at the end of gs_res.ps /OutputDevice /Category undefineresource /.definecategory % -mark- ... .definecategory - { counttomark 2 idiv 2 add % .Instances, Category /Generic /Category findresource dup maxlength 3 -1 roll add dict .copydict begin counttomark 2 idiv { def } repeat pop % pop the mark currentdict end /Category defineresource pop } bind def /OutputDevice mark /InstanceType /dicttype .definecategory % Redefine Font category to return -1 (unknown) VM usage % in all cases to avoid differences between hosts. /Font /Category findresource dup length dict copy dup dup /.loadfontresource get dup length array copy cvx dup 1 0 put dup 7 -1 put /.loadfontresource exch put /Font exch /Category defineresource pop % Some previously compile time options such as USE_ADOBE_CMYK_RGB % and GS_CHAR_FILL are now dynamic. Force CPSI compatibility. //true .setCPSImode % Some QL jobs (/23-12B.PS for example) do: % '(%stdin) (r) file' % expecting that they are being read from stdin. % if that is not the case, they block waiting for input % from stdin. % This hooks the 'file' operator', so if a job tries to % open %stdin, and we're *not* reading the job from stdin % it'll return currentfile instead. /ofile /file load def /file { 1 index (%stdin) eq 2 index (%stdin%) eq or { ofile dup currentfile eq not { pop currentfile }if } { ofile } ifelse } .bind //.odef exec currentdict /ofile undef % One QL job (23-12B.PS) effectively does: % (%stdin) (r) file 0 setfileposition % expecting it to throw an ioerror (stdin not being a positionable % stream. % With the above 'file' hook, when running from a file % rather than stdin, setfileposition will succeed, and we hit % an infinite loop - '0 setfileposition' meaning we restart intepreting % from the beginning of the file. % Hook setfileposition to throw an error attempting to reposition % the current file. /osetfileposition /setfileposition load def /setfileposition { 1 index currentfile eq { /setfileposition cvx /ioerror signalerror } { osetfileposition } ifelse } .bind //.odef exec currentdict /osetfileposition undef setglobal % Remove all but the default page size (the 0 entry in the InputAttributes % dictionary). This is usually 'letter'. << % As we're removing all but the default, make sure we're % using the default. /PageSize currentpagedevice /InputAttributes get 0 get /PageSize get currentpagedevice /InputAttributes get 1 1 2 index length 1 sub { 1 index exch undef } for /InputAttributes exch >> setpagedevice % Patch setsmoothness, currentsmoothness for a better view of shadings : userdict /.smoothness currentsmoothness put /setsmoothness { dup type dup /integertype eq exch /realtype eq or { userdict /.smoothness 3 2 roll cvr put } { /setsmoothness .systemvar /typecheck signalerror } ifelse } bind //.odef exec /currentsmoothness { userdict /.smoothness get } bind //.odef exec % for 09-55.PS, 09-57.PS . % slightly nasty hack to give consistent cluster results /ofnfa systemdict /filenameforall get def /filenameforall { 2 index dup length 1 eq { (*) eq { 3 -1 roll pop ( ) 3 1 roll } if } { pop } ifelse ofnfa } bind def systemdict /.odef .undef % end of slightly nasty hack to give consistent cluster results %END GS_CET