% Copyright (C) 1994, 1996 Aladdin Enterprises. All rights reserved. % % This file is part of Aladdin Ghostscript. % % Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author % or distributor accepts any responsibility for the consequences of using it, % or for whether it serves any particular purpose or works at all, unless he % or she says so in writing. Refer to the Aladdin Ghostscript Free Public % License (the "License") for full details. % % Every copy of Aladdin Ghostscript must include a copy of the License, % normally in a plain ASCII text file named PUBLIC. The License grants you % the right to copy, modify and redistribute Aladdin Ghostscript, but only % under certain conditions described in the License. Among other things, the % License requires that the copyright notice and this notice be preserved on % all copies. % $Id: gs_ccfnt.ps,v 1.1 2000/03/09 08:40:39 lpd Exp $ % Find and register all the precompiled font operators in systemdict. /registerfont % registerfont { DEBUG { (Registering ) print 1 index = } if dup begin Encoding type /nametype eq { Encoding .findencoding /Encoding exch def } if dup /PrefEnc known { PrefEnc type /nametype eq { PrefEnc .findencoding /PrefEnc exch def } if } if dup /FDepVector known { /FDepVector [ FDepVector { .FontDirectory 1 index .knownget { exch pop } { ccfonts 1 index .knownget { registerfont } { Fontmap 1 index known { findfont } { pop NullFont } ifelse } ifelse } ifelse } forall ] readonly def } if end % Use the value of definefont appropriate at run-time, not bind-time /definefont load exec } bind odef % Bind recursive call (bind descends into oparrays: feature!) /registerfont dup load bind def /.loadinitialfonts { //.loadinitialfonts exec /ccfonts mark 0 1 null .getccfont 1 sub { .getccfont dup /FontName get exch } for .dicttomark def % Make sure these fonts are registered as "resources". currentfile { pop ccfonts { .FontDirectory 2 index known { pop pop } { registerfont pop } ifelse } forall } .execasresource currentdict /ccfonts .undef } bind def currentdict /registerfont .undef % If we're in a Level 2 system but running in Level 1 mode, % register the fonts explicitly as resources. % This is a bit of a hack, but doing better is too much work. /level2dict where { pop /findresource where { % Level 2 system, Level 2 mode pop } { % Level 2 system, Level 1 mode /Font /Category level2dict /findresource get exec begin .FontDirectory { dup .gcheck { Instances } { LocalInstances } ifelse 3 1 roll [exch 0 -1] .growput } forall end } ifelse } if