summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlgs/lib/gs_ccfnt.ps
blob: c33186bf356a09a1e38986d27a2d7485d2eb056d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
%    Copyright (C) 1994, 2000 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_ccfnt.ps 6300 2005-12-28 19:56:24Z giles $
% Find and register all the precompiled font operators in systemdict.

/registerfont			% <fontname> <fontdict> registerfont <font>
 { CCFONTDEBUG { (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
  NOCCFONTS not {
    /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
  } if
} bind def

currentdict /registerfont .undef