\!/ KyuuKazami \!/

Path : /usr/share/ghostscript/8.70/Resource/Init/
Upload :
Current File : //usr/share/ghostscript/8.70/Resource/Init/gs_dps1.ps

%    Copyright (C) 1997, 1999 Aladdin Enterprises.  All rights reserved.
% 
% This software is provided AS-IS with no warranty, either express or
% implied.
% 
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
% 
% For more information about licensing, please refer to
% http://www.ghostscript.com/licensing/. For information on
% commercial licensing, go to http://www.artifex.com/licensing/ or
% contact Artifex Software, Inc., 101 Lucas Valley Road #110,
% San Rafael, CA  94903, U.S.A., +1(415)492-9861.

% $Id: gs_dps1.ps 8954 2008-08-08 04:22:38Z ray $
% Initialization file for most of the Display PostScript functions
% that are also included in Level 2.

level2dict begin

% ------ Virtual memory ------ %

/currentshared /.currentglobal load def
/scheck /.gcheck load def
%****** FOLLOWING IS WRONG ******
/shareddict currentdict /globaldict .knownget not { 20 dict } if def

% Global and LocalFontDirectory must remain in systemdict
% even if we temporarily exit Level 2 mode.

end				% level2dict
systemdict begin

/SharedFontDirectory .FontDirectory .gcheck
 { .currentglobal false .setglobal
   /LocalFontDirectory .FontDirectory dup maxlength dict copy
   .forcedef	% LocalFontDirectory is local, systemdict is global
   .setglobal .FontDirectory
 }
 { /LocalFontDirectory .FontDirectory
   .forcedef	% LocalFontDirectory is local, systemdict is global
   50 dict
 }
ifelse def

end				% systemdict
level2dict begin

% setshared must rebind FontDirectory to the appropriate one of
% Local or SharedFontDirectory.

/.setglobal		% <bool> .setglobal -
 { dup .setglobal
   //systemdict /FontDirectory .currentglobal
    { //SharedFontDirectory }
    { /LocalFontDirectory .systemvar }	% can't embed ref to local VM
   ifelse .forceput pop	% LocalFontDirectory is local, systemdict is global
 } .bind odef		% must bind .forceput and .setglobal
			% even if NOBIND in effect
% Don't just copy (load) the definition of .setglobal:
% it gets redefined for LL3.
/setshared { /.setglobal .systemvar exec } odef
.currentglobal setshared

% See below for changes in save and restore.

% ------ Fonts ------ %

/selectfont		% <fontname> <size> selectfont -
 {
   { 1 .argindex findfont
     1 index dup type /arraytype eq { makefont } { scalefont } ifelse
     setfont pop pop
   } stopped { /selectfont .systemvar $error /errorname get signalerror } if
 } odef
% undefinefont has to take local/global VM into account.
/undefinefont		% <fontname> undefinefont -
 { .FontDirectory 1 .argindex .forceundef	% FontDirectory is readonly
   .currentglobal
    {		% Current mode is global; delete from local directory too.
      //systemdict /LocalFontDirectory .knownget
       { 1 index .forceundef }		% LocalFontDirectory is readonly
      if
    }
    {		% Current mode is local; if there was a shadowed global
		% definition, copy it into the local directory.
      //systemdict /SharedFontDirectory .knownget
       { 1 index .knownget
	  { .FontDirectory 2 index 3 -1 roll { put } //superexec } % readonly
	 if
       }
      if
    }
   ifelse pop
 } odef

% If we load a font into global VM within an inner save, the restore
% will delete it from FontDirectory but not from SharedFontDirectory.
% We have to handle this by making restore copy missing entries from
% SharedFontDirectory to FontDirectory.  Since this could slow down restore
% considerably, we define a new operator .forcecopynew for this purpose.
% Furthermore, if FAKEFONTS is in effect, we want global real fonts to
% override fake local ones.  We handle this by brute force.
/restore		% <save> restore -
 { dup //restore	% bind even if NOBIND
   /LocalFontDirectory .systemvar
   FAKEFONTS
    { mark
		% We want to delete a fake font from the local directory
		% iff the global directory now has no definition for it,
		% or a non-fake definition.
      1 index dup
       {		% Stack: lfd mark lfd key ... lfd key value
	 length 1 gt
	  {		% This is a real local definition; don't do anything.
	    pop
	  }
	  {		% This is a fake local definition, check for global.
	    //SharedFontDirectory 1 index .knownget
	     {		% A global definition exists, check for fake.
	       length 1 eq { pop } { 1 index } ifelse
	     }
	     {		% No global definition, delete the local one.
	       1 index
	     }
	    ifelse
	  }
	 ifelse
       } forall
      pop counttomark 2 idiv { .forceundef } repeat pop		% readonly
    }
   if
   //SharedFontDirectory exch .forcecopynew pop
   .currentglobal .setglobal	% Rebind FontDirectory according to current VM.
   pop
 } .bind odef

end				% level2dict

@KyuuKazami