1 /* Copyright 1995, 1996, 1997, 1998 by Arkkra Enterprises */
6 char *prolog_text[] = {
7 "% Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2003, 2004 by Arkkra Enterprises",
8 "% All rights reserved",
10 "% Mup PostScript Prolog 5.3 for use with Mup 5.3",
12 "% lwid is used as the width of a standard (thin) line in the music",
13 "% character definitions.",
15 "/halflwid lwid 2 div def",
17 "% Define the following for use in do_upshortnote, do_dnshortnote, and",
18 "% do_shortrest; it has to be done outside of the music font definition.",
19 "/utildict 10 dict def",
21 " /setnumflags { /numflags exch def } def",
22 " /sethooksm1 { /hooksm1 exch def } def",
23 " /setoffsets { /offsets exch def } def",
24 " /setx { /x exch def } def",
25 " /sety { /y exch def } def",
28 "% Define a music character font. Each music character is defined as if it",
29 "% were a normal ASCII character in a strange font where \"A\" looks like a",
30 "% treble clef, \"B\" looks like a bass clef, etc.",
32 "/mfont0 100 dict def",
35 " /FontMatrix [ .001 0 0 0.001 0 0 ] def",
36 " /FontBBox [ -2000 -4030 2000 4030 ] def",
37 " /FontName (Mfont0) def",
39 " % set up Encoding vector with standard names",
40 " /Encoding 256 array def",
41 " StandardEncoding Encoding copy",
44 " % the following definitions are used for quarter rests",
45 " /topx -170 def /topy 950 def",
46 " /cor1x 250 def /cor1y 450 def",
47 " /cor2x -300 def /cor2y 200 def",
48 " /cor3x 250 def /cor3y -400 def",
50 " % the following definitions are used for double sharps",
51 " /limit 300 halflwid add def",
53 " /inbendsmall limit 200 sub def",
54 " /inbendbig limit 20 sub def",
55 " /outbendsmall 100 def",
56 " /outbendbig outbendsmall off add def",
58 " %%%%% define routines that will be used by multiple characters %%%%%",
61 " newpath -10 rotate 1.6 1 scale",
62 " 0 0 325 0 360 arc %outer ellipse",
63 " 1 1.6 div 1 scale 10 rotate %back to original",
64 " 35 rotate 0.85 1.1 scale",
65 " 0 0 275 0 360 arc %inner ellipse",
71 " -300 100 -100 480 0 600 curveto",
72 " 300 960 350 1500 200 1700 curveto",
74 " 350 1200 50 650 -315 600 curveto",
78 " -250 -400 moveto %outer edge of loop",
79 " 500 0 350 650 -250 160 curveto",
80 " -250 160 lwid sub lineto %inner edge of loop",
81 " 100 400 300 0 -250 -400 lwid add curveto",
84 " lwid setlinewidth %stem",
85 " -250 1100 moveto -250 -400 lineto stroke",
89 " 420 0 moveto 0 300 lineto -420 0 lineto",
90 " 0 -300 lineto closepath",
91 " 259 -29 moveto -41 185 lineto -259 29 lineto",
92 " 41 -185 lineto closepath",
97 " newpath 25 rotate 1.4 1 scale",
98 " 0 0 315 0 360 arc %outer ellipse",
99 " 1 1.4 div 1 scale %back to original",
101 " 0 0 310 0 360 arc %inner ellipse",
107 " newpath 25 rotate 1.35 1 scale",
108 " 0 0 310 0 360 arc fill",
113 " 330 250 150 0 360 arc fill %knob at upper right",
114 " 465 300 moveto %outer boundary",
115 " 410 500 200 635 0 635 curveto",
116 " -750 635 -750 -635 0 -635 curveto",
117 " 350 -635 480 -300 500 -100 curveto",
118 " 430 -100 lineto %inner boundary",
119 " 380 -300 250 -565 0 -565 curveto",
120 " -450 -565 -450 565 0 565 curveto",
121 " 200 565 370 350 395 300 curveto",
125 " 0 0 800 lwid sub 0 180 arc %inner arc",
127 " 0 270 lwid sub 800 180 0 arcn %outer arc",
128 " 800 0 lineto fill",
129 " 0 120 120 0 360 arc fill %the dot",
133 " 0.7 1 scale %scrunch the following horizontally",
134 " 45 rotate %to pretend all lines horz or vertical",
136 " pop %we don't need the loop variable",
137 " %one half of the mordent",
138 " 0 40 moveto 350 40 lineto 350 -460 lineto",
139 " 750 -460 lineto 750 -540 lineto",
140 " 150 -540 lineto 150 -40 lineto",
141 " 0 -40 lineto fill",
142 " 180 rotate %to do the other half",
149 " pop %we don't need the loop variable",
150 " 0 -100 moveto %outer boundary",
151 " 200 -400 625 -400 625 0 curveto",
152 " 625 200 500 325 300 325 curveto",
153 " 300 185 lineto %inner boundary",
154 " 450 255 555 150 555 0 curveto",
155 " 555 -350 250 -250 0 100 curveto",
157 " 300 255 70 0 360 arc fill %knob on end",
158 " 180 rotate %to do the other half",
163 " /do_upshortnote {",
165 " setnumflags %set numflags from the stack",
167 " -330 0 translate %half a flag width",
168 " do_4n %do a quarter note head",
169 " lwid setlinewidth",
171 " 370 2100 numflags 2 sub flagsep mul add lineto stroke",
172 " 670 2100 numflags 2 sub flagsep mul add translate",
173 " 1 -1 scale %reflect across X axis",
174 " 0 1 numflags 1 sub {",
175 " do_upflag %do an upflag",
176 " pop %we don't need the loop variable",
177 " 0 flagsep translate",
183 " /do_dnshortnote {",
185 " setnumflags %set numflags from the stack",
186 " do_4n %do a quarter note head",
187 " lwid setlinewidth",
189 " -370 -2100 numflags 2 sub flagsep mul sub lineto stroke",
191 " -70 -2100 numflags 2 sub flagsep mul sub translate",
192 " 0 1 numflags 1 sub {",
193 " do_upflag %do an upflag",
194 " pop %we don't need the loop variable",
195 " 0 flagsep translate",
203 " sety setx setoffsets sethooksm1 %set variable from the stack",
205 " -105.8 offsets mul -600 offsets mul translate",
206 " 0 1 hooksm1 { %loop once per hook",
211 " -150 300 1.2 div 140 0 360 arc fill %the dot",
213 " lwid setlinewidth",
214 " -50 700 550 255 315 arc %rest of the hook",
215 " hooksm1 lt { stroke 105.8 600 translate } if",
217 " x y lineto stroke",
223 " % subsidiary dictionary of character definitions",
224 " /CharStrings 128 dict def",
225 " CharStrings begin",
229 " % Here are the definitions of the characters. A stepsize here",
230 " % is 300 units (assuming the character is drawn at its default",
236 " %start with inner curl, inside boundary",
238 " -450 600 700 700 750 0 curveto",
239 " 750 -800 -700 -800 -700 200 curveto",
240 " -700 900 500 1400 520 2250 curveto",
241 " 520 2900 300 3000 200 3000 curveto",
242 " 100 3000 -400 2500 -200 1800 curveto",
244 " 720 -1600 0 -1650 -400 -1400 curveto",
246 " %go back to start, drawing the other boundary",
247 " -400 -1480 lineto",
248 " 0 -1700 800 -1700 430 -600 curveto",
250 " -300 2400 200 2800 250 2800 curveto",
251 " 400 2800 430 2700 430 2450 curveto",
252 " 430 1800 -900 1200 -900 300 curveto",
253 " -750 -900 800 -900 850 0 curveto",
254 " 900 1100 -750 900 -120 -300 curveto fill",
256 " %circle at the bottom",
257 " -300 -1250 250 0 360 arc fill",
263 " %start with outside boundary, at bottom",
264 " -1000 -1700 moveto",
265 " 100 -1100 500 -600 450 0 curveto",
266 " 450 850 -1100 850 -950 0 curveto",
268 " %go back to start, drawing the other boundary",
270 " -920 400 -600 560 -300 560 curveto",
271 " 0 560 150 400 150 0 curveto",
272 " 150 -400 100 -900 -1000 -1620 curveto fill",
274 " %circle at the left",
276 " -700 0 250 0 360 arc fill",
278 " %do the two dots after the main curve",
279 " 700 -300 100 0 360 arc fill",
280 " 700 300 100 0 360 arc fill",
286 " %do upper curved part, then scale to do mirror image",
288 " pop %we don't need the loop variable",
289 " %outer boundary of curve",
290 " -170 0 moveto 100 300 lineto",
291 " 400 -200 750 300 750 650 curveto",
292 " 750 1100 450 1235 250 1235 curveto",
293 " 0 1235 -143 1100 -143 950 curveto",
295 " %inner boundary of curve",
297 " 0 1100 30 1165 250 1165 curveto",
298 " 300 1165 450 1100 450 650 curveto",
299 " 450 400 400 -100 100 400 curveto",
300 " -270 0 lineto fill",
302 " %-270 0 moveto 100 400 lineto",
303 " %400 -100 450 400 450 650 curveto",
304 " %450 1100 300 1165 250 1165 curveto",
305 " %30 1165 0 1100 0 950 curveto",
308 " %elliptical ball at end of curve",
311 " 10 950 120 0 360 arc fill",
313 " 1 -1 scale %reflect across X axis",
317 " % two vertical lines on the left",
318 " 300 setlinewidth -600 -1200 halflwid sub moveto",
319 " -600 1200 halflwid add lineto stroke",
320 " lwid setlinewidth -300 -1200 halflwid sub moveto",
321 " -300 1200 halflwid add lineto stroke",
326 " do_1n %do a whole note",
327 " lwid setlinewidth",
328 " -490 -600 moveto -490 600 lineto stroke",
329 " 490 -600 moveto 490 600 lineto stroke",
334 " do_1n %do a whole note",
339 " do_2n %do a half note",
344 " do_4n %do a quarter note head",
349 " do_upflag %do an upflag",
355 " 1 -1 scale %reflect across X axis",
356 " do_upflag %do an upflag",
363 " 0 0 moveto 0 600 lineto stroke",
368 " lwid setlinewidth",
369 " -750 600 moveto 750 600 lineto stroke",
371 " -400 450 moveto 400 450 lineto stroke",
376 " lwid setlinewidth",
377 " -750 0 moveto 750 0 lineto stroke",
379 " -400 150 moveto 400 150 lineto stroke",
385 " cor3x cor3y halflwid add moveto",
386 " %-400 -200 -450 -650 50 -950 lwid add curveto",
387 " -450 -50 -450 -650 50 -950 lwid add curveto",
388 " -150 -650 -100 -250 cor3x cor3y halflwid sub curveto",
391 " cor1x cor1y moveto cor1x 200 sub cor1y 200 add lineto",
392 " cor2x cor2y lineto cor2x 200 add cor2y 200 sub lineto",
395 " lwid setlinewidth",
396 " topx topy moveto cor1x cor1y lineto stroke",
397 " cor2x cor2y moveto cor3x cor3y lineto stroke",
402 " 0 0 0 -600 do_shortrest",
407 " 1 1 100 -1200 do_shortrest",
412 " 2 1 0 -1800 do_shortrest",
417 " 3 2 -80 -2100 do_shortrest",
422 " 4 2 -150 -2700 do_shortrest",
427 " 5 3 -280 -3300 do_shortrest",
433 " 0 0 120 0 360 arc fill",
438 " % fill crossbars so that we can do parallelograms",
439 " -235 -470 moveto -235 -270 lineto",
440 " 235 -130 lineto 235 -330 lineto fill",
441 " -235 130 moveto -235 330 lineto",
442 " 235 470 lineto 235 270 lineto fill",
444 " % vertical strokes",
445 " lwid setlinewidth",
446 " -200 -380 moveto -200 850 lineto stroke",
447 " 200 -850 moveto 200 380 lineto stroke",
452 " % fill crossbars so that we can do parallelograms",
453 " -325 -480 moveto -325 -280 lineto",
454 " 325 -120 lineto 325 -320 lineto fill",
455 " -325 120 moveto -325 320 lineto",
456 " 325 480 lineto 325 280 lineto fill",
458 " % vertical strokes",
459 " lwid setlinewidth",
460 " -150 -930 moveto -150 880 lineto stroke",
461 " 150 -880 moveto 150 930 lineto stroke",
466 " do_flat %do a flat",
472 " 0 1 3 { %loop once for each of 4 sticks",
473 " pop %we don't need the loop variable",
475 " outbendbig outbendsmall lineto",
476 " inbendbig inbendsmall lineto",
477 " limit limit lineto",
478 " inbendsmall inbendbig lineto",
479 " outbendsmall outbendbig lineto",
489 " -290 580 290 { %loop once for each flat",
493 " 0 translate %translate left/right (loop var)",
494 " do_flat %do a flat",
503 " 1.15 1 scale 120 setlinewidth 1 setlinecap %round",
504 " -300 -300 moveto 300 300 lineto stroke",
505 " -300 300 moveto 300 -300 lineto stroke",
511 " do_diamond %do a diamond",
512 " lwid setlinewidth",
513 " -420 -600 moveto -420 600 lineto stroke",
514 " 420 -600 moveto 420 600 lineto stroke",
519 " do_diamond %do a diamond",
524 " 420 0 moveto 0 300 lineto",
525 " -420 0 lineto 0 -300 lineto fill",
530 " lwid setlinewidth",
531 " 380 0 moveto 380 2100 lineto stroke",
532 " do_2n %do a half note",
537 " lwid setlinewidth",
538 " -380 0 moveto -380 -2100 lineto stroke",
539 " do_2n %do a half note",
544 " do_4n %do a quarter note head",
545 " lwid setlinewidth",
546 " 370 0 moveto 370 2100 lineto stroke",
551 " do_4n %do a quarter note head",
552 " lwid setlinewidth",
553 " -370 0 moveto -370 -2100 lineto stroke",
559 " -330 0 translate % half a flag width",
560 " do_4n %do a quarter note head",
561 " lwid setlinewidth",
562 " 370 0 moveto 370 2100 lineto stroke",
563 " 670 2100 translate",
564 " 1 -1 scale %reflect across X axis",
565 " do_upflag %do an upflag",
571 " do_4n %do a quarter note head",
572 " lwid setlinewidth",
573 " -370 0 moveto -370 -2100 lineto stroke",
575 " -70 -2100 translate",
576 " do_upflag %do an upflag",
632 " do_com %do a common time symbol",
637 " do_com %do a common time symbol",
638 " lwid setlinewidth",
639 " 0 -900 moveto 0 900 lineto stroke",
644 " lwid setlinewidth",
645 " -200 600 moveto -200 0 lineto 200 0 lineto stroke",
650 " lwid setlinewidth",
651 " -500 0 moveto -450 0 lineto 0 600 lineto",
652 " 450 0 lineto 500 0 lineto stroke",
657 " lwid setlinewidth",
658 " 200 600 moveto 200 0 lineto -200 0 lineto stroke",
663 " lwid setlinewidth",
664 " -350 0 moveto -350 900 lineto stroke",
665 " 350 0 moveto 350 900 lineto stroke",
667 " -350 800 moveto 350 800 lineto stroke",
672 " lwid setlinewidth",
673 " -300 900 moveto 0 0 lineto 300 900 lineto stroke",
678 " 0 0 moveto -150 500 lineto 150 500 lineto fill",
683 " -150 0 moveto 150 0 lineto 0 500 lineto fill",
689 " do_ferm %do a right side up fermata",
696 " 0 270 lwid sub 800 add translate %baseline at bottom",
697 " 180 rotate %upside down",
698 " do_ferm %do a right side up fermata",
705 " %do upper left curved part, upper right dot;",
706 " %then rotate 180 to do other half",
708 " pop %we don't need the loop variable",
709 " 0 100 moveto %inner boundary",
710 " -1000 300 -400 750 -200 700 curveto",
711 " -200 800 lineto %outer boundary",
712 " -550 900 -1100 100 0 -100 curveto",
714 " %dot at end of curve",
715 " -200 700 100 0 360 arc fill",
716 " %dot in upper right quadrant",
717 " 500 200 70 0 360 arc fill",
722 " %slash through middle",
723 " lwid setlinewidth",
724 " -400 -800 moveto 400 800 lineto stroke",
732 " 0 0 550 0 360 arc %outside boundary",
733 " 1 0.6 div 1 scale %back to original",
735 " 0 0 650 0 360 arc %inside boundary",
738 " lwid setlinewidth",
739 " 0 -850 moveto 0 850 lineto stroke",
740 " -800 0 moveto 800 0 lineto stroke",
745 " do_mor %do a mordent",
750 " do_mor %do a mordent",
751 " lwid setlinewidth",
752 " 0 -450 moveto 0 450 lineto stroke",
757 " do_turn %do a turn",
763 " 1 -1 scale %reflect across X axis",
764 " do_turn %do a turn",
770 " lwid setlinewidth",
771 " -500 300 moveto 500 0 lineto -500 -300 lineto stroke",
777 " -365 0 moveto 0 860 lineto 365 0 lineto",
778 " 150 0 lineto -75 530 lineto -300 0 lineto fill",
784 " 365 860 moveto 0 0 lineto -365 860 lineto",
785 " -150 860 lineto 75 330 lineto 300 860 lineto fill",
790 " %vertical bar of t",
791 " -350 1000 moveto -550 200 lineto",
792 " -612.5 -50 -212.5 -50 -160 200 curveto",
794 " -300 50 -420 50 -400 200 curveto",
795 " -200 1000 lineto fill",
797 " %crossbar of t and vertical bar of r",
798 " -700 600 moveto -160 600 lineto",
799 " 20 600 30 520 60 440 curveto",
800 " -50 0 lineto 70 0 lineto 180 440 lineto",
801 " 190 480 100 670 -150 670 curveto",
802 " -690 670 lineto fill",
804 " %horizontal curve of r",
806 " 300 630 450 700 650 550 curveto",
808 " 450 630 300 560 100 390 curveto",
811 " %knob at end of r",
812 " 600 460 100 0 360 arc fill",
818 " -400 0 moveto 400 0 lineto stroke",
824 " -400 0 moveto 0 1000 lineto stroke",
825 " 0 0 moveto 400 1000 lineto stroke",
830 " newpath -450 400 150 0 360 arc fill",
831 " newpath 450 -400 150 0 360 arc fill",
833 " -550 -600 moveto 550 600 lineto stroke",
838 " lwid setlinewidth",
839 " newpath 0 400 400 0 360 arc stroke",
840 " newpath 0 400 200 45 315 arc stroke",
846 " newpath 0 640 220 0 360 arc stroke",
852 " newpath 0 640 220 0 360 arc stroke",
853 " newpath -340 300 moveto 340 980 lineto stroke",
859 " newpath -340 -10 moveto 0 710 lineto",
860 " 340 -10 lineto closepath stroke",
866 " 0 -600 moveto 0 600 lineto stroke",
872 " -400 455 moveto 400 450 lineto stroke",
878 " -400 145 moveto 400 150 lineto stroke",
885 " Encoding exch get",
889 " aload pop setcachedevice",
891 " CharStrings exch get",
898 "% Define another music character font, since there are too many to fit in one",
899 "% font. It works the same way as the first one.",
901 "/mfont1 100 dict def",
904 " /FontMatrix [ .001 0 0 0.001 0 0 ] def",
905 " /FontBBox [ -2000 -4030 2000 4030 ] def",
906 " /FontName (Mfont1) def",
908 " % set up Encoding vector with standard names",
909 " /Encoding 256 array def",
910 " StandardEncoding Encoding copy",
913 " %%%%% define routines that will be used by multiple characters %%%%%",
916 " % the two bars surrounding a double whole note",
917 " lwid setlinewidth",
918 " -420 -600 moveto -420 600 lineto stroke",
919 " 420 -600 moveto 420 600 lineto stroke",
921 " /do_righttriangle {",
923 " 420 270 moveto -420 270 lineto 350 -300 lineto 420 -300 lineto",
924 " 350 150 moveto -140 150 lineto 350 -213 lineto",
927 " /do_fillrighttriangle {",
929 " 420 270 moveto -420 270 lineto 350 -300 lineto 420 -300 lineto",
934 " 420 270 moveto -420 270 lineto -420 -270 lineto 420 -270 lineto",
935 " 350 150 moveto -350 150 lineto -350 -150 lineto 350 -150 lineto",
938 " /do_isostriangle {",
940 " 0 300 moveto -420 -270 lineto 420 -270 lineto",
941 " 0 182 moveto -245 -150 lineto 245 -150 lineto",
946 " 0 -300 moveto 0 -244 514 35 145 arc",
947 " 0 -209 moveto 0 -244 394 43 137 arc",
953 " 1 1.357 scale 420 199 moveto 0 199 420 180 360 arc",
954 " 1 1.09 scale 350 111 moveto 0 199 350 194.1 345.9 arc",
960 " lwid setlinewidth",
961 " -620 -530 moveto -480 -670 lineto 620 530 lineto 480 670 lineto",
965 " % subsidiary dictionary of character definitions",
966 " /CharStrings 128 dict def",
967 " CharStrings begin",
971 " % Here are the definitions of the characters. A stepsize here",
972 " % is 300 units (assuming the character is drawn at its default",
975 " % dwhrighttriangle",
986 " % fillrighttriangle",
989 " 420 270 moveto -420 270 lineto 350 -300 lineto",
994 " % udwhrighttriangle",
1003 " % urighttriangle",
1007 " do_righttriangle",
1011 " % ufillrighttriangle",
1015 " do_fillrighttriangle",
1033 " 420 270 moveto -420 270 lineto -420 -270 lineto",
1038 " % dwhisostriangle",
1049 " % fillisostriangle",
1052 " 0 300 moveto -420 -270 lineto 420 -270 lineto",
1070 " 0 -300 moveto 0 -244 514 35 145 arc",
1085 " % fillsemicircle",
1089 " 1 570 420 div scale",
1090 " 420 199 moveto 0 199 420 180 360 arc",
1098 " lwid setlinewidth",
1099 " -650 -600 moveto -650 600 lineto stroke",
1100 " 650 -600 moveto 650 600 lineto stroke",
1111 " 200 setlinewidth",
1112 " -550 -600 moveto 550 600 lineto stroke",
1124 " Encoding exch get",
1127 " Mcbbox1 exch get",
1128 " aload pop setcachedevice",
1130 " CharStrings exch get",
1137 "% General routines for printing any music character, invoked by each music",
1138 "% character's specific routine below. The scaling factor (default 1) needs",
1139 "% to be multiplied by 10 to get the actual size. These routines restore the",
1140 "% preexisting current font when they are done.",
1144 " /musicchar exch def",
1145 " /Mfont0 findfont exch 10 mul scalefont setfont moveto ",
1151 " /musicchar exch def",
1152 " /Mfont1 findfont exch 10 mul scalefont setfont moveto ",
1157 "% Define each music character name to be a routine that prints the character.",
1158 "% Each character is to be invoked as in this example:",
1159 "% 100 200 1 gclef % at (100, 200), scale to default size & print",
1161 "/gclef { (A) printmchar0 } def",
1162 "/fclef { (B) printmchar0 } def",
1163 "/cclef { (C) printmchar0 } def",
1164 "/dblwhole { (D) printmchar0 } def",
1165 "/1n { (E) printmchar0 } def",
1166 "/2n { (F) printmchar0 } def",
1167 "/4n { (G) printmchar0 } def",
1168 "/upflag { (H) printmchar0 } def",
1169 "/dnflag { (I) printmchar0 } def",
1170 "/dwhrest { (J) printmchar0 } def",
1171 "/1rest { (K) printmchar0 } def",
1172 "/2rest { (L) printmchar0 } def",
1173 "/4rest { (M) printmchar0 } def",
1174 "/8rest { (N) printmchar0 } def",
1175 "/16rest { (O) printmchar0 } def",
1176 "/32rest { (P) printmchar0 } def",
1177 "/64rest { (Q) printmchar0 } def",
1178 "/128rest { (R) printmchar0 } def",
1179 "/256rest { (S) printmchar0 } def",
1180 "/dot { (T) printmchar0 } def",
1181 "/nat { (U) printmchar0 } def",
1182 "/sharp { (V) printmchar0 } def",
1183 "/flat { (W) printmchar0 } def",
1184 "/dblsharp { (X) printmchar0 } def",
1185 "/dblflat { (Y) printmchar0 } def",
1186 "/xnote { (Z) printmchar0 } def",
1187 "/dwhdiamond { (a) printmchar0 } def",
1188 "/diamond { (b) printmchar0 } def",
1189 "/filldiamond { (c) printmchar0 } def",
1190 "/up2n { (d) printmchar0 } def",
1191 "/dn2n { (e) printmchar0 } def",
1192 "/up4n { (f) printmchar0 } def",
1193 "/dn4n { (g) printmchar0 } def",
1194 "/up8n { (h) printmchar0 } def",
1195 "/dn8n { (i) printmchar0 } def",
1196 "/up16n { (j) printmchar0 } def",
1197 "/dn16n { (k) printmchar0 } def",
1198 "/up32n { (l) printmchar0 } def",
1199 "/dn32n { (m) printmchar0 } def",
1200 "/up64n { (n) printmchar0 } def",
1201 "/dn64n { (o) printmchar0 } def",
1202 "/up128n { (p) printmchar0 } def",
1203 "/dn128n { (q) printmchar0 } def",
1204 "/up256n { (r) printmchar0 } def",
1205 "/dn256n { (s) printmchar0 } def",
1206 "/com { (t) printmchar0 } def",
1207 "/cut { (u) printmchar0 } def",
1208 "/begped { (v) printmchar0 } def",
1209 "/pedal { (w) printmchar0 } def",
1210 "/endped { (x) printmchar0 } def",
1211 "/dnbow { (y) printmchar0 } def",
1212 "/upbow { (z) printmchar0 } def",
1213 "/wedge { (1) printmchar0 } def",
1214 "/uwedge { (2) printmchar0 } def",
1215 "/ferm { (3) printmchar0 } def",
1216 "/uferm { (4) printmchar0 } def",
1217 "/sign { (5) printmchar0 } def",
1218 "/coda { (6) printmchar0 } def",
1219 "/mor { (7) printmchar0 } def",
1220 "/invmor { (8) printmchar0 } def",
1221 "/turn { (9) printmchar0 } def",
1222 "/invturn { (0) printmchar0 } def",
1223 "/acc_gt { (#) printmchar0 } def",
1224 "/acc_hat { ($) printmchar0 } def",
1225 "/acc_uhat { (\") printmchar0 } def",
1226 "/tr { (*) printmchar0 } def",
1227 "/leg { (,) printmchar0 } def",
1228 "/rr { (-) printmchar0 } def",
1229 "/measrpt { (.) printmchar0 } def",
1230 "/copyright { (/) printmchar0 } def",
1231 "/dim { (`) printmchar0 } def",
1232 "/halfdim { (') printmchar0 } def",
1233 "/triangle { (^) printmchar0 } def",
1234 "/qwhrest { (&) printmchar0 } def",
1235 "/ll1rest { (!) printmchar0 } def",
1236 "/ll2rest { (@) printmchar0 } def",
1237 "/dwhrighttriangle { (A) printmchar1 } def",
1238 "/righttriangle { (B) printmchar1 } def",
1239 "/fillrighttriangle { (C) printmchar1 } def",
1240 "/udwhrighttriangle { (D) printmchar1 } def",
1241 "/urighttriangle { (E) printmchar1 } def",
1242 "/ufillrighttriangle { (F) printmchar1 } def",
1243 "/dwhrectangle { (G) printmchar1 } def",
1244 "/rectangle { (H) printmchar1 } def",
1245 "/fillrectangle { (I) printmchar1 } def",
1246 "/dwhisostriangle { (J) printmchar1 } def",
1247 "/isostriangle { (K) printmchar1 } def",
1248 "/fillisostriangle { (L) printmchar1 } def",
1249 "/dwhpiewedge { (M) printmchar1 } def",
1250 "/piewedge { (N) printmchar1 } def",
1251 "/fillpiewedge { (O) printmchar1 } def",
1252 "/dwhsemicircle { (P) printmchar1 } def",
1253 "/semicircle { (Q) printmchar1 } def",
1254 "/fillsemicircle { (R) printmchar1 } def",
1255 "/dwhslashhead { (S) printmchar1 } def",
1256 "/slashhead { (T) printmchar1 } def",
1257 "/fillslashhead { (U) printmchar1 } def",
1258 "/blankhead { (V) printmchar1 } def",
1261 "% Define routines for Mup output other than music characters.",
1263 "/stepsize 3 def % define a step size as 3 points (at default magnification)",
1265 "% x1 y1 x2 lines dist staffscale staff",
1266 "% draw a staff starting at x1, y1 and extending to x2 with \"lines\"",
1267 "% lines, 2*dist*stepsize apart, scaled by staffscale",
1269 " /staffscale exch def",
1275 " 0.7 staffscale mul sb setlinewidth",
1276 " 1 lines sub 2 lines 1 sub { % loop from bottom line to top line",
1277 " dup stepsize mul staffscale mul dist mul y1 add x1 exch moveto",
1278 " stepsize mul staffscale mul dist mul y1 add x2 exch lineto stroke",
1282 "% x y1 y2 bracket draw a bracket; y1 is the top",
1289 " x 2 sub y1 1 add moveto",
1290 " x 2 sub y2 1 sub lineto",
1292 " x 2 sub y1 1 add moveto",
1293 " x 1 sub y1 1 add x 3 add y1 1 add x 5 add y1 6 add curveto",
1294 " x 6 add y1 5 add lineto",
1295 " x 5 add y1 2 add x 1 add y1 2 sub x 2 sub y1 2 sub curveto",
1297 " x 2 sub y2 1 sub moveto",
1298 " x 1 sub y2 1 sub x 3 add y2 1 sub x 5 add y2 6 sub curveto",
1299 " x 6 add y2 5 sub lineto",
1300 " x 5 add y2 2 sub x 1 add y2 2 add x 2 sub y2 2 add curveto",
1305 "% x y1 y2 brace draw a brace; y1 is the top",
1311 " x 9 sub y1 y2 add 2 div translate",
1312 " /topy y1 y2 sub 2 div 1 sub def",
1315 " %0 topy moveto 0 0 lineto stroke",
1317 " 16 topy 0.2 mul -11 topy 0.6 mul 8 topy curveto",
1319 " -7 topy 0.7 mul 20 topy 0.3 mul 1 0 curveto",
1321 " 1 -1 scale % flip to do bottom half",
1326 "% endx endy wavy staffscale draw a wavy line from current point to here,",
1327 "% scaled by staffscale",
1329 " /staffscale exch def",
1330 " /endy exch def % define the end point of the line",
1332 " currentpoint % line starts at current point",
1333 " /begy exch def % define the beginning point of the line",
1336 " /dx endx begx sub def % find delta x and delta y",
1337 " /dy endy begy sub def",
1338 " /r dx dx mul dy dy mul add sqrt def % hypotenuse",
1339 " /theta dy dx atan def % angle with positive x axis",
1340 " begx begy translate % change axes so that we can draw the line",
1341 " theta rotate % from (0, 0) to (r, 0)",
1342 " staffscale staffscale scale % scale everything by staffscale",
1343 " /scaledr r staffscale div def % but scale r in reverse to keep length",
1345 " % Each outer loop draws one cycle of the squiggle. It continues until",
1346 " % we are at or beyond the desired end point.",
1350 " % first loop draws left half of squiggle; second draws right",
1353 " 2.0 1.9 3.4 2.3 3.9 0.0 curveto",
1355 " 1.9 0.8 1.4 0.7 0.0 -0.4 curveto",
1357 " pop 180 rotate -6 0 translate",
1361 " pop 6 0 translate % shift axes right one squiggle",
1367 "% x y space frets fretno numvert curvel curver [ f1 f2 f3 ... ] grid",
1368 "% print a guitar grid diagram",
1370 " /grid_positions exch def % 0=\"o\", -1=\"x\", -2=nothing, positive=dot",
1371 " /curver exch def % right string for curve, 0 if none",
1372 " /curvel exch def % left string for curve, 0 if none",
1373 " /numvert exch def % vertical position to print fretno, 0 if none",
1374 " /fretno exch def % fret no. to print at right, 0 if none",
1375 " /frets exch def % number of fret lines",
1376 " /space exch def % points between two neighboring lines",
1377 " /y exch def % y coord of top fret line",
1378 " /x exch def % x coord of left strings",
1381 " /strings grid_positions length def % number of strings",
1382 " /lmarky 0.4 space mul y add def % lowest Y of a \"o\" or \"x\"",
1383 " space 10 div setlinewidth",
1386 " % draw the lines of the grid",
1387 " 0 1 strings 1 sub { % loop from left string to right string",
1388 " dup space mul x add y moveto",
1389 " space mul x add frets 1 sub space mul y exch sub lineto stroke",
1391 " 0 -1 1 frets sub { % loop from top fret (nut) to bottom fret",
1392 " dup space mul y add x exch moveto",
1393 " space mul y add strings 1 sub space mul x add exch lineto stroke",
1396 " % draw the curved line if there is one",
1398 " % within strings curvel to curver, find smallest positive fret",
1399 " /minfret 1000 def",
1400 " curvel 1 curver {",
1402 " /grid_p grid_positions strno 1 sub get def",
1403 " grid_p 0 gt grid_p minfret lt and {",
1404 " /minfret grid_p def",
1408 " % if curve goes above top fret, other marks must be higher",
1410 " /hmarky 1.2 space mul y add def",
1412 " /hmarky lmarky def",
1415 " /strdiff curver curvel sub def",
1416 " space 8 div setlinewidth",
1418 " % set endpoint coords of curve; higher if curve is short",
1419 " /curvex1 curvel 1 sub space mul x add def",
1420 " /curvex2 curver 1 sub space mul x add def",
1421 " /curvey 1 minfret sub space mul y add def",
1423 " /curvey 0.2 strdiff div space mul curvey add def",
1426 " % move to left end, set other points, draw curve",
1427 " curvex1 curvey moveto",
1429 " curvex1 curvex2 curvex1 sub 3 div add",
1430 " curvey space 0.4 strdiff sqrt mul mul add",
1432 " curvex2 curvex2 curvex1 sub 3 div sub",
1433 " curvey space 0.4 strdiff sqrt mul mul add",
1435 " curvex2 curvey curveto stroke",
1438 " space 10 div setlinewidth",
1440 " % draw dots and x and o marks",
1441 " 0 1 strings 1 sub { % loop from left string to right string",
1442 " /strno exch def % first string is 0",
1443 " /grid_p grid_positions strno get def",
1444 " /strx strno space mul x add def",
1446 " % set Y of mark higher if curved line covers this string",
1447 " strno 1 add curvel ge strno 1 add curver le and {",
1448 " /marky hmarky def",
1450 " /marky lmarky def",
1453 " grid_p -1 eq { % draw an X above the string",
1454 " /xhwid space 3 div def",
1455 " strx xhwid sub marky xhwid sub moveto",
1456 " strx xhwid add marky xhwid add lineto stroke",
1457 " strx xhwid sub marky xhwid add moveto",
1458 " strx xhwid add marky xhwid sub lineto stroke",
1460 " grid_p 0 eq { % draw a circle above the string",
1461 " strx marky space 0.3 mul 0 360 arc stroke",
1463 " grid_p 1 ge { % draw a dot by the proper fret",
1464 " strx y grid_p space mul sub space 3 div add",
1465 " space 3 div 0 360 arc fill",
1469 " % print \"X fr\" if requested",
1471 " /Palatino-Roman findfont space 1.9 mul scalefont setfont",
1472 " x strings 0.5 sub space mul add",
1473 " y space numvert 0.3 add mul sub moveto",
1474 " fretno 2 string cvs show ( fr) show",
1479 "% x1 y1 x2 y2 whitebox draw a white rectangle with opposite",
1480 "% corners of (x1,y1) and (x2,y2)",
1500 "/InputFile (unknown) def",
1504 " /LineNum exch def",
1507 "% (inputfilename) inputfile",
1509 " /InputFile exch def",
1512 "% find size of Encoding and make a dictionary",
1513 "% that size for bounding box information",
1515 "/dictsize Encoding length def",
1516 "mfont0 /Mcbbox0 dictsize dict put",
1518 "% temporarily redefine printmchar0 to get code",
1520 "/printmchar0 { {} forall } def",
1522 "Mcbbox0 Encoding 128rest get [ 1140.0 0 -515.0 -1515.0 615.0 1685.0 ] put",
1523 "Mcbbox0 Encoding 16rest get [ 830.0 0 -415.0 -1215.0 405.0 485.0 ] put",
1524 "Mcbbox0 Encoding 1n get [ 1080.0 0 -535.0 -335.0 535.0 345.0 ] put",
1525 "Mcbbox0 Encoding 1rest get [ 1540.0 0 -765.0 -5.0 765.0 645.0 ] put",
1526 "Mcbbox0 Encoding 256rest get [ 1250.0 0 -625.0 -2115.0 615.0 1685.0 ] put",
1527 "Mcbbox0 Encoding 2n get [ 880.0 0 -435.0 -345.0 435.0 355.0 ] put",
1528 "Mcbbox0 Encoding 2rest get [ 1540.0 0 -765.0 -45.0 765.0 315.0 ] put",
1529 "Mcbbox0 Encoding 32rest get [ 940.0 0 -415.0 -1215.0 515.0 1085.0 ] put",
1530 "Mcbbox0 Encoding 4n get [ 840.0 0 -415.0 -335.0 415.0 345.0 ] put",
1531 "Mcbbox0 Encoding 4rest get [ 650.0 0 -345.0 -885.0 295.0 985.0 ] put",
1532 "Mcbbox0 Encoding 64rest get [ 1040.0 0 -515.0 -1515.0 515.0 1085.0 ] put",
1533 "Mcbbox0 Encoding 8rest get [ 750.0 0 -305.0 -615.0 435.0 485.0 ] put",
1534 "Mcbbox0 Encoding acc_gt get [ 1170.0 0 -525.0 -335.0 635.0 345.0 ] put",
1535 "Mcbbox0 Encoding acc_hat get [ 780.0 0 -385.0 -5.0 385.0 875.0 ] put",
1536 "Mcbbox0 Encoding acc_uhat get [ 780.0 0 -385.0 -5.0 385.0 875.0 ] put",
1537 "Mcbbox0 Encoding begped get [ 470.0 0 -245.0 -45.0 215.0 615.0 ] put",
1538 "Mcbbox0 Encoding cclef get [ 1540.0 0 -765.0 -1245.0 765.0 1255.0 ] put",
1539 "Mcbbox0 Encoding coda get [ 1640.0 0 -815.0 -855.0 815.0 865.0 ] put",
1540 "Mcbbox0 Encoding com get [ 1100.0 0 -575.0 -635.0 515.0 655.0 ] put",
1541 "Mcbbox0 Encoding copyright get [ 920.0 0 -455.0 -45.0 455.0 855.0 ] put",
1542 "Mcbbox0 Encoding cut get [ 1100.0 0 -575.0 -905.0 515.0 915.0 ] put",
1543 "Mcbbox0 Encoding dblflat get [ 1170.0 0 -595.0 -405.0 565.0 1115.0 ] put",
1544 "Mcbbox0 Encoding dblsharp get [ 720.0 0 -355.0 -345.0 355.0 355.0 ] put",
1545 "Mcbbox0 Encoding dblwhole get [ 1090.0 0 -535.0 -605.0 545.0 615.0 ] put",
1546 "Mcbbox0 Encoding diamond get [ 880.0 0 -435.0 -305.0 435.0 315.0 ] put",
1547 "Mcbbox0 Encoding dim get [ 540.0 0 -265.0 -5.0 265.0 905.0 ] put",
1548 "Mcbbox0 Encoding dn128n get [ 840.0 0 -415.0 -3545.0 415.0 345.0 ] put",
1549 "Mcbbox0 Encoding dn16n get [ 840.0 0 -415.0 -2105.0 415.0 345.0 ] put",
1550 "Mcbbox0 Encoding dn256n get [ 840.0 0 -415.0 -3965.0 415.0 345.0 ] put",
1551 "Mcbbox0 Encoding dn2n get [ 880.0 0 -435.0 -2105.0 435.0 355.0 ] put",
1552 "Mcbbox0 Encoding dn32n get [ 840.0 0 -415.0 -2585.0 415.0 345.0 ] put",
1553 "Mcbbox0 Encoding dn4n get [ 840.0 0 -415.0 -2105.0 415.0 345.0 ] put",
1554 "Mcbbox0 Encoding dn64n get [ 840.0 0 -415.0 -3065.0 415.0 345.0 ] put",
1555 "Mcbbox0 Encoding dn8n get [ 840.0 0 -415.0 -2105.0 415.0 345.0 ] put",
1556 "Mcbbox0 Encoding dnbow get [ 810.0 0 -395.0 -5.0 405.0 915.0 ] put",
1557 "Mcbbox0 Encoding dnflag get [ 640.0 0 -335.0 -1705.0 295.0 15.0 ] put",
1558 "Mcbbox0 Encoding dot get [ 280.0 0 -135.0 -125.0 135.0 135.0 ] put",
1559 "Mcbbox0 Encoding dwhdiamond get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1560 "Mcbbox0 Encoding dwhrest get [ 340.0 0 -165.0 -5.0 165.0 615.0 ] put",
1561 "Mcbbox0 Encoding endped get [ 480.0 0 -215.0 -45.0 255.0 615.0 ] put",
1562 "Mcbbox0 Encoding fclef get [ 1840.0 0 -1015.0 -1705.0 815.0 655.0 ] put",
1563 "Mcbbox0 Encoding ferm get [ 1640.0 0 -815.0 -5.0 815.0 1015.0 ] put",
1564 "Mcbbox0 Encoding filldiamond get [ 880.0 0 -435.0 -305.0 435.0 315.0 ] put",
1565 "Mcbbox0 Encoding flat get [ 580.0 0 -295.0 -405.0 275.0 1115.0 ] put",
1566 "Mcbbox0 Encoding gclef get [ 1790.0 0 -915.0 -1605.0 865.0 3015.0 ] put",
1567 "Mcbbox0 Encoding halfdim get [ 760.0 0 -375.0 -5.0 375.0 1015.0 ] put",
1568 "Mcbbox0 Encoding invmor get [ 1320.0 0 -655.0 -455.0 655.0 465.0 ] put",
1569 "Mcbbox0 Encoding invturn get [ 1300.0 0 -645.0 -335.0 645.0 345.0 ] put",
1570 "Mcbbox0 Encoding leg get [ 840.0 0 -415.0 -55.0 415.0 65.0 ] put",
1571 "Mcbbox0 Encoding ll1rest get [ 840.0 0 -415.0 -5.0 415.0 625.0 ] put",
1572 "Mcbbox0 Encoding ll2rest get [ 840.0 0 -415.0 -15.0 415.0 315.0 ] put",
1573 "Mcbbox0 Encoding measrpt get [ 1300.0 0 -645.0 -675.0 645.0 685.0 ] put",
1574 "Mcbbox0 Encoding mor get [ 1320.0 0 -655.0 -285.0 655.0 295.0 ] put",
1575 "Mcbbox0 Encoding nat get [ 520.0 0 -255.0 -855.0 255.0 865.0 ] put",
1576 "Mcbbox0 Encoding pedal get [ 1040.0 0 -515.0 -45.0 515.0 675.0 ] put",
1577 "Mcbbox0 Encoding qwhrest get [ 340.0 0 -165.0 -605.0 165.0 615.0 ] put",
1578 "Mcbbox0 Encoding rr get [ 940.0 0 -465.0 -25.0 465.0 1035.0 ] put",
1579 "Mcbbox0 Encoding sharp get [ 700.0 0 -345.0 -935.0 345.0 945.0 ] put",
1580 "Mcbbox0 Encoding sign get [ 1340.0 0 -665.0 -825.0 665.0 835.0 ] put",
1581 "Mcbbox0 Encoding tr get [ 1440.0 0 -715.0 -5.0 715.0 1015.0 ] put",
1582 "Mcbbox0 Encoding triangle get [ 800.0 0 -395.0 -45.0 395.0 785.0 ] put",
1583 "Mcbbox0 Encoding turn get [ 1300.0 0 -645.0 -325.0 645.0 345.0 ] put",
1584 "Mcbbox0 Encoding uferm get [ 1640.0 0 -815.0 -5.0 815.0 1015.0 ] put",
1585 "Mcbbox0 Encoding up128n get [ 1390.0 0 -745.0 -335.0 635.0 3555.0 ] put",
1586 "Mcbbox0 Encoding up16n get [ 1390.0 0 -745.0 -335.0 635.0 2115.0 ] put",
1587 "Mcbbox0 Encoding up256n get [ 1390.0 0 -745.0 -335.0 635.0 3975.0 ] put",
1588 "Mcbbox0 Encoding up2n get [ 880.0 0 -435.0 -345.0 435.0 2115.0 ] put",
1589 "Mcbbox0 Encoding up32n get [ 1390.0 0 -745.0 -335.0 635.0 2595.0 ] put",
1590 "Mcbbox0 Encoding up4n get [ 850.0 0 -415.0 -335.0 425.0 2115.0 ] put",
1591 "Mcbbox0 Encoding up64n get [ 1390.0 0 -745.0 -335.0 635.0 3075.0 ] put",
1592 "Mcbbox0 Encoding up8n get [ 1390.0 0 -745.0 -335.0 635.0 2115.0 ] put",
1593 "Mcbbox0 Encoding upbow get [ 720.0 0 -355.0 -115.0 355.0 925.0 ] put",
1594 "Mcbbox0 Encoding upflag get [ 640.0 0 -335.0 -5.0 295.0 1715.0 ] put",
1595 "Mcbbox0 Encoding uwedge get [ 340.0 0 -165.0 -5.0 165.0 505.0 ] put",
1596 "Mcbbox0 Encoding wedge get [ 340.0 0 -165.0 5.0 165.0 515.0 ] put",
1597 "Mcbbox0 Encoding xnote get [ 880.0 0 -435.0 -365.0 435.0 375.0 ] put",
1602 "/Mfont0 mfont0 definefont",
1605 "% find size of Encoding and make a dictionary",
1606 "% that size for bounding box information",
1608 "/dictsize Encoding length def",
1609 "mfont1 /Mcbbox1 dictsize dict put",
1611 "% temporarily redefine printmchar1 to get code",
1613 "/printmchar1 { {} forall } def",
1615 "Mcbbox1 Encoding blankhead get [ 880.0 0 -435.0 -275.0 435.0 285.0 ] put",
1616 "Mcbbox1 Encoding dwhisostriangle get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1617 "Mcbbox1 Encoding dwhpiewedge get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1618 "Mcbbox1 Encoding dwhrectangle get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1619 "Mcbbox1 Encoding dwhrighttriangle get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1620 "Mcbbox1 Encoding dwhsemicircle get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1621 "Mcbbox1 Encoding dwhslashhead get [ 1410.0 0 -695.0 -725.0 705.0 735.0 ] put",
1622 "Mcbbox1 Encoding fillisostriangle get [ 880.0 0 -435.0 -275.0 435.0 315.0 ] put",
1623 "Mcbbox1 Encoding fillpiewedge get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1624 "Mcbbox1 Encoding fillrectangle get [ 880.0 0 -435.0 -275.0 435.0 285.0 ] put",
1625 "Mcbbox1 Encoding fillrighttriangle get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1626 "Mcbbox1 Encoding fillsemicircle get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1627 "Mcbbox1 Encoding fillslashhead get [ 1300.0 0 -645.0 -675.0 645.0 685.0 ] put",
1628 "Mcbbox1 Encoding isostriangle get [ 880.0 0 -435.0 -275.0 435.0 315.0 ] put",
1629 "Mcbbox1 Encoding piewedge get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1630 "Mcbbox1 Encoding rectangle get [ 880.0 0 -435.0 -275.0 435.0 285.0 ] put",
1631 "Mcbbox1 Encoding righttriangle get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1632 "Mcbbox1 Encoding semicircle get [ 880.0 0 -435.0 -305.0 435.0 285.0 ] put",
1633 "Mcbbox1 Encoding slashhead get [ 1380.0 0 -685.0 -725.0 685.0 735.0 ] put",
1634 "Mcbbox1 Encoding udwhrighttriangle get [ 950.0 0 -465.0 -605.0 475.0 615.0 ] put",
1635 "Mcbbox1 Encoding ufillrighttriangle get [ 880.0 0 -435.0 -275.0 435.0 315.0 ] put",
1636 "Mcbbox1 Encoding urighttriangle get [ 880.0 0 -435.0 -275.0 435.0 315.0 ] put",
1641 "/Mfont1 mfont1 definefont",
1643 "/makeExtEncoding {",
1644 " /extendedencoding 256 array def",
1645 " StandardEncoding extendedencoding copy",
1646 " extendedencoding 32 /exclamdown put",
1647 " extendedencoding 33 /cent put",
1648 " extendedencoding 34 /sterling put",
1649 " extendedencoding 35 /yen put",
1650 " extendedencoding 36 /quotedblleft put",
1651 " extendedencoding 37 /guillemotleft put",
1652 " extendedencoding 38 /guillemotright put",
1653 " extendedencoding 39 /guilsinglleft put",
1654 " extendedencoding 40 /guilsinglright put",
1655 " extendedencoding 41 /dagger put",
1656 " extendedencoding 42 /daggerdbl put",
1657 " extendedencoding 43 /bullet put",
1658 " extendedencoding 44 /quotedblbase put",
1659 " extendedencoding 45 /quotedblright put",
1660 " extendedencoding 46 /questiondown put",
1661 " extendedencoding 47 /grave put",
1662 " extendedencoding 48 /acute put",
1663 " extendedencoding 49 /macron put",
1664 " extendedencoding 50 /breve put",
1665 " extendedencoding 51 /dotaccent put",
1666 " extendedencoding 52 /dieresis put",
1667 " extendedencoding 53 /ring put",
1668 " extendedencoding 54 /cedilla put",
1669 " extendedencoding 55 /hungarumlaut put",
1670 " extendedencoding 56 /ogonek put",
1671 " extendedencoding 57 /caron put",
1672 " extendedencoding 58 /emdash put",
1673 " extendedencoding 59 /AE put",
1674 " extendedencoding 60 /ae put",
1675 " extendedencoding 61 /ordfeminine put",
1676 " extendedencoding 62 /ordmasculine put",
1677 " extendedencoding 63 /Lslash put",
1678 " extendedencoding 64 /lslash put",
1679 " extendedencoding 65 /Oslash put",
1680 " extendedencoding 66 /oslash put",
1681 " extendedencoding 67 /OE put",
1682 " extendedencoding 68 /oe put",
1683 " extendedencoding 69 /dotlessi put",
1684 " extendedencoding 70 /germandbls put",
1685 " extendedencoding 71 /Aacute put",
1686 " extendedencoding 72 /aacute put",
1687 " extendedencoding 73 /Acircumflex put",
1688 " extendedencoding 74 /acircumflex put",
1689 " extendedencoding 75 /Adieresis put",
1690 " extendedencoding 76 /adieresis put",
1691 " extendedencoding 77 /Agrave put",
1692 " extendedencoding 78 /agrave put",
1693 " extendedencoding 79 /Aring put",
1694 " extendedencoding 80 /aring put",
1695 " extendedencoding 81 /Atilde put",
1696 " extendedencoding 82 /atilde put",
1697 " extendedencoding 83 /Ccedilla put",
1698 " extendedencoding 84 /ccedilla put",
1699 " extendedencoding 85 /Eacute put",
1700 " extendedencoding 86 /eacute put",
1701 " extendedencoding 87 /Ecircumflex put",
1702 " extendedencoding 88 /ecircumflex put",
1703 " extendedencoding 89 /Edieresis put",
1704 " extendedencoding 90 /edieresis put",
1705 " extendedencoding 91 /Egrave put",
1706 " extendedencoding 92 /egrave put",
1707 " extendedencoding 93 /Iacute put",
1708 " extendedencoding 94 /iacute put",
1709 " extendedencoding 95 /Icircumflex put",
1710 " extendedencoding 96 /icircumflex put",
1711 " extendedencoding 97 /Idieresis put",
1712 " extendedencoding 98 /idieresis put",
1713 " extendedencoding 99 /Igrave put",
1714 " extendedencoding 100 /igrave put",
1715 " extendedencoding 101 /Ntilde put",
1716 " extendedencoding 102 /ntilde put",
1717 " extendedencoding 103 /Oacute put",
1718 " extendedencoding 104 /oacute put",
1719 " extendedencoding 105 /Ocircumflex put",
1720 " extendedencoding 106 /ocircumflex put",
1721 " extendedencoding 107 /Odieresis put",
1722 " extendedencoding 108 /odieresis put",
1723 " extendedencoding 109 /Ograve put",
1724 " extendedencoding 110 /ograve put",
1725 " extendedencoding 111 /Otilde put",
1726 " extendedencoding 112 /otilde put",
1727 " extendedencoding 113 /Scaron put",
1728 " extendedencoding 114 /scaron put",
1729 " extendedencoding 115 /Uacute put",
1730 " extendedencoding 116 /uacute put",
1731 " extendedencoding 117 /Ucircumflex put",
1732 " extendedencoding 118 /ucircumflex put",
1733 " extendedencoding 119 /Udieresis put",
1734 " extendedencoding 120 /udieresis put",
1735 " extendedencoding 121 /Ugrave put",
1736 " extendedencoding 122 /ugrave put",
1737 " extendedencoding 123 /Ydieresis put",
1738 " extendedencoding 124 /ydieresis put",
1739 " extendedencoding 125 /Zcaron put",
1740 " extendedencoding 126 /zcaron put",
1741 " extendedencoding 127 /space put",
1744 "/makeExtendedFont {",
1746 " dup length dict /newdict exch def",
1747 " { 1 index /FID ne",
1748 " { newdict 3 1 roll put }",
1752 " newdict /Encoding extendedencoding put",
1753 " newdict /UniqueID newdict /UniqueID get 1 add put",
1754 " newdict definefont pop",
1759 /* generate the PostScript prolog */
1766 for (line = 0; prolog_text[line] != (char *) 0; line++) {
1767 (void) printf("%s\n", prolog_text[line]);