Initial Commit
[packages] / mule-packages / mule-base / etc / m2ps.ps
1 %!PS
2 %% PostScript Header for use by m2ps Ver.2.2
3 %%   Copyright (C) 1992 Free Software Foundation, Inc.
4 %%
5 %% This file is part of Mule (MULtilingual Enhancement of GNU Emacs).
6 %% 
7 %% Mule is free software distributed in the form of patches to GNU Emacs.
8 %% You can redistribute it and/or modify
9 %% it under the terms of the GNU General Public License as published by
10 %% the Free Software Foundation; either version 1, or (at your option)
11 %% any later version.
12 %% 
13 %% Mule is distributed in the hope that it will be useful,
14 %% but WITHOUT ANY WARRANTY; without even the implied warranty of
15 %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 %% GNU General Public License for more details.
17 %% 
18 %% You should have received a copy of the GNU General Public License
19 %% along with GNU Emacs; see the file COPYING.  If not, write to
20 %% the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21 %% 
22 %%  92.10.8  written by K.Handa <handa@etl.go.jp>
23 %%  92.12.15 modified by K.Handa <handa@etl.go.jp>
24 %%      Support composite character.
25
26 /Mydict 200 dict def    % define a working dictionary
27 Mydict begin            % start using it.
28
29 %%%% Font Manipulation
30
31 /imagemaskmatrix [0 0 0 0 0 0] def
32
33 /BuildGlyphDefault {            % fontdict charname  BuildGlyphDefault  -
34     0 begin
35     1 index /CharData get exch get /ch exch def
36     /FontSize get /fs exch def
37     ch 0 get fs div 0 ch 1 4 getinterval { fs div } forall setcachedevice
38     ch 5 get ch 6 get 2 copy
39     0 gt exch 0 gt and {
40         true
41         imagemaskmatrix
42         dup 0 fs put dup 3 fs neg put
43         dup 4 ch 7 get put dup 5 ch 8 get put
44         ch 9 1 getinterval cvx
45         imagemask
46     } {
47         pop pop
48     } ifelse
49     end
50 } bind def    
51
52 /BuildGlyphNoCache {            % fontdict charname  BuildGlyphNoCache  -
53     0 begin
54     1 index /CharData get exch get /ch exch def
55     /FontSize get /fs exch def
56     ch 0 get fs div 0 setcharwidth
57     ch 5 get ch 6 get 2 copy
58     0 gt exch 0 gt and {
59         true
60         imagemaskmatrix
61         dup 0 fs put dup 3 fs neg put
62         dup 4 ch 7 get put dup 5 ch 8 get put
63         ch 9 1 getinterval cvx
64         imagemask
65     } {
66         pop pop
67     } ifelse
68     end
69 } bind def    
70
71 /BuildGlyphDefault load 0 6 dict put
72 /BuildGlyphNoCache load 0 6 dict put
73
74 /work 4 string def
75
76 /nf {                   % font fontname fsize bbox rel cache  nf  -  % NEWFONT
77     13 dict begin
78     /FontType 3 def
79     %ifelse
80         { /BuildGlyph { BuildGlyphDefault } def }
81         { /BuildGlyph { BuildGlyphNoCache } def }
82     ifelse
83     /Relative exch def
84     /FontBBox exch def
85     /FontSize exch def
86     /FontMatrix [1 0 0 1 0 0] def
87     /Encoding 256 array %def
88         dup 0 1 255 {
89             dup (XXX) cvs
90             (CXXX) work copy pop
91             work exch 1 exch putinterval
92             work cvn
93             put dup
94         } for pop
95     def
96     /CharData 256 dict def
97     /BuildChar {
98         1 index /Encoding get exch get
99         1 index /BuildGlyph get exec
100     } def
101     dup currentdict
102     end
103     definefont pop
104     findfont FontScale scalefont def
105 } bind def
106
107 /g {                            % charname chardata  g  -       % NEWGLYPH
108     currentfont begin
109     CharData begin def end
110     end
111 } bind def
112
113 /f {                            % font  f  -                    % SETFONT
114     setfont
115 } bind def
116     
117 %%%% Page Control
118 /bp {                           % -  bp  -              % BEGIN OF PAGE
119     ShortMemory { save /SaveImage exch def } if
120     erasepage
121     /y TopMargin def
122     LeftMargin y moveto
123 } bind def
124
125 /ep {                           % -  ep  -              % END OF PAGE
126     copypage
127     ShortMemory { SaveImage restore } if
128 } bind def
129
130 %%%% Miscellaneous Routines for reducing traffic
131
132 /r {                            % x  r  -               % MOVE RIGHT
133     0 rmoveto
134 } bind def
135
136 /n {                            % -  n  -               % NEWLINE
137     /y y LinePitch sub def LeftMargin y moveto
138 } bind def
139
140 /s {                            % string  s  -          % SHOW STRING
141     show
142 } bind def
143
144 /cs1 {                          % string cs1 -          % SHOW COMP-CHAR
145     dup 0 get /ch exch def
146     currentfont /CharData get currentfont /Encoding get ch get get
147     dup 2 get /lly exch def
148     4 get /ury exch def
149     currentfont /Relative get /rel exch def
150     ury rel lt { /ury rel def } if
151     lly 0 gt { /lly 0 def } if
152     currentpoint /yy exch def /xx exch def
153     show
154 } bind def
155
156 /cs2 {                          % string cs2 -          % SHOW COMP-CHAR
157     gsave
158     dup 0 get /ch exch def
159     currentfont /FontSize get /fs exch def
160     currentfont /CharData get currentfont /Encoding get ch get get
161     dup 2 get /llyy exch def
162     4 get /uryy exch def
163     xx yy moveto
164     llyy rel ge {
165         0 ury llyy sub 1 add fs div FontScale mul rmoveto
166         /ury ury llyy sub uryy add 1 add def
167     } { uryy 0 le {
168         0 lly uryy sub 1 sub fs div FontScale mul rmoveto
169         /lly lly uryy sub llyy add 1 sub def
170     } {
171         uryy ury gt { /ury uryy def } if
172         llyy lly lt { /lly llyy def } if
173     } ifelse } ifelse
174     show
175     grestore
176 } bind def
177
178 /cs3 {                          % string cs3 -          % SHOW COMP-CHAR
179     gsave
180     xx yy moveto show
181     grestore
182 } bind def
183
184 end             % end of Mydict