GIF89a; EcchiShell v1.0
//proc/self/root/usr/share/ghostscript/ 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 % undefinefont - { //.FontDirectory 1 .argindex .forceundef % FontDirectory is readonly .currentglobal { % Current mode is global; delete from local directory too. //systemdict /LocalFontDirectory .knownget { 1 index .forceundef } executeonly % 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 .forceput } % 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 % restore - { dup //restore /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 } executeonly repeat pop % readonly } if //SharedFontDirectory exch .forcecopynew pop .currentglobal .setglobal % Rebind FontDirectory according to current VM. pop } .bind odef end % level2dict