%!PS-Adobe-2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This Postscript is Copyright (c) 2003, Peter J Billam % % c/o P J B Computing, GPO Box 669, Hobart TAS 7001, Australia % % % % Permission is granted to any individual or institution to use, copy, % % modify or redistribute this software, so long as it is not resold for % % profit, and provided this notice is retained. Neither Peter Billam % % nor P J B Computing make any representations about the suitability % % of this software for any purpose. It is provided "as is", without any % % express or implied warranty. http://www.pjb.com.au % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Original of this is http://www.pjb.com.au/comp/free/sample2.ps.txt ... % See also http://www.pjb.com.au/comp/line_drawing.html ... %%EndComments %%BeginProlog % edit this line to suit where line_drawing.ps is installed (/home/pjb/ps/lib/line_drawing.ps) run %%EndProlog %%Page: 1 1 %%BeginPageSetup %%EndPageSetup % measurements taken from A5 sketchbook 20000109-20000223 /hairl_t { 51 mm 210 mm } def /forehead { 117 mm 210 mm } def /eyebrowl_l { 51 mm 188 mm } def /eyebrowl_r { 74 mm 183 mm } def /eyebrowr_l { 96 mm 180.5 mm } def /bridge { 92.0 mm 171.5 mm } def /specsl_tr bridge -7.2 mm -1.5 mm pointadd pointdef /specsl_tl { 43.5 mm 168.2 mm } def /eyel_l { 42.5 mm 161.2 mm } def /eyel_r { 71 mm 164 mm } def /pupil_l eyel_l 0.7 eyel_r 0.3 interpolate2 0 2.1 mm pointadd pointdef /hairl_b { 0 mm 144 mm } def /specsl_bl { 43.5 mm 143 mm } def /cheekbone_specs { 117 mm 142 mm } def /cheekbone_specs_b cheekbone_specs 1.3 mm -1.0 mm pointadd pointdef /nostrill { 79.0 mm 119.6 mm } def /nostrilr { 91.3 mm 117.5 mm } def /nosel_b nostrill -2 mm -2.5 mm pointadd pointdef /mouthl { 66 mm 95.7 mm } def /mouthr { 102.3 mm 95.1 mm } def /neckback { 0 mm 80 mm } def /underchin { 86.2 mm 64.5 mm } def /lapel_l { 1 mm 40.5 mm } def /botthroat { 81 mm 20 mm } def /lapel_b { 64 mm 3.5 mm } def /shirt1_b { 102.5 mm 0 mm } def /shirt2_b { 98 mm 0 mm } def /shirt3_b { 94.3 mm 0 mm } def /shirt4_b { 83 mm 0 mm } def % curves % profile /forehead2cheekbone { 18 -24 3 40 /eyebrowr_tr 3.5 50 /eyebrowr_br 2.1 50 /eyebrow_specs 12 35 /eyefoldrr_r 1 -500 6 -15 /eyebot_r 1 -350 6 95 17 15 } def /bridge2nostril { 9.5 -27 /noseXspec_t 14 -14 /noseXspec_b 16.5 0.01 9 35 18 110 } def /cheekbone2chin { 10 15 9 -15 10 18 1 -550 22 30 1 -500 8 80 2 -330 6 30 7 40 19 65 } def /chin2throat { 10 45 4 1 /shirt1 2 1 1 -420 10 25 4 -28 /shirt2 6 -33 4 9 /shirt3 6 9 } def /mouth_l2r { 12 5 12 39 1 -350 /mouthc 1 -350 4 30 4 190 4 25 } def /philtrum_br2bl { 4 180 } def /specsr_tl { % noseXspec_t to eyebrow_specs 8.2 60 /specsbridge_br 1 50 /specsbridge_tr 6.8 50 1.2 29 /eyefoldrr_l 17.8 29 6 40 } def /specsr_bl { 26 -35 } def % noseXspec_b to cheekbone /specsr_bl2a { 27 -37 } def % noseXspec_b to cheekbone, lower path /specsr_bl2b { 13 -55 } def % cheekbone back to specsr_x, lower path /specsr_r { 15 70 30 40 /specsr_x 15 55 } def % eyebrow_specs to cheekbone /specsl_tl2tr { 4 60 10 30 /specslXeyefold1 6 30 /specslXeyefold2 10 35 8 20 8 150 } def /specsl_tr2bl { 25 30 4 50 /specsl_br 10 50 20 30 8 50 } def /specsl_bl2tl { 9 30 8 50 9 30 } def /specsl_br2bl { 6 35 20 30 8 35 } def /nostril_l2r { 7 400 12 50 7 240 } def /nosel_b2t { 2 50 6 210 5 170 4 25 } def /eye_lt { 2 20 /eyel_lcorner 9 20 10 95 11 20 } def /eye_lb { 1 200 2 25 3 -140 10 60 4 30 4 80 4 55 } def /hairl_t2b { 45 20 /hairlXspecs 15 -55 18 55 } def /botthroat2neckback { 18 9 3 90 9 -30 10 25 35 -5 3 60 45 -2 } def /lapel_b2l { 3 400 5 -80 8 1 3 -50 15 25 6 -1 8 50 10 -25 10 -70 } def % paths constructed round the frame and the major areas /framepath { botleft moveto topleft lineto topright lineto botright lineto closepath } def /shirtpath { } def /hairpath { } def /facepath { forehead moveto [ forehead2cheekbone ] cheekbone_specs longcurveto cheekbone_specs_b lineto [ cheekbone2chin ] underchin longcurveto [ chin2throat ] botthroat longcurveto [ botthroat2neckback ] neckback longcurveto hairl_b lineto [ hairl_t2b ] reversecurve hairl_t longcurveto closepath } def /nostrilpath { nostrill moveto [ nostril_l2r ] nostrilr longcurveto closepath } def % the line /thick1 0.25 mm def /thick2 0.35 mm def /thick3 0.5 mm def /thick4 0.7 mm def /thick5 0.9 mm def /thick6 1.2 mm def thick2 setlinewidth % the page /topleft { 0 mm 210 mm } def /topright { 140.5 mm 210 mm } def /botleft { 0 mm 0 mm } def /botright { 140.5 mm 0 mm } def % 144.5 mm 56 mm translate -1 1.17 scale % 4 mm 56 mm translate 1 1.17 div dup scale 10 mm 6 mm translate 1.34 dup scale % full A4 % eyebrowl eyebrowl_l moveto [ 25 50 ] eyebrowl_r longcurveto gray5 gray0 2 mm 7 mm fuzzygraystroke % hair on left gsave newpath hairl_t moveto [ hairl_t2b ] hairl_b longcurveto topleft lineto closepath gray3 setgray fill grestore % profile newpath forehead moveto [ forehead2cheekbone ] cheekbone_specs longcurveto gsave newpath % hair on right forehead moveto [ 18 -24 3 40 3.5 55 ] eyebrowr_br longcurveto [ 10 -30 7 50 4 -40 ] forehead 8 mm 0 pointadd longcurveto closepath gray3 setgray fill grestore gsave newpath % eyebrow on right eyebrowr_l moveto [ 10 30 14 10 6 60 ] eyebrowr_tr longcurveto [ 3 100 ] eyebrowr_br longcurveto [ 7 100 15 -35 7 30 ] eyebrowr_l longcurveto closepath gray5 gray0 2 mm fuzzygrayfill grestore cheekbone_specs_b moveto [ cheekbone2chin ] underchin longcurveto [ chin2throat ] botthroat longcurveto [ botthroat2neckback ] neckback longcurveto gsave % shading under chin newpath facepath clip newpath underchin 10 mm 0 pointadd moveto [ 15 5 /underchin_l 15 5 15 25 40 5 10 55 30 3 ] neckback 0.2 hairl_b 0.8 interpolate2 longcurveto botthroat -5 mm 0 pointadd moveto [ chin2throat ] reversecurve underchin_l longcurveto gray1 gray0 6 mm 12 mm fuzzygraystroke grestore stroke gsave underchin moveto -3 mm 0 mm rlineto thick1 setlinewidth stroke grestore % mouth newpath mouthl moveto [ mouth_l2r ] mouthr longcurveto gsave % top lip /philtrum_bl mouthc -1.1 mm 5.9 mm pointadd pointdef /philtrum_br mouthc 3.2 mm 5.3 mm pointadd pointdef gsave newpath % philtrum philtrum_br moveto [ philtrum_br2bl ] philtrum_bl longcurveto [ 15 35 ] nostrilr longcurveto 3 mm 0 rlineto [ 15 -35 ] philtrum_br longcurveto closepath gray1 setgray fill grestore [ 9 -70 ] philtrum_br longcurveto [ philtrum_br2bl ] philtrum_bl longcurveto [ 8 20 18 -20 ] mouthl longcurveto closepath gray4 setgray fill grestore stroke % shading under lower lip newpath underchin 0.19 mouthl 0.06 mouthr 0.75 interpolate3 moveto [ 15 50 ] underchin 0.19 mouthl 0.60 mouthr 0.21 interpolate3 longcurveto gray2 gray0 2 mm 5 mm fuzzygraystroke % smile crease at left newpath nosel_b 0.31 mouthl 0.45 hairl_b 0.24 interpolate3 moveto [ 15 -50 ] mouthl 0.72 neckback 0.28 interpolate2 longcurveto gray1 gray0 1 mm 3 mm fuzzygraystroke % smile crease at right newpath nostrilr 10 mm 0 pointadd moveto 315 [ 15 50 ] longcurve gray1 gray0 1 mm 3 mm fuzzygraystroke % shirt newpath shirt4_b moveto [ 9 -1 1 1500 8 -90 5 -250 ] botthroat longcurveto [ 14 -30 6 40 4 -50 2 500 ] lapel_b longcurveto [ lapel_b2l ] lapel_l longcurveto gsave % shading under left lapel botleft lineto closepath clip newpath shirt4_b moveto 120 [ 25 40 ] longcurve gray3 gray0 4 mm 12 mm fuzzygraystroke newpath lapel_b moveto [ lapel_b2l ] lapel_l longcurveto gray3 gray0 2 mm 7 mm fuzzygraystroke grestore stroke shirt2 moveto [ 6 -20 9 20 /shirt1a 5 -20 3 90 ] shirt2 23 mm -1.0 mm pointadd longcurveto [ 2 200 4 2 2 100 5 -1 2 -150 7 2 /shirt1b 8 2 ] shirt2_b longcurveto stroke shirt1 moveto [ 1 150 1 -150 13 -10 4 200 3 10 ] shirt1a longcurveto stroke shirt1b moveto [ 4 -20 2 400 6 10 ] shirt1_b longcurveto stroke shirt3 moveto [ 10 -55 15 65 ] shirt3_b longcurveto gsave shirt4_b lineto closepath clip newpath shirt3_b moveto 120 [ 25 40 ] longcurve gray3 gray0 4 mm 12 mm fuzzygraystroke grestore stroke % nose newpath bridge moveto [ bridge2nostril ] nostrilr longcurveto gsave % shading under nose [ nostril_l2r ] reversecurve nostrill longcurveto [4 500] nosel_b longcurveto 190 [ nosel_b2t ] longcurve closepath clip newpath nosel_b moveto [ 18 50 ] nostrilr 5 mm 0 pointadd longcurveto gray2 gray0 2 mm 15 mm fuzzygraystroke grestore gray7 setgray stroke newpath nostrill moveto [ nostril_l2r ] nostrilr longcurveto gsave % shadow inside nostril closepath clip newpath nostrill 0 3 mm pointadd moveto nostrilr 0 5 mm pointadd lineto gray4 gray0 2 mm 9 mm fuzzygraystroke grestore gray6 setgray stroke gray9 setgray % specs on right newpath noseXspec_t moveto [ specsr_tl ] eyebrow_specs longcurveto stroke newpath noseXspec_b moveto [ specsr_bl ] cheekbone_specs longcurveto stroke newpath eyebrow_specs moveto [ specsr_r ] cheekbone_specs longcurveto stroke newpath noseXspec_b moveto [ specsr_bl2a ] cheekbone_specs_b longcurveto [ specsr_bl2b ] specsr_x longcurveto stroke % eye on right (left eye) /eyer_tr eyefoldrr_r -1.3 mm -2.0 mm pointadd pointdef /eyer_tl noseXspec_t 4.0 mm 7.0 mm pointadd pointdef /eyer_bl noseXspec_t 2.7 mm 2.4 mm pointadd pointdef /pupil_r noseXspec_t 7.9 mm 5.7 mm pointadd pointdef /eyer_tl2tr { 10 50 15 40 } def /eyer_tr2bl { 2 1 3 360 10 34 6 55 4 30 } def /eyefoldrr_l2r { 19 50 } def eyer_tl moveto [ eyer_tl2tr ] eyer_tr longcurveto currentpoint gsave [ eyer_tr2bl ] eyer_bl longcurveto closepath clip newpath pupil_r 5.2 mm 0 360 arc gray7 setgray fill pupil_r 4.7 mm 0 360 arc gray5 setgray fill pupil_r 1.3 mm 0 360 arc gray9 setgray fill pupil_r 2.6 mm 2 mm pointadd 1.0 mm 0 360 arc gray0 setgray fill grestore thick4 setlinewidth stroke moveto [ eyer_tr2bl ] eyer_bl longcurveto thick2 setlinewidth stroke eyefoldrr_l moveto [ eyefoldrr_l2r ] eyefoldrr_r longcurveto stroke % eye on left (right eye) eyel_l moveto [ eye_lt ] eyel_r longcurveto currentpoint gsave eyel_l moveto [ eye_lt ] eyel_r longcurveto [ eye_lb ] eyel_lcorner longcurveto closepath clip newpath pupil_l 5.2 mm 0 360 arc gray7 setgray fill pupil_l 4.7 mm 0 360 arc gray5 setgray fill pupil_l 1.4 mm 0 360 arc gray9 setgray fill pupil_l 2.6 mm 2 mm pointadd 1.0 mm 0 360 arc gray0 setgray fill grestore thick4 setlinewidth stroke moveto [ eye_lb ] eyel_lcorner longcurveto thick2 setlinewidth stroke eyel_r 0 -3 mm pointadd moveto 240 [ 13 20 ] longcurve gray2 gray0 1 mm 3 mm fuzzygraystroke % specs on left newpath specsl_tl moveto [ specsl_tl2tr ] specsl_tr longcurveto [ specsl_tr2bl ] specsl_bl longcurveto [ specsl_bl2tl ] specsl_tl longcurveto specsl_br moveto [ specsl_br2bl ] specsl_bl longcurveto gsave newpath % up left side of nose nosel_b moveto 190 [ nosel_b2t ] longcurve gray5 setgray stroke grestore stroke newpath specsl_tl -1 mm 3 mm pointadd moveto [ 4 70 4 20 6 110 4 2 ] specslXeyefold2 longcurveto stroke specslXeyefold1 moveto [18 70] eyel_r -.5 mm 5.4 mm pointadd longcurveto stroke newpath specsl_tl moveto hairlXspecs 0 5 mm pointadd lineto stroke % remainder of specs bridge moveto specsbridge_br lineto stroke bridge 0 1 mm pointadd moveto specsbridge_tr lineto stroke bridge moveto specsl_tr lineto stroke bridge 0 1 mm pointadd moveto specsl_tr 0 1 mm pointadd lineto stroke % signature botleft moveto /Times-Italic findfont 10 scalefont setfont (Peter Billam, 2000) show (pjb.com.au) dup stringwidth pop botright 3 1 roll exch sub exch moveto show showpage %%EOF