You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.8 KiB
168 lines
4.8 KiB
% 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 { % <name> <proc> 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 % <name> -mark- <key1> ... <valuen> .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
|