diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/simpsons/homer.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/simpsons/homer.mf | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/simpsons/homer.mf b/Master/texmf-dist/fonts/source/public/simpsons/homer.mf new file mode 100644 index 00000000000..31557a6a796 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/simpsons/homer.mf @@ -0,0 +1,130 @@ +% homer.mf by Raymond Chen (rjc@math.princeton.edu) + +% Homer Simpson. + +pictureof(Homer, 24u#, 24u#, 0); + pickup thinpen; + + localpath eye_left, eye_right; + eye_right = superellipse( (14.2u, 14.5u), (12.2u, 16.3u), + (10u, 14u), (12u, 12u), .7); + draw eye_right; + + localpath nose; % extends down and around to chin + nose = preclip((12u, 13u).. + (16u, 13.2u).. + (17.7u, 12.5u){down} .. + (16u, 11.5u).. + (10u, 7u){down}.. + (12.5u, 4u){right}..tension 1 and 6.. + (14.7u, 6.5u).. + (15.7u, 6.8u).. + {up}(15.7u, 8u), eye_right); + localpath dimple; + z1d = (11.3u, 8.1u); + z2d = (10.9u, 6.8u); + dimple = z1d{(z2d-z1d) rotated dimple_depth}.. + {(z2d-z1d) rotated -dimple_depth}z2d; + draw dimple; + + localpath mouth; + mouth = prepostclip( + (16u, 12u).. tension infinity and 3.. + (17.7u, 8u){down} .. tension 2 and 1 .. + (15.7u, 7.2u){left}.. + (12.2u, 7.7u){left}.. + (0u, 7u), nose, dimple); + draw mouth; + + nose := postclip(nose, mouth); + draw nose; + + eye_left = prepostclip( + (15u, 12.6u){right}.. + (17.2u, 14.5u){up}.. + (15.5u, 16.4u){left}.. + {down}(13.1u, 14.2u), nose, eye_right); + draw eye_left; + + localpath scalp; + scalp = preclip( + (16u, 15.3u) .. tension 1.5 .. + (12u, 20u) .. + (9.5u, 20.8u){left}.. tension 1 .. + (4u, 16.4u){down} .. tension 1 .. + (7.4u, 7u) .. + (5.4u, 0u), eye_left); + + % scalp and collar interact + localpath collar; + collar = (11.4u, 2.3u) .. tension infinity and 1 .. + (7u, 4.2u) .. (6.7u, 4.7u) .. + (9u, 6u) .. tension 1 and infinity .. (15.2u, 2.5u); + z0c = point 0 of collar; + draw postclip(scalp, collar); + draw postclip(collar, scalp); + + % the rest of the collar is also tricky + numeric t; + t = directiontime dir (90-starch) of collar; + z1c = point t of collar; + x2c = 5u; z1c - z2c = whatever * dir (90-starch); + draw z1c -- z2c & reverse subpath (0,t) of collar shifted (z2c-z1c) -- z0c; + y.bottom = ypart (z0c + (z2c-z1c)); + numeric t; + + % while I'm here, I may as well finish the right collar + draw postclip (z0c .. (z0c + 100u * dir -machismo), + (0u,y.bottom)..(100u,y.bottom)); + + localpath ear; + ear = (7.5u, 11.5u) .. % (6.8u, 11.6u) .. + (6u, 11.3u) .. + (5.7u, 10u) .. (6.6u, 8.5u) .. (7.5u, 9u); + erase fill ear .. cycle; + draw ear; + + drawtau( (6.2u, 10.5u), (7.4u, 11u), (6.8u, 9.3u), (6.8u, 11.1u) ); + + % tufts on top + draw postclip ( + (5.2u, 17.7u){dir 100} ... (6u, 22u) ... {dir -60}(9.3u, 19.5u), scalp); + localpath tuft; + tuft = (6.2u, 18.7u){dir 100} ... (8u, 22.3u) ... {dir -70}(10.8u, 19.5u); + draw subpath (0,1) of tuft & + postclip(subpath (1,2) of tuft, scalp); + numeric tuft; + + % the tuft by the ear + draw (4.5u, 11.5u) --- (4.6u, 14u) --- (6.1u, 12.2u) + --- (6.4u, 14.4u) --- (7.7u, 12.5u); + + % The interaction between the left collar and the front of the neck + % is also messy. + + % shift part of left collar + localpath lcollar; + z2cr = point infinity of collar; + y1cr = y.bottom; z2cr - z1cr = whatever * dir machismo; + lcollar = z2cr .. z1cr; + draw lcollar; + + % now the front of the neck + localpath neck; + neck = prepostclip( + (13u, 7u){down} .. (14.7u, 0u), nose, lcollar); + draw neck; + + % now the top of the left collar + draw preclip(collar, neck); + + % and the other side of the left collar. + z2cr - z3cr = 1.5u * dir machismo; + z4cr - z3cr = whatever * dir (270+starch+30); + z4cr - z2cr = whatever * dir (270+starch); + draw z2cr -- z4cr -- z3cr; + labels(1cr, 2cr, 3cr, 4cr); + + eyepos(Homer, 11.5u#, 14u#, 15.2u#, 14.5u#); + +endpicture; |