Автор: Knuth D.E.  

Теги: programming  

Год: 1980

Текст
                    Computer Science Department January 1980
Report No. STAN-CS-80-780
THE COMPUTER MODERN FAMILY OF TYPEFACES
by
Donald E. Knuth
Research sponsored by
National Science Foundation
Off ice of Naval Research
IBM Corporation
Xerox Corporation
COMPUTER SCIENCE DEPARTMENT
Stanford University


Computer Science Department January, 1980 Report No. STAN-CS-80-780 (first printing) THE COMPUTER MODERN FAMILY OF TYPEFACES bv Donald E. Knuth Tho preparation of (his report was supported in pari by (he National Science Foundation, the Office of Naval Research, and the lUM Corporation. The author also wishes to (hank the Xerox Corporation for providing facilities with which this report was printed, and for providing computer time while the Stanford computers were being moved to a new building. 1
PREFACE This report gives machine-independent definitions of all the styles of type planned for use in future editions of The Art of Computer Programming. Its main purpose is to provide a detailed example of a complete family of font definitions using metrfont, so that people who want new symbols for their own books and papers will understand how to incorporate them easily. The fonts are intended to have the same spirit as those used in earlier editions of The Art of Computer Program ruing, but each character has been redesigned and defined in the M etrfont idiom. It is hoped that some readers will be inspired to make similar defintions of other important families of fonts. The bulk of this report consists of about 400 short ME1 RFONT programs for the various symbols needed, and as such it is pretty boring, hut there arc some nice illustrations. It seems appropriate to give the name "Computer Modern" to this family of fonts, because of their associations with computers and because of the fact that the analogous Monotype Ion ts are called "Modern 8A" . Monotype Modern 8A served for many years as a dc facto standard for high quality typesetting of mathematics, since these fonts had the most complete collection of characters and special symbols in all the necessary sizes. But the typesetting of technical material has low priority in the printing industry; so the Modern fonts had still not been adapted to photo-optical or photo-digital typesetting equipment by 1977, when Volume 2 of The Art of Computer Programming (second edition) was due to appear. Meanwhile the hot-lead Monotype equipment was rapidly becoming extinct and prohibitively expensive, so there was no good way to print the second edition in the style of the first. 2
A preliminary version of Computer Modern was designed by the author in the fall of 1977 and the spring of 1978, using a prototype version of METRFONT. This prototype system included subroutines for drawing curves with pens and erasers, but it did not have METR- FONT's declarative language; all characters were drawn by means of subroutine calls written in SAIL code. During this time Robert, Filrnan suggested that it would be much better to hnvc a language that could be interpreted, so that simple changes to a font definition would not require recompiling a large program. During the summer of 1978, the author therefore used the experience gained while defining all the characters in proto-METRFONT to design a new language embodying the operations that had turned out to be necessary and desirable. METRFONT itself was programmed during the first part of 1979, and all of the Computer Modern character definitions were revised and rewritten in the new language during late 1979. The resulting programs appear in this report. The design of Computer Modern is nearly complete, but some improvements will doubtless be made. In fact,, one of the goals of this report is to circulate the preliminary definitions in order to obtain critical comments before it is too late to make changes easily. The need to spread this information quickly explains the somewhat paradoxical fact that 1978 Computer Modern fonts have been used to typeset this report, even though it describes the 1979 Computer Modern characters. With luck, the H)78 version of Computer Modern fonts will disappear from the faces of the earth by the spring of 1980, when they will he replaced by thcfinal form of the designs appearing here. The author hopes to producea properly typeset book describing METRFONT and Computer Modern when a "steady state" is achieved. Since the publication of ' he METRFONT manual, i he language has changed in one respect (incorporated into the programs here): The height of Ipens and rpens is now specified independently by lpenht and rpcnlil statements. Formerly the hpcriht statement was used for all three heights, but this turned out to be an unnecessary restriction. Appendix E of the METRFONT manual was written when only two of the Computer Modern letters had been defined namely, the "A" and the "EV used as examples in that appendix. The introduction to the present report is essentially a revised version of Appendix E, incorporating several dozen improvements and correcting some embarrassing errors. —D.E.K., January 1980 3
CONTENTS Preface 2 Contents 4 Introduction 6 The file cmbase .... 14 Computer Modern Roman definitions 25 The file roman 25 The file romitu 27 The file roman 1 69 The file rornand 93 The file romans 105 The file romitp 109 The file romita 119 The file roml ig 129 The file romitl 133 The file romits 137 Computer Modern 'Italic definitions 147 The file italic 147 The file itall 149 The file itald 165 The file greek 1 175 The file italms 180 The file italig 193 Thefileitals 197 Computer Modern Symbol definitions 201 The file symbol 201 The file script 251 Computer Modern Math Extension definitions 271 The file mat hex 271 The file mathdl 271 The file mathop 295 The file mexext 313 4
( "omputor Modern Roman fonts The file cmrlO 325 The file cmr9 327 The file cmr8 . 329 The file cmr7 331 The file cmr6 . 333 The file cmr5 . 335 The file cmblO 337 The file cmb9 . 339 The file crnb8 341 The file cmsiO 343 The file cms9 345 The file cms8 347 The file cms7 349 The file cmtt 351 The file cmtt9 353 The file cmtt8 355 The file cmss8 357 The file cmsss8 359 The file cmssb 361 The file cmssl2 303 The file cmt 1 t 1 365 The file cmsciO 367 The file cmdunh 369 Thefile cmf i b 371 The file cmff 373 Computer Modern Italic fonts . 375 The file crnti 10 375 The file cmt 19 ... . 377 Thefile cmuiO 379 The file cm i 10 381 The file cm 19 383 The file cm 18 . 385 The file cm 17 387 The file cmi6 389 The file cm 15 . 391 Computer Modern Symbol fonts . 393 The file cmsyiO 393 'The file cmsy9 395 Thefile cmsy8 397 The file cmsy7 399 The file cmsy6 . . .' 401 Thefile cmsy5 .". . 403 Computer Modern Math Extension font .... 405 The file cmathx 405 Index to font codes 406 5
INTRODUCTION A complete font design is a complex system, so there arc several levels at which one might understand it and use it depending on how much of the "black box" is being opened. At the outermost level, all of the details can be left alone and we simply generate a particular font. For example, there is a file called "cmrlO mf", and when METRFONT is applied to that file it will produce the "Computer Modern Roman 10 point" font. Another file "cmsss8 mf" produces "Computer Modern Slanted Sans Serif 8 point," and so on. But if we actually look inro files like cmriO. mf andcmsss8. mf, we find that they are quite short; they merely set up the values of certain parameters and input the file "roman. mf", which specifics the actual METRFONT programs for individual letters. Thercfort: it is easy to make up a customized font for a particular application, simply by setting up new values of the parameters and Inputting roman mf ourselves. At a still deeper level, we can also look at the file roman mf, which provides 128 short programs for the individual character shapes (followed by ligature and kerning definitions). These short programs are fairly independent, and they aren't completely inscrutable; it isn't difficult to substitute a new routine or two for characters that we wish to modify, since the programs make use of some fairly flexible subroutines that appear in file cmbase . mf. At the deepest level, we could also fiddle with the subroutine definitions in cmbase. mf— and of course that would essentially amount to the creation of a new family of fonts. 6
In this report we shall study the Computer Modern fonts by working cjr way in from the outermost level, then going back out again. File cmrlO. mf looks !ike this: "Computer Modern Roman 10 point"; nh = W' OX — 1SP-" ne = &>.. nfi — Ztt- P*> = 1) po = ii; p« = 1; pa = .5{ph— pd); P w = &; pwi = Sg; pvvii = jg; piviii = jjj; pwiv = 32; pwv = $j; aspect -- 1.0; pu = $}; les = 1.075; tics = 1.7; SC = 0; Is = 0; •slant = 0; sqrthvo —sqrt 2; fixwidth — 0; halfd = 0; varg = 0; fowast = 0 ; ligs = 1. input cmbase; call font-begin; input roman; end. In other words, the file sets up a lot of parameters and then it does "input roman" to create the font. We can obtain a great variety of related fonts by setting these parameters in different ways, once we know what they mean; and here's what they mean: By convention, all of the parameters whose name begins with "p" are in units of printers' points. First come eight parameters covering important vertical dimensions: pit is the h-height, the distance from the baseline to the top of an "h". px is the x-height, the distance from the baseline to the top of an"x". pc is the e-height, the distance from the baseline to the bar of an "c". pd is the descender depth, the distance from the baseline to the bottom of a "p". pb is the border height; characters extend as much as pli-f- pb above the baseline and pd + pb below it. po is the amount of overshoot for optical adjustments at sharp corners; e.g., "A" is this much taller than "B". ps is the vertical distance al which serif bracketing is tangent Lo the stems. pa is the axis height, 1 he distance from the baseline to the point where mathematical symbols like " -f-" and "--■-" have vertical symmetry. Then there arc seven parameters affecting the pen sizes: pvv i s the hairline width, used in the thinnest parts o f letters pwi is the stern width, u.sed for the vertical strokes in an "h". pwii is the curve width, used in an "o" at its widest point. pwiii is the dot width, the diameter of the dot on an "i". pwiv is the upper-case stem width, used for the vertical strokes in an "H". pwv is the upper-case curve width, u&d in an "O" at its widest point. aspect is the ratio of a hairline pen's height to its width.
r 'ext conic five parameters concerning horizontal dimensions: pu is the unit width, 1/18 of an em les is the amount by which serifs of lower-case letters project from the stems, in units of pu. ues is the amount by which serifs of upper-case letters project from the stems, in units of pu. sc is the serif correction in units of pu; each letter specifies multiples of sc by which its width is to be decreased at the left and the right. As is the amount of letter spacing in units of pu; each lettci is made this many units wider than the design actually specifies. Finally we have miscellaneous parameters that control special effects: slant is the amount of additional increase in x per unit increase in y, usctl to slant letters either forwards or DaokwariK. sqrtlwo is used to control the ellipticity of the bowls of letters, as explained in Chapter8 of the METRFONT manual. halfd is nonzero if certain characters like "," are to descend only half as fai as lowercase letters do. varg is nonzero if the simple"g"shape is to replace the classical "g". lowast is nonzero if the asterisk is to be lowered so that it is centered on the axis. ligs is nonzero if the roman font is to have the character set that rV\fi expects for text fonts with ligatures. (Otherwise eighteen special symbols are substituted for the ligature-oriented characters.) FilecmsiO. mf ("ComputerModern Slanted LO point,") is exactly the same as file cmriO mf, except for its title and the fact that slant = 0.15. Similarly, the settings of parameters in file crnblOmf ("Computer Modern Bold 10 point") arc nearly identical to those of cmriO mf, except that the pens are bigger: Pw = !)(!; PW = $; pwii = $; pwiii = j$; pw'iv = -$; pwv = 5g; furthermore serifs arc shorter (les = .85,ucs = 1.5). Pile c m r 5 m f generates 5-point type, but it is not simply obtained by halving the parametersofcinr IO The eight verln \\\ dimensions p/i, px, , pa are exactly half as large as before, but the pen sizes and the horizontal dimensions get smaller at different rates *o*. •<>«, ,..,.<,. ti ;..,„:„ ,t .,.». « „, ,■:■,.,. The follow \ng sellings arc used: f)Wi = \lt pWii =i||; pwiv = lgf pwv --= 20; les = 0.84, ucs = 1.32. Two more examples should suffice to illustrate the variation of these parameters. The bold sans-serif font used in this sentence is called "Computer Modern Sans Serif 10 point Bold Extended" (cmssb). It uses the same vertical dimensions and miscellaneous Pvv - jb - pwiii ^ *{}, 8
settings as cmrlO, and gets its other characteristics from the following parameter values: p w = pwi = pwn = pwiii = %', pwiv =:jm'v = jjj; aspect = ^; Pu — iiol 'CtS = uc,s == ®» sc ~ Til & " 0. To get the typewriter font "cmtt" u sed in this sentence, set nh ._ 2(0 . oy _ 150. __ 75. D i _ 80. P" — :«> > Px — ;«> i Pe — :w P" — :m» pb = jjg; po = •}.-; ps =0; p a = .5ph; pw — pwi — pwn = pwiv — pvvv = '$}; pwni — ?|g; aspect = 1.0; pu = £■}; ks = J:}; ucs = £]; sc =■= 0; Is - 0; slant— 0; sqrttvvo = sqrt 2, fix width = I; lhilCd=^- 1; vnrg = 0 iowa.st = 1; ligs= 0 . By rri^mg siTftngor sotungs or mo paramators pu can also jot sirangor rontc uuo tftK. Tho roni uonniuoiK aro not aoio to promioo satisfactory rocuus ror on po?.<;mio Qommr.auons or pararaator soitip.^, out taoy ao try to nanoia •in "raasonawo" variations. The programs for Computer Modern can be used in several ways. The general procedure is to run METRFONT and type mode = (mode number); input (font name); the routines will act differently depending on the specified mode. At prcsrnt mode 0 generates proof sheets and shows the letters as they are being drawn, with a resolution of 36 pixels per point; mode 1 generates a font for the XGP or Versatec or Varian, etc., with a resolution of 3.6 pixels per point; modr 2 generates a font for the OH.S with a resolution of 73.7973 pixels per point, displaying the titles of the letters as they are being drawn; mode 3 is like mode J but for a Dover; and other modes cause a filr mode mf to be read in, where this file specifies METRFONT's mode of oprration. In mode 0 the letters appear on a background grid as shown in the illustrations of this report, so that you can sec the settings of the parameters in a convenient, way. If you wish to see the characters as they are being drawn, you can type "chardisplay; mode— I, input (font name)", etc. All of the illustrations of individual characters in this report were generated wi( Iimode 0, except for the characters o f the math extension font; these were done in a similar way but only half size (with 18 pixels per point), because so many of the characters of this font are «"|uile large. Actually mode 0 is rarely used with an entire font like cmrlO, it is generally used only to test out new characters. In that case you can make up a file called "test mf" containing the characters you wish to try, and simply input the system file "proof mf, which has the following form: mode = 0; input cmbase; p h = ^P; . . . (set up for cmrlO)...; call fontbegin. input test; * 9
new pw, . . (set up for cniblO).. .; call fontbegin. input test; new pw, . . (set up for cmssb) . . . ; call fontbegin. input test; ncw^p/j, . . (set up for cmtt). . .; call fontbegin. input test; new ph, . . . (set up for cmsss8) . . ; call fontbegin. input test; end. Thus, it runs your test file against live different settings of the parameters. The programs for individual characters in this report fall into four main groups: First comes the roman group, which makes text fonts either with ligatures (like crnrlO) or without (like cmtt). Then comes the italic group, which is somewhat similar, but it either makes text fonts with ligatures (like cmtilO) or italic fonts for mathematical formulas (like cmilO). The third group is called symbol, and it makes math symbols (like cmsy 10).Finally there is the mathex group, for extended math symbol fonts (like cmathx). Let's go one level deeper and take a look at the programs for individual letters. Such programs are expressed in terms of variables something like the parameters we have been discussing, but the variables are slightly dilfercnt since the letters are to be drawn on a raster and we need to work in raster units instead of printers' points. The point-oriented variables ph, px, pe, etc., have corresponding raster-oriented variables, satisfying the approximate relation (raster-oriented variable) *=^pixc/s (point-oriented variable), where pixels is the number of pixels per point. This relation is only approximate, not exact, because the raster-oriented variables have been rounded to values that help to provide satisfactory discretization of the characters. As explained in Chapter 7 of the manual, good designs are written with discreteness in mind, although METAFONT tries to do the right thing automatically when it can. There arc seven raster-oriented variables corresponding to seven of the eight pixel- oriented vertical dimensions, namely h *->ph, m «-> px, e<-*pe, d «-» pd, b <-> pb, o <-> po, a «-*pa; in other words, we just drop the "p\ except in the case of "px" (since a variable can't be named"x"). Variable m is used lo stand for the x-height, since a line al this height is traditionally called the "mean line " The baseline of each character is row 0, so the bottom pixel of a letter like "h" has {/-coordinate 0. The lop pixel of an "h" is in row ht which is always an integer. (Note that there arc actually h-\-l occupied rows, not h, although h is called the h-height.) The top pixel of an "m" is in row m, and the bottom pixels ol the descender letters (g,j,p,q,y) appear in row -d. All three of these variables (h, m, d) are integers, and so is the overshoot variable o (which is used as a correction to h, m, or d in certain cases). Variable e is either an integer or an integer plus ^, whichever is better for a pen of the hpen height, since the bar of an "e" is drawn with an hpen and its y-coordinate is e. Variable b is an integer calculated in such a way that tall characters can run up to row h + b and deep characters can descend to row -d —b; more precisely, it is the smallest 10
L.teger such that h + d + 2b + 1 rows of the raster occupy a vertical distance that exceeds or equals the true point size p/i + p<t + 2pb. The pen sizes in Computer Modern programs for individual letters arc generally expressed in terms of the following variables, each of which has a positive integer value intended to approximate thk "true" infinite-resolution value (and slightly increased in order to look right on the output device, depending on the current mode): il\), the hairline width; te/i, the stem width; tt>2, the curve width; w,\} the dot diameter; m-i, the upper-case stem width; W'yy the upper-case curve width; W(jt the hairline height; wj, the stem height; Wx, the curve height; *UA), the upper-cast stem height; W[Qt the rule thickness for math symbols. Note that the last five of these variables have no "p-variable" equivalent; they satisfy the approximate relations w^/wo ^ wi/wi «rf iva/u>z ^ wg/w^ ^ aspect] w\o *** 25(u\), t»i\. The hpenht, lpcnht, and rpenht arc xx\)t and the vpenwd is u\). Thus, an hpen of size Wq is equivalent to a vpen of size %i\\\ we may call it the "hairline pen" for the font. In the horizontal dimension, the Computer Modern programs make frequent use of variablcu, the approximate unit width when there arc 18 units to an em. The width of a character is cxpressrd in terms of units (e.g., an "h" is lOu wide, unless there is a serif correction sc ^ 0 or some additional letter spacing Is 7^ 0), and key positions can be specified as a certain number of units from the left (e.g., the sterns of an "h" are centered at 2.5u and 7.521). The vertical guidelines in the illustrations of this report are one unit apart. If the character is £ units wide, variable u has been calculated so that t times u is an integer r, the rightmost column of the character. (The value of u itself is usually not an integer, nor need t be an integer.) Just as a character typically occupies rows 0 through h, inclusive, in the vertical direction, we use columns 0 through r inclusive in the horizontal direction, although most characters leave while space atthc left and right boundaries. The integer r is calculated so that, in the absence of con eel ions due to serifs or letter spacing, etc., r-(- 2 is the nearest integer to the character's true width (t-pu-pixels), Ihc reason for this extra "+2" js that, low-resolution devices should keep a blank column (col'imnr-f- 1) between adjacent characters. However, it is best for conceptual purposes to think of r as the character's actual width, and to think of "r — 2.5u" as a point 2 £ units from the right edge, etc. Variable 00 is an integer approximation to one-half of o; it is used for "half of an overshoot," when curved lines approach the bottom or the top of a character. Variable dd is like d except it is only half as large, when ha/fd is nonzero. A few other variables like this are defined for use in several different characters, either in file cmbase or at the beginning of a file containing character definitions; but the variables described above are by far the most important. 11
f; n "3 / //i il 1 ? ' K i/7 L-1 ^ f k ■a* .-•-. ,?- N \ \ \ \.\ 1 \ U? 5J Mill h Upper-case "A" defined by the example program. We're ready now to look more closely at a program for the upper-case letter "A" (see the boxed example on page 13). The first line of that program simply gives the title that will appear on proof sheets, or possibly on the terminal when the character is being drawn. Then comes a call to the charbcgin subroutine, with seven parameters: the character code, the width of the character in units, the respective amounts in units that are to be trimmed from the left and from the right, and finally the character's height, depth, and italic correction. These last three parameters must be in absolute units of printers' points, hence ph (not h) must be used for the height. The next, few lines give eight equations lo define the locations of points 1, 2, 3, and 4. First point 1 is positioned so that, using an hpen of size xvo (the hairline pen), the pen's left edge will be 1.5 units from the left edge of the character, and the bottom will be on the baseline. Similarly point 4 is placed so that the pen's right edge will be 1.5 units from the right edge of the character and the bottom will be on (he baseline, where this time the pen is an hpen of size w-}. (The upper-case curve width w-, is used here in preference to the stem width tui, since a diagonal stroke tends to decrease the effective pen width.) The positioning of points 2 and 3 is more interesting: the idea is that we want to draw a line from 2 to 4 with an hpen of width w7}, and another from 3 to Iwith an hpen of width u;0. First, we define t/2 and y.j so that the top occurs at the h-height /i, plus the "overshoot" o that givrs this letter a touch of class. Then we state that x*~ x{ = x.A - x2) so that the two diagonal strokes will have the same slopes (the same amount of change in thcrr direction). Finally we stipulate that rt:>a>2 = rt0:r;), so that the line from 2 to 4 will have the same top right boundary as the line from 1 to 3. These equations give METAFONT enough information to determine points 2 and 3 uniquely. After drawing the right diagonal stroke, we need to erase part of the stem line at the top, where it protrudes to the left of the left stroke (which is 'thinner). Befoie erasing anything, 12
"The letter A"; call charbcgm(" A, 13, 2sc,2sc, ph, 0,0); hpen; lft0X| = round 15u; botoj/t = 0; rtf-,x,t = roun<l(r — 1.5u); bot.^j = 0; topow* = top5j/2 = /i + 0; ^3 — xi = x,| — x-2; rtsa^ = rto^; w-, draw 2.. 4; % right diagonal strol U> = U> = e; new aa, bb; % auxiliary variables for intersection of lin zr> — 1 == aa[xh x:j]; y, = aa[t/i, j/j]; xi, + \ — bb[z\, x*]] y(> = W>(yi, m\; wo draw 5. .6; % bar lit lpen#; wr> draw 3.5; % erase excess at upper k hpen; u\> draw 3 1; % left diagonal strol if ucs 7^ 0: call . a serif (I, 0, 3, —.5ucs); call * b serif (I, 0,3, + ucs); % left, sen call . c serif (4, 5, 2, — ucs); call"* d serif (4,5, 2, -+-.5 ucs); % right, sen fi. A METAFONT program for upper-case "A". however, we may as well draw the bar line. Computer Modern fonts place this line at the e-hcight, the same level as the bar line in an V\ hence y~> — y^ = e. The calculation of Xr> and X{} is slightly trickier; x-} lies between x\ and xj, and the ratio of its distance is the same as the ratio for 3/3 with respect to y\ and t/j.Thc equations "a:-, ~ aa(xi, Xj); j/3 =aa[yi, y.\\" would almost surely work to define a suitable point; but the program actually uses X5 — I instead of X5, just to be absolutely safe against weird possibilities of rounding that might cause the bar line to stick out at the left. (It doesn't hurt to start a line one pixel to the right of a point, that, lies on another line.) Now the lpcn# is used Lo erase unwanted black pixels, changing them back to white. Actually this erases more than we wanted to get rid of, since it has a rectangular shape and v/e are erasing at an angle; but that doesn't matter, because the left diagonal stroke blackens all the nccrssary pixels. (Note that the eraser also does away with part of the guidelines in the proof drawing of the figure ) Finally the serif subroutine is used lo attach fancy serifs at points 1 and 1; these serifs extend .5ucs units outwards and ucs units inwards Details of this subroutine appear below. Once you understand this program for "A", you will have no trouble writing programs for "V" and "v", as well as for the Creek letter ",A"; and you will be well on your wny Lo having "M" and "W". Similarly, the code below for "IT leads t o "D" and "P" with little further ado. We shall now plunge into the deepest level, the subroutines in cmbase mf that Lake care of nasty details. These subroutines are presented on the following pages for reference purposes; it's probably best not to read them until you have to. • 13
The file cmbase.mf cps = .000314159; % a very small random positive number if mode = 0: proofmode; drawdisplay; titletrace; pixels.— 18; blacker = 0; else: if mode = I: fiitmode; tfxmode; no modtrace; pixels — 3.6; blacker =1.2; % XGP, Vcrsatec, Varian, etc. else: if mode = 2: rrsmode; tfxmode; titletrace; no modtrace; pixels = 73.7973; blacker = 1 ; % Alphatype else: if mode = 3: fnlrnodc; tfxmode; no mod trace; pixels = 3.6 *(Ll/L3)*(.]g(J); blacker^- 1.2; % Dover else: input mode; ft; ft; ft; fi. subrout inc fontbegin : no eqtrace; new typesize; new cf; new h, dt dd, m, e, o, oof b, s, a; new wo, w{, u>2, wA, w.h w^ u\h wh w&t m, twio, u>\ i new deltawt bold; new armic, Ick] new less) new prt) wo = round(pixcJspvv -f- blacker); W\ = round(pixclspwi + blacker); Wi = roKX\\<\(pixels pwii + blacker); Wj = round(pixe/.s pvviii-)-- blacker); ti;^ = round(pixe/sptviv + blacker); w$ = round(pixc/sptw + blacker); ti\j = roun<l(pixclspw aspect-\- blacker); toy — r<mni\(pixclspwi aspect -f blacker); w* — roii!id(/)ixe/.s pwii aspect -\- blacker)] u\)—round(pixe/spwivaspcct-(- blacker); prt = .25[pw, pwii]; tt'io = round(pixc/.s prt + blacker); W\\ = round(pjxo/s(.2[pw, pwi\) aspect + blacker); dcltaw = pixefs-(pwji -- pwi); bold = .5[p\vii, pwiii] pixels -{- blacker; % Initialize before making a font: % Turn off tracing within this subroutine %thc vertical size of the font % conversion factor, approximately equal to pixels % raster-oriented vertical dimensions % raster-oriented pen sizes % unrounded raster-oriented pen size values % italic corrections commonly used % lower case short serif % rule thickness in points % hairline width % slern width % curve width % dot diameter % uppercase stem width % uppercase curve width % hairline height % stem height % curve height % uppercase stem height % rule thickness in points % raster-oriented rule thickness % hairline plus a little % one step of boldening 14
% The following corrections are for kvvresolution: i f wj/w\ > '^(pwiii/pwi): new xt>i}v>.\\ u>i - - Wj = V){] fi; i f tuz/w.i > ^(pwv/pwiv): new vo^\ w j = w\\ i f ius/w7 > ^(pwii/pwi): new tu^'t w$ = xjp?] fi; h p e n h t t^>; v p e n w d u\)\ 1 p e n h t u^) rpcnlit u\it typesizc =^= ph -|- pd -f 2pb; ef-typesizc = pixels-typesize — I; /? = round cf-ph\ d~ round cf-pd; new pcfcf; pcfcf= (1 —.5/ia/fd)pcJ; dd — round ef-pdd; m — round cf-px; o = round cf-po; 00 = round .5cfpo; s — <;f ps; a -.5 round 2cf-p/i; 6 =.- - round( 5(/i -}- d — typos/zepi.xe/s)); hpen; e — good0cf pc; maxht h |- b + 2; trxy s/aiit; if ucsj£ 0: armic = p/i-sfant+ (sc ■■■ l-)PuI else: annic ~ ph slant + (s c —.5)pu; fi; if pwii >1.5pu: Icic = --.25pu; else: /dc = .5pwii --- pu; fi; if pw= pwi: less = les; else: /ess = .5ics; n. 15
subroutine charbcgin{varcharno) (var charu w) (var Iftcorr y var rtcorr) (var charh, var chard, var chari): no cqtrace; no calllrace; no drawdisplay; new uw, modu w; new r; new u; new tu] new italcorr; new Icorr, rcorr; % seven-hT character code % character width in units % serif-oriented corrections in units % charht, chardp, charic values in points % no tracing in this subroutine % the correct character width in units % raster-oriented character width % raster-oriented design unit % unmodified raster-oriented unit % italic correction % left and right corrections t u = pu pixels; if fixwidth = 0: if chari>0: italcorr = chart] else: italcorr ^0; fi; if danger 7^ 0: % rounding of character width is necessary Icorr = danger- rouii<l((Jftcorr — Is)/danger)] rcorr = danger. roun<l((rtcorr -- ls)/danger)] else: Icorr — Iftcorr — Is] rcorr = rtcorr —Is] fi; uw = charuw —(Icorr + rcorr); moduw = uw; else: moduw = 9; new italcorr; italcorr = 0; fi; r = charuw u— round(( moduwtu— 2)-charuw/uw)] charcode charno; charic italcorr; if charh > 0: charht charh; else: charht 0; fi; if chard > 0: chardp chard; else: chardp 0; fi; charwd moduw-pu] chardw moduw tu] incx round(—Icorr-u)] if mode = 0: call box(roundicorr-u); fi. 16
iibroutine box(var offset): % Draw guidelines and box around a charnctcr: no drawtracc; no proofmode; new topp, bott, left, right, pos; topp = h + b; bott = - d — b) left- offset] right = offset + uuw] X{ = rr.i = xr, = xy = x<j = X[{ = x\:\ = x\^ = x\t = left; Xi = x\ = Xu = x8 — x{o = X\i = ^1-1 = ^16 = ^18 = right; j/! = 2/2 = 0; cpcn; 1 draw 1..2; % baseline y;J = j/4 = e ; draw 3.. 4; % e-height y5 = yi = m; draw 5.-6; % mean linn (x-height) W = Vs — h ; draw 7.. 8; % h-height 3A, — yl0 =: topp) draw 9.. 10; % top of character !/ii = Vvi = —d\ draw 11. . 12; % descender line Vv.\ = l/ii = bott) draw 13.. 14; % bottom of character trxy 0; % temporarily turn off the slant yi5 = V\q = topp] y{7 = yi8 = bott) draw 15.. 17; draw 16.. 18; % left and right edges if italcorr > 0: ^iq = x-2o = right + italcorr pixels) t/i9 = topp; 2/20 = 0; draw 19.. 20; % show italic correction fi; trxy slant; % restore slanted transformation p o s = 0; c a 11 unitlines. % draw the unit guidelines subroutine unitlines: ^Recursive subroutine to draw guidelines: x\ = %i = p o s ; y\ — topp) t/2 = bott) cpen; if p os > left: 1 draw 1..2; fi; new pos; p o s — x\ + u; i f p o s < right.cal 1 unitlines; fi. 17
% The following subroutines arc usee! to draw common features of characters. % point where serif appears % w-variable for stem line % another point on the stem line subroutine serif (index i) (index k) (index j) c> (var si): Vi = Vi\ if Vi < vj- yi = v/ + *; else: Uz = Vi — s; fi; hpen; if si < 0: lftoZi = lftfcX4 + slu — e p s ; iftox-2 = lftk(ij2 — yt)/{yj — yi)[xh Xj); else: rto£| = rt^ -\- slu + e p s; rt0X2 = rtk{y2 — Vi)/{Vj — Vi)\xi, xj]; fi; no proofmode; x3 = k[xi — sl'U,k[xu*2)]l V3= Mvt»V(yi,y2J]; minyj 0; minvs 0; ti^) ddraw l{x, — s4> 0} .. 3 .. 2{x, — xit y} — y,}, 1 .. I.. t; rninvr 0.5; minvs 0.5. serif length subroutine darc(indext) (index j) (var maxwidth): xr> = xi\ x2 = x.\ = l/sqrttwo[zit xj[\ x3 = x^; Vi = 1/sqrttwoly.j, y<]; tfi = l/sqrMwo(yjf y,-]; hpen; draw |W|*{*3 — **,0} . |5j[ii*), maxwidth] |2{x3 — x^y^ — y,} . . |maxwidth#|3{0,y3 — y,} . . |§[ti^), maxwidth) |4{x5 — x3, y$ — yj} |u\)|5{x5 — x3, 0}. % starting point % opposite corner point % the pen grows from u\) to this Size subroutine arc(index i) (index j) (var maxwidth): x, = l/sqrtlwo[x/fX;); y\ — \lsqrtiwo[yj1yl\\ hpen; draw |m>|t{xj — x,, 0} . jjj [two, /naxwidt/i]|l{xj — x,, yj — y,} |maxwidtii|j{0, yj — y,}. % horizontal endpoint % vertical endpoint % the pen grows from UJfo to this size 18
subroutine arni(indcxi) /7 starting point (indexj) % horizontal endpoint (index k): % serif endpoint hpen; if ucs ?£ 0: i f wo — w.i: X[ x2 = xk\ y{ = yj-t if Vk < Vf m = Vj — aspect-ucs-u; else: y2=yj + aspect ucs U] fi; t^o draw t:. 1; draw 1..2; else: minvr 0; minvs 0; x{ = Xj — (xA: — *,-); y{ *= .3[y;, yAr]; »2 = %; !& = %/,»]; tub ddraw i..j..k, i{xj — xit 0} .. 1.. k(.. 2); minvr 0.5; minvs 0.5; fi; else: X\ = xk\ y\ = yj\ vo^ draw i .. 1; fi. subroutine scomp(indexi) % starting point (index p) % turning point (y,, to be defined) (index j) % transition point (to be defined) (index k) % ending point (var slope): % ending slope % This subroutine computes yPiZj,yj s o that yk — y31~ slope.(xk - - Xj) % and so that the following curve is consistent with an ellipse: % i{xp — xu 0} . . p{0, xjp — xji) j{xk — xp, slopc.{xk — x,,)}. yk — yj = slopc(xk — Xj); new aa, bb; aa = slope(xp — Xi)\ bb = yk — yi~ slope(xk — xt); Xj — xt = —2aa bb(xp — Xi)/{aaaa -f- bb bb)\ yp — yi = 5(bb bb — aaaa)/bb. 19
* ibroutine sdravv(index i) (index p) (index k) (index q) (index j) (var perrwd) (var penht) (var slope): new w.[u, Wm) w,\h— penht; w j<)~- pen wd; cpen; topby> = top,J8y,,; botu?fo — bot is!/*; if xp < 5,: rt wxp = rtoZ|; lfl «)XP -=-- irt0x2; % starting point % upper turning point (yp to be defined) % middle point % lower Lurning point (y„ to be defined) % ending point % effective width of hpen used % effective pen height at point k % slope at point k X'> — Zg = xk\ rt.ios,, = rtoxy; Ift^ = lftoZio; else: lft,i<>Tp = IftoXi; rt \<)Xp — rt(|2>;; Ifttoav, = IftoXtj; rt 192,, = rtoZio; fi; call &acomp(t} 1, 3, 5, slope); % compute yi and point 3 call scomp(i,2, 4, 6, slope); % compute y2 and point 4 call scomp(j,9, 7, 5, slope); % compute ya and point 7 call scomp(j, 10,8, 6, slope); % compute yio and point 8 hpen; u\, d d r a w z{xi — x{, 0 } 1{0, yi - - y,} 3{xr/ — xp) slope{x(} — x/;)} . 7{xq — xP) slopc(xtl — xp)} .. 9(0, % — tA)} • i{^j — *h 0}, t{r2 — «,-, O}. . 2{0, U2 — y«} . 4{z,, — xp, slopc(x<f — xp)}. . 8{xq — xp, slope(xu — xp)} . . 10{0,yj —yl0} . ../{zj —£io>0}. % the s-curve subroutine zcomp(index i) (index p) (index j) (index k) (var slope): % This subroutine is dual to scomp. % It computes xp)Xjt y, so that £*— Xj = slopc(yk— y7) % and so that the following curve is consistent with an ellipse: % *{0> VP — Vi) . p{xp — xu 0} . j{slopc.(yk — yp\ yk — yp}. Xfc — Xj = slope(yk — y,); new aa, bb; aa — shpe(yp — y,); b b = xk — xt — slope{yk — y,); Vj— y> = —2aa bb(yft - y,)/(aa aa-j-bh bb); xt> — zt — ,5(bb-bb -- aaaa)/bb. % starting point fc turning point (xp to be defined) % transition point (to be defined) % ending point % reciprocal of ending slope 20
subroutine zdravv(indcxz) % starting point (index p) % left turning point (:r;; to be defined) (indcxk) % middle point (index q) % right turning point (xq Lo be defined) (index j) % ending point (var penht) % effective height of hpen used (var penwd) % effective pen width at point k (var slope) : % reciprocal of slope at point k % This subroutine is dual to sdraw. new tu is, t&m; w,\s — pen vvd; w.\<) = penht; cpen; rtor, = rt ,8^; lft0£o = lft.jsxfc; !/r> ~ M> = 1/fcJ if Vp > Vi- Lop jo!//^ = toP(>Wi; bot myp — botoVii loWy^topoiAj; bot^)W/= bot6i/to; else: bot ^yp = botftj/|; top h)y/; = topby2j bot lai/^botojto; top io!//,-- top(ij/|0; fi; x-2 = £p; »j = x(J\ call zco/np(t, 1, 3, 5, slope); % compute X| and point 3 call zcorrip(t, 2, 4, 6, slope); % compute x2 and point 4 call zcomp(j,9, 7, 5, slope); % compute &) and point 7 call zcomp(j, 10,8,6, slope); % compute X(o and point 8 hpen; wq ddraw i{0,y\ — yi}. . 1{si — x*'0/ . 3{s/opc(yf/ — y;)), y„ — y,,}. 7{slopc(yfl — y;)), y,, — yp} 9{rr, — a*,, 0} j{0, yj — yo}, i{0,V2 — y/).2{*2 -- a:i,0}.4{s]ope(y,, -- y„), y<, -- y„}. 8{,sIope(y7 — y,,), y,, — y,,} . . 10{xj — xHh 0} . y{0, y, — yl0}. % the s-curve subroutine bar(index i, index j): % This subroutine is similar to "vpcn; W) draw i .. j", % but the vpcn slants with italic. no proofmode; %thc points computed aren't interesting vpcn; topGyi = top()yt; botoyi = bot^y*; topGyj = topoy^; bot0yi = bot9y>; X) = Xi = Xi\ £3 = X/\ = Xj\ tt^i ddraw 1.. 3, 2 .. 4. subroutine felroAc(indcx i) %dot position (index j): % s-coordinate of stem hpen; x\ == x,; botjy^— 0; y\ =- .5(ra,/i|; rlox.i — rt.-jav; ?/* = V*', t-2 = .5[x;j, X|]; top0y2 = h + oo] draw |tu,|i..|^,#|l{0, I}. K#|2{1, 0} .. 3{0, — 1}; % shoulder and stem epen; Wj draw i; % bulb if lcs?£ 0: call "aser/T(j,i, 1, — les); calP b serif (jf 1,1, les); % serif fi. • 21
subroutine hstro/<e(index i) % ar-coordir.tc of left stem (index j) % ^-coordinate of right stem (indexk): % will be set to base of right stern hpen; xk — Xj] bot{yk = 0; rtoxi = rtiz,-; yi = M^Hiy . =jle>ml; x2 =-~ .5[xi, xj\; top:jy2= m + 00; x.i = l/sqrttwolx^Xj]; tjj = l/sqrttwo[yJ9yt]; draw |m,|l{0, I}. K#|2{i,0}..|.6[^;^,]|3{xJ-x2,yJ - y2} . |wi#|,7{0f— l}../c. % shoulder and stem subroutine c<7ra\v(indexi, index j) % given points (intlex p; index q): % given widths, w}) > wq % An implementation of the forbidden "epen; draw | wt \i \wq\j" . '' epen; xup draw i; % plot the biggrr dot new aa; (aa + cps) sqrt((x, — x,) (x, ~ *,-) + (y, — yt){yj — yt)) = wp — iv,, ; X2 —xt = aa{xji— y,); y2 — yi = aa(z, — rr,); Xj — .5[xi,X2); y, = 5[yi,y2]; % perpendicular points wq ddraw t.. j, 2 .. j. % fill in the rest subroutine qcircfmdex t) % horizontal endpoint (index j) % intermediate point (index k) % vertical endpoint (var size): % size of epen that draws a quarter circle open; xj = \ / sqrttwo\xiy xk\\ y, = l/sqrttwo\yk)yi}; size draw i{xk — xii0}..j{xk — xi)yk — yi}..k{O,yk — yi}. subroutine hcirc(indcx viii, index i, index /'/', index iii, index iv, var size): Xiv = xvm't yu -- ">\yiViy,ml\ call qc/Yc(viii, t,//, size); call qoircfiv, iii, //, size). subroutine arc/c(indcxi, index ii, index iii, index iv, index v, index vi, index vii, index viii, var size): %iv ^ %uiii ^ -0JXvj, Xn\\ yu ==: y^i == '^[Vivt yviii\\ call qcirc(viii,i, ii, size); call qcirc(iv, iii, ii, size); call qcirc(ivtv9 vi, size); call q< irc( viii, vii, vi, size). subroutine c/itry(varz) %x-coordinatc for upward stroke (index j): % z-coordinate for downward stroke (y, will be set) % This subroutine draws a little hook at the beginning left of an italic character, % ending with the pen travciine vertically at point j with size W\. hpen; x\ — good()z; y\ = jjm; xjj -~ \m\ x2 = x} — 1.5u; top0yi = m + 00; draw |i4)|l{(x, — 2.5u) — x{, m) |it'0#|2{ 1,0} |u/i#|j{0, - 1 ) . 22
t-ibroutinc ske wen try (varz) % x-coordinate for upward stroke (index j): % z-coordinate for downward stroke (ifj will be set) % This subroutine is analogous to entry, but the pen starts out vertical % and ends at the skewed slope {—u, ~m} to compensate for optical illusion, hpen; x{ = good(yz; y\ = j}rn; y3 = $m] %i = Xj — 1.25u; top0j/2 = m + oo; draw |tH)|l{0,1} . . K#|2{1, 0} . |ix/i#|i{—txf - m } . subroutine ex it (index i) % x-coordinate for downward stroke (y; will be set) (varz): % ^-coordinatefor upward stroke % This subroutine draws a little hook at the ending right of an italic character, % beginning with the pen traveling vertically at point i with size W\. hpen; x2 = good()z; y2 = £m; t/t — \m\ x{ — xt + 1.5u; bot0t/i = —oo; dra w \w{*\i{0,—l} .\wo*\i{l,0}2{*2 — (*,-+ 2.5u), m } . subroutine skcwexit(iiidcxi) % z-coordinate for downward stroke(y, will beset) (var*): % x-coordinate for upward stroke % This subroutine is analogous to exit, but the pen begins with the skewed % slope {—u, -m} to compensate for optical illusion, and ends vcrticnlly. hpen; x> — good()z; rj> = \ m ; y< — \ ra\ x\ -•- xt -\- 1.2521; boto{/i =-00; draw |u/,#|t{—u,—m}.[u*>#|l{l, O}. .2(0,1}. subroutine italhstroke(indcxi) % starting point (index j): % s-coordinate of right stern (y, will be set) hpen; x{ = .Ofx*, x,]; x2 ~ x3 — .4u; top0j/l = m +oo, yi — 75(e, y,|; y,=.3[c,m7; draw K|i{0, l>.K#|l{lf0}.|75Klti;,||2..|ii;l#|i{0l- 1 ). subroutine pistroke: % makes the bar of pi, tau, variant omega vpen; X\ = goodn(0); tj{ = m — m/3.14159; xi = 2u; top7y; = m ; y.j — y2\ xA = r - - 1.5u; draw K#|l{*2 - *i, 3.14l59(y, - y,)} . K#|2{1, 0} . . 3; % bar epen; t/^ draw 3. % make the end point round subroutine cn<iv(in<lex i): % draws final bulb starting at this point open; X\~x, - u; x> == xt --- (5t/; top,y, --m-|- 00; y^ = y,; hpen; draw |u\,#|i{0,1} . |u;l#|l(. .2); % stroke epen; W\ draw 1 % bulb subroutine max(var a, var 6): new ace; if a > 6: ace = a; else: ace = 6; tf. % sets ace = max(a,6)
Frank and Ernest By Bob Thaves <v HtRZ'S Your TH\S "H-" IS -t^a-dX Tm*v£*» »o -A** 24
ROMAN CHARACTER DESIGNS The file roman mf % The Computer Modrn Roman family of fonts (by I). E. Knuth, 1979) danger — mi = 0; input romitu; % upper case (majuscules) input roman 1; % lower case (minuscules) input romand; % numerals, ampersand, and question mark input romans; % miscellaneous letter combinations input romi tp; % punctuation symbols common lo all roman and italic inpt;t romita; % accents and other symbols common to rornan and italic text if ligs 7^ 0: input roml ig; % letter ligatures (codes ' 173 -' 177) input romitl; % ligatures common with italic input romext; % nonstandard characters (codes '043, '044) else: input romits; % substitutes for ligatures fi; if lixwidth = 0: new k, kk, kkk; % three degrees of kerning A: == —.5pu; kk = —1.5pu; kkk=— 2.5pu; Hg 'k: "v: "w: "x: "y: "o kern k, . e kern k, "c kern k; lig ^F: ^V: "A kern kkk, "o kern kk,"ekern kk, ' a kern k k, " u kern kk, * r kern kk, fK: 'X: " 0 kern k, "C kern k} ~G kern k, * Q kern k; lig 'T: "y kern kk, 'Y: "o kern kk, " e kern kk, a kern kk, * u kern kk, . r kern kk, 'P: N w: f A kern kk; iig '0: ~ A kern k, . W kern k, " Y kern k, " V kern k, " X kern /c; if Jcs^ 0: lig fh: ^m: fn: "t kern kt "u kern /c, " b kern /c,; fi; lig ^o: . v kern k, " x kern /c, . y kern k, " w kern A:.., if lies 7^ 0: lig ^R: ; fi; lig *A: "t kernfc, *L: NT kern kk, ^O kern k, "U kern /c, "C kern /c, " W kern kk, ^Y kern kk, ^G kern k, . V kern kkk, . Q kern k; texinfo slant, 6pu, 3pu,2pu, px, 18pu, 2pu; else: texinfo slant, 9pu, 0, 0, px, 9pu, 9pu; fi. '25
ILi [it? H 1 ill 1a2 t>2 I .• *[ < L i * :2 di • ♦T 2 ^ * ~L~e ;^_ S "~1 -^ , l i f\\ ll i r • 1 1 26
The file rom i tu mf % These upper-case Roman and Creek alphabets were prepared by D. E. Knuth in November, % 1979, inspired by the Monotype alphabets used in The Art of Computer Programming. % For text spacing, set mi = 0; for math spacing, set mi = 1. % Character codes '000-'012 and '101-'132 arc generated. new mc, lbowl,rbowl,rstcm, rv, hie; m c = mi/pu; Ibowl = .3 ph-slant + .5pu; rbowl = .7ph slant— .5pu; rstem = ph slant -f (ucs -f- 2sc — 1.5)pu; rv = ph-slant-\-{.5ucs + 2sc — l)pu; % quantities used to compute spacing % converts to rciativc units when mi — 1 % used at left of upper-case bowl % used at right of upper-cast howl %uscd at right of tail stem %uscd at right of tall diagonal % stern hie = I — .5mi; % used when half the italic correction goes into rtcorr "Upper case Greek Gamma"; call charhegin('000,11, 2sc, sc — nu:(armic — 2.5pu), ph, 0, rni[arnrWc,2.5pu]); hpen; \tt\X\ = round 2u; xi~--x\\ top ,yi —/t; bot|t/2 = 0; w\ draw 1.. 2; i f ucs t^ 0: call 'a serif (1,4, 2, —ucs); call. b serif(1,4, 2,.Sues); call "c serif(2, 4, I,—ucs); call "d serif(2, 4, 1, ucs); fi; new ss; ss = lAaspectucsu + eps; i f ss + ^i>.25/i: new ss; ss=.25h —1^>+ eps; fi; rtoxi = round(r — l.5u); x.i — x.j + .5u; yj = t/i; call "earm(ly 3, 4). % upper stem serif % lower stem serif U\ = V.i — ss; % upper arm and serif X\ = X2\ X.\ "Upper case Greek Delta"; call chavbcgin{ '001, 15, 0,0,ph,0, 0); hpen; lftoX-2 — round u; rt.^Xi = round(r — u); top^ys = h + o; y^ = y$; a^ — «2 = *4 — an; rt i2>> = rtoXft; vpen; botsyi = 0; y:i = yu ti>) draw 1. . 3; rpen#; tvy draw 5.. 4; hpen; ttf.i draw 5. . 4; lpen#; w\ draw 6. . 2; hpen; t*Jo draw 6.. 2; Y7 = U\m, rto*7 = rt ^i; u*i draw 2.. 7.. 7.. 6. botot/2 = 0; bot4y,t = 0; *A\ iih) <lraw 6.. 2; % bar line % erase excess at lower right % right diagonal % wasc excels at left % left diagonal % sharpen lower right corner 27
1 .'■■ _■■■■' ya2 / / / ) 1 1 a3 1 • 1 i \ 1 i' / i ^ z~ i ► w. > ,* ? 1 6| " \ \ a4 - \ * \ 1 X >v 1 ~1-:-- ....^ J. . -...—. I _^ s M \ \ \ i i j t , \ b3 i • \ • L } / b4 / •/ *./ y y i t al- 1 x— s* .• I 1 r < { f • i / i \ ! v \ <i _^_ r I [t V \ \ • c2 * i i dt V. LA 28
'Uppercase Creek Theta"; railcharbcgin( '002, 14,mcdbowl,—mc rbowl}phf pdd, mi[rbowlt0]); hpen; if fixwidth ^ 0: new save; save—- sqrttwo; new sqrttwo; sqrttwo = sqrt save; % super-superellipse lft-,£'2= round 1.5u; else: \ft^X2 = round u; fi; X{ = r — X\ ; % axis of left-right symmetry top(>j/i— h + 00; botoy-2 =-00; 2/.i = t/>; x;l = r — x2; call . a darr{ |, 2, ti;5); % left part of bowl cair b darc(l, 3, w5); % right part of bowl lfto^.j = round(rt5:r2 -f- u)\ x-> = r — a:..j; y.j — ys = .5[yi, tji]\ vpen; ifucs=0: tur)draw4..5; % bar tine else: call bar (4, 5j; % bar line X(j = x7 = x,i; afc = z<) = zr>; y; = yj = .6/1; wi = Ms = -4/i; w() draw 6. .7; %lcft serif draw 8.. 9; % right serif fi; if fix width 7^ 0: new sqrttwo; sqrttwo = save; fi. "Upper case Creek Lambda"; call charbcgin( '003, ll,2sc,2sc, ph, 0,0); hpen; lft0X| = round J.5u; botoyi ---= 0 ; rtvr.i — roimd(r — 1.5u); botr/yi" 0 ; t°p0yj — toP5l/2 ^ ^ + o ; xz — X\ = x.| — a^; rt-,a>2 = rtoafcj t^5 draw 2. . 4; lpen#; wj draw 3.. 1; hpen; Wq draw 3.. 1; if ucs y£ 0: call 'a serif(1,0, 3, — .5ucs); call ^b serif (1, 0, 3, + ucs); call "c serif (3, 5, 2, —ucs); call "d serif ('I, 5, 2 , -f .5 ucs); fi. % right diagonal stroke % erase excess at upper left %lefl diagonal stroke % left serifs i right serifs 1 29
3 1 • • J ■- ■ i •■9 ♦T [ n a • 1 3 .♦ 1 I ^ ^ _ i] — ..-.-. r "'" H* —- K I- 4 • 17' k 2 ♦ I* I ) t 6 • I k L*: ~ < 7 • i2 • :2 ♦ 2 ♦ b2 •r di • T V ml • ■L-d 1 ^'1 % *i .-.-? 1—'■ ra * f: • 4 • f~" > f i !«i n 30
"Upper case Greek Xi"; call charf>egm('004,ll, 0, — .5mc(ph slant — .5pu), ph9 0, hic(phshnt — vpcn; top8yi = h\ yt = y2; t/s = yi = good8 .5/*; bot8y5 = 0; y$ !ft.sXi= round u; rts^a = round(r — u); x$ = z\\ Xu = £2; lftsZj = round 2u; rtgz.i = round(r — 2u); if ucs = 0: VX) draw I .. 2; draw 3.. 4; draw 5.. 6; else: call bar(l, 2); call bar(3, 4); call bar(5,6); new ss; ss = ucs aspect u + eps; i f ss > .2/i: new ss; ss = .2/i + eps; fi; x; =xu) = Z[] xH = ^)—xyt x{{~ x\, =x>i] xVJt = zn = x 4 ; bot0y7 = bot8yt — s s ; toptfj& -= top8yj + ss; botoj/o = bot«yj — s s; top(iy, () = top8j^ -f- s s; !/n = yi\ y\i ~ w> yn = w>; yi 1 = </t<>; tt^i draw 7.. I; draw 11.. 2; draw 8. .9; draw 12.. 13; draw 10 . . 5; draw 14.. 6; ft. .5pu)); = th\ % upper % middle % lower % upper % middle % tower bar bar bar bar bar bar % upper serifs % middle serifs % tower serifs "Upper case Greek Pi"; call char\)c.gin{'005,13,2sc,2sc —.5mcrstcm,p/i, 0, hiorste/n); hpen; IftiZi — round 2u; x-2 = X\\ rt/jxj = round(r — 2u); x4 =2:3; top^i = h\ y\ — yrt bot iy2= 0; y2 = y.\\ Wj\ d r a w I . . 2; u>4 draw 3.. 4; if ucs 7^ 0: call 'a serif(1, 4, 2,—ucs); call *b serif (I, 4, 2, .Sues); call " c serif(2,4,1,— ucs); call *dserif(2,4,1,ucs); call s e serif (3, 4,4,—.5uos); call " f serif(3, 4, 4,ucs)] call "g.serif (4, 4, 3, — ncs)\ call" /? serif (4, 4, 3, ucs); fi; u\) draw 1.. 3. % left stem % right, stem % upper left serif % tower left serif % upper rifcht serif % tower right .serif %b ar 31
[- 7 \ / 1 4 * \ • t \ t \ \ 10 y '~1 \ <f./... 2 ••-■ ~— .... a.1 .->? ?. 3 £ a: * • i A- 32
"Upper case Greek Sigma"; call charbcgin( '006, 13, 0, sc — .5mc-arruic,ph, 0, hic-armic); new mjo; Wi)<) = round .25[ujg, ti*j]; hpen; lft0Xi = round u; rto#2 = round(r — 1.5u); 2:3 = xi + .5u; new ss; ss = iAaspcctucsu-\- eps; i f ss + Wo > .25/i: new ss; s s = .25/i — i^ + eps; fi; top0y{ = h\ l?2 = V\', Ui = 2/2 — ss; vpen; bot0oy<i = 0; y5 = yi; top6jfe = top9i}y.i; 1/7 = yei ys = 1/7 + ss; X.\ = X& = Zi\ X \ =Xt = X2] Xg = x3; call "a arm(l, 2, 3); % upper arm and serif call "barm(6, 7, 8); % lower arm and serif w<)\) draw 4. . 5; if ucs— 0: draw 5.. 8; % thicken lower arm else: \fwof^W\: d r a w |u*)«)|5 . |u>(>|8; % thicken lower arm else: draw 5. .8; % thicken lower arm fi; fi; hpen; x$ = x\\ x[0 = .5[r<), X\ {\] Xio= round 5u; Ift 1IY2 = Ift«£i3i Ift iXt)o = xu\] rt \:a)i) = rto^i 1; ift \X\ = lftoa;i; rt |X| j == rto^i 1; botutfy — o 1/10 = -5|yf), yii: yu - yio= -5/i; yu = yi.->; yu = V\ 1 = yi; n e waa,bb- lft0^i j = aa[lft0xh Z|(>]; y,5 = aa(yh yu>); ]ft0xl5 = bb[x<h xi 1]; yir, ==■■ bb[ycj, yM); ti;/i draw 13.. 12; % upper diagonal wq draw 1.. 15; % sharpen upper left corner rpen#; w.\ draw 10.. 11; % erase excess at right lpen#; Ww draw 9.. 10; % erase excess at left hpen; wo draw 9 .. 11; % lower diagonal draw 14.. 11. % sharpen middle corner 22
1 4 w 1 J 1 ^r • 4* X * \ \ \ ^ \ ■ \ i 4*"~-q \ 1 { i 1 ! a2 bi •T 1 • ' / —■: l w =*= -9- • 3» 7*_% ^^ **X \ hi] H :i ' r» ..■ • / 63 I1 \ \ < X /••' V 9>J _ i\ • *c2 d2 [J 3 • r i | *X_ ^' e5 • r dJ • .^ X^k ...J \ \ t \ . \ i<-3 f ' /' ■■■/ kv |_^v-^" #..X / 5 • 34
'Uppercase Greek Upsilon"; call charbcgin( '007, 14, mc(.Hph-slant + .5pu),— mc(.8ph-slant — 3pu), ph, 0, in i[.Spb-slant — .5pu,2.5pu]); hpen; X|=- good j.5r; bot^t/i =0; x2 = x\\ tji = .5/i; w.i draw I . . 2; % stem if ucs 7^ 0: call 'a serif(l,4, 2,—ucs); call** b serif(i, 4, 2, ucs); % serif fi; new t/Ajo; u*j<) = round .5^4; rtgo2":) — rt 1X2; lfWjx,| = lftiX2; IftnoXi = x«2 — .25xi\ x 7 = xq = Xi) = 10.5u; vpen; rtsxii = round(r — u); y\ \ ~ .8/1; top8j/i:j-■-topGiA) = /* + 00; bot8yu = botoy?; u* — v\ = vr> = ia> = t/2; 1/7 = y*', yo = yio; yi 1 = wd y\* = yn; *;j + «.| = 35 + xo = x; + xH — xo + xio = X| 1 -}- X|2 — x\\\ -}■- Xj 1; % Icfl-right symmetry u*> draw 13{1, 0}.11{0, —1}; % right stroke draw 14{— 1, 0 } 12{0, —1>; % left stroke hpen; u*,y ddraw 5{0,1}.9{1, 0}, 3(0,1} .. 7{i,0}; ddraw 6{0, I}. . 10{ —1, 0}, 4{0,1> ..8{ — J, 0). % middle strokes "Upper case Creek Phi**; call charbegin( '010, 13, mc(.5ph< slant + .5pu), — wc(.5ph slant — .5pu), ph, 0, /iu[.5phs/ajit -- .5pu,0]); hpcn; Xi = good,, .5r; bot.|t/| = 0; x2 = X|j top.ty2 —/i; mi draw 1.. 2; % stem if ucs 7^ 0: call 'a serif(1, 4, 2, -ucs); call H b serif (1,4, 2, ucs); % upper serif c a I re serif (2, 4, J, —ucs); call " d serif (2,4,1, ucs)] % lower serif fi; X'j = x{] j/j = .8/1; yi = y, — .2/i; IftjX.j^ round u; x;j — x.\ = x-, — X\] % left-right symmetry call "edarc(3, 4,tt^); call . fdarc(3, 5, wj). % bowl 35
KK -6 * -^ \'\ \ C] > I , WA «:y T ~$ \ \ "1 N c2 d2 • *T i i i 1 1 i 1 t r J 3 ♦ i I a2 bi 1 \) s--~^ .-»'" J^-' 1 '4^%_ / I / W / • 36
"Upper case Greek Psi"; rallcharbeginCOll, 14, mc(.Sph slant + .5pu), — .5mc(.8ph-slant -- -5pu), ph, 0, hic(.8phsia/it —.5pu)); hpcn; X! = goocfj.Sr; bot iyi~- 0; rr2 = X\\ top^ = ft; iy,i d r a w1..2; % stem if ucs 5^ 0: call 'a serif (I, 4, 2, — ucs); calP b serif (1,4, 2, ucs); % upper serif call . c serif(2,4, l,—ucs); call* d serif (2, 4, l,ucs); % lower serif fi; *3 = *i\ V\\ = 2/i; Ift.iX(5 = u; x,t = good {3u; y4 = .G/i; ty& =- .8/1; Sr6 left-right symmetry y\~y:>) 1A> —2/7; **- - x.\ — *-, - xy, x*- -^ = #7 — x;J; a\i draw 6{ l, O}. . 4{0, — 1} .. 3(1,0}; draw 7{ —1,0}..5(0,-1}..3{ —1,0}. %lcft stroke % right stroke "Upper case Greek Omega"; call charbegin('012,13, mc(\pc.sh\nt -f -5pu), — 5njc(.75ph slant — .5pu), ph, 0, hic(.75ph-,s/ant — 5pu)); hpcn; top()y! = h + 00; y2 = 7/i; rt5^2 = rt(,x8 --- round(r - - u); vpen; botyys — bot(>yb = 0; ?/i = I/s; x \ — afc — good() 8.5u; ;c, 4- rcj = xi -\- x:i = x t -f x j — ^ | x7 = xH -f a>) = r; 1/2 = y*; y\ = y*>\ y^^wi yn = Uh iu~, draw 4.. 8; draw 5.. 9; lpen#; x$ - x7 draw 2(0, — 1} 6{:^ — x2l r]{iM — V2)}', rpen#; lo-ijdraw 3(0, — 1} . 7{x7 - x:h '}{& — y:,)}; call 'a arc(l, 2, ti;-,); call *barc(l, 3 , tu-,); hpcn; draw |ttfc|2{0, — 1} . |u^|6{a^ — x2t){y« — Vz)}] draw |u*i|3{0, --I}. . \t<A)\7{x7 — xh 5(J/r — Vl)}; i f ucs y£ 0 : x[2 = xH\ bo!0yio = 0 ; top0yi2 = ^e; ^10 + x\\ = ^12 + *i:i " r\ yio = yn; yi2 = yu\ if W7 = ukj: Xio — x\i\ else: £|() -|- .5u — X\2\ rpen#; .ou + xvo draw 10.. 12; lpen#; 5u + tuo draw 11.. 13; fi; hpen; tuo draw 1.0 . . 1 2 ; draw 11.. I 3 ; fi. % left-right symmetry % right bar % left bar % erase middle % ditto % bowl % right diagonal % left diagonal % erase excess at right % erase excess at left % serifs ; 37
\jt n n rr 'r\ ' / //I •fi-TS a L-'i • 7t f ^_ _j \ \ \ J A K\ h>2 d^ 4 • U 1 38
"The letter A"; call charbcgin(~ A, 13, 2sc,2sc, ph, 0,0); hpen; lfto^i r= round l.5u; botoyi = 0; rtr>X| = round(r — 1.5~); bo 15^1 = 0; ^op0i/3 = top5i/2 = h + o; x;j — xi = x.\ — x>2', vt^x-i = rto^j; t^3 draw 2.. 4; % right diagonal stroke Va = 2A3 = «; new aa,. bb;. % auxiliary variables for intersection of lines Xj — l =aa[31,33); V5 = aa[yi, yj]; Hi } I = bb[x,, x2\\ 1A3 = bb[l/^ Ifal; u\) draw 5.. 6; % bar line lpen#; 11% draw 3.. 5; % erase excess at upper left hpcn; too draw 3. . 1; % left diagonal stroke if ucs 7^ 0: call 'a serif(1,0, 3, — .5ucs); call "b serif (I, 0, 3,+ucs); % left serifs call "c serif (4, 5, 2, —ucs); call "d serif (4, 5, 2, -|--.5ucs); % right serifs Pi. "The letter B"; call charbegin(*B, 12, 2scl--.5mc(.75ph-s/ani —5pu), ph, 0, hic(.75ph-siant -- .5pu)); hpcn; Ift \Z\ — lft\Ti— round 2u; top 1J/1™ h; bot it/2 = 0; lu.i draw I.. 2; % stem if ucs 7^- 0: call " a serif (I, 4, 2,—ucs); call . b serif (1,4, 2, .Sues)) % upper serif call * c serif (2, 4, 1, — ucs); call ^d serif (2, 4, 1, .5mcs); % lower serif fi; xA = i(2u,r]; y3 = 3/1; rtsri = round(r — u); y\ = good0 £h; ti*, draw I.. 3; % upper bar line call * e darc(3, 4, ttfc); % upper bowl £-> = ^1 i ^ — *:i + i ti; j/i ~ y- - Ms; rtsXy = round(r — .^u); bot^t/y^ 0; UH) draw 5 6; % middle bar line call Hf darc(6, 7, t/^); % lower bowl xH — a*; ^ = t/7;t^)draw 2..8. % lower bar line 39
/ / / 7 a3 1 • \ \ 3 ; a2 • / / / \J a4 • / \ \ _' r^ 2- ♦ ^4- _— ._.*:''* J \ / 7 V h. 6 • > LaX 1 »ki I ^^ ♦ ^.-^-^ oJ a2 b$ f i i- ] * l* i i i L c2 d$ 1---- 2 V |JJL( J > k-^J 1 ^ J X \ N V \ \ \ \ \ f ^ ! e3 1 • ] / / / ./ k4/ L—-"" .•'*'' La* . _-_-. • . v,^__. , _. • i 5 ► 40
"The letter C"; if ucSy^O: callcharbegi'j)("C, 14, mclbowl, — .5mc(ph-slant — 5pu), ph, 0, hic(ph-slant — .5pu)); else: call charbegin(^C, 11, mclbowl, — .5mc(ph slant— .5pu), ph, 0, hic(ph slant — .5pu))\ fi; hpen; rt0:ri = round(r— u); x*> = x\\ \tt5X3 = round u; x2 = a:.] = 7.5u; topoJ/2 = /i + 00; bot0ys = —oo, t/3 = y,; «> = .%2, !/-j|; if ucs = 0:^o = i3u; new aa; X\ = aa(x2> £o]; Vl = (sqrt(l —aa-aa))[ffc,!A2l; else: if m < .6/1: y\ = good0 ^/i; else: y\ = good^m; fi; ^ = si; 2:7=2;,; top0y7 = /7, lft0x8 = Ift \X\\ y» = yu t^) ddraw 1.. 7,8.. 7; lpen#; w.| draw (6. )1. 2{ — 1, O } ; fi; hpen; y5 = h — y{\ u\) draw (6. )1..2{ — 1, O}; call x a darc(2, 3, t^>); Wi) draw 4(1,0} . .5(..6). % upper serif % erase spurious part % upper right stroke %main stroke % lower right stroke "The letter D"; call charbcgin(^ D, 14, 2sc,—mcrbowl, ph, 0, mi[rbowl, 0|); hpen; lft.jX| = round 2u; £2 = %\\ top ,yi = /?; bot 11/2= 0; tt»i draw I .. 2; if ucs y£ 0: call " a serif (1, 4, 2,— ucs); call" b serif (1, 4, 2, .5ucs); call " c serif (2, 4, 1,—ucs); call "d serif(2, 4, 1, .Sues); fi; £j = £i = 7u; rt-,^ — round(r u); yj vi; y.i = tfi yi\ Wo d r a w 1. 3; call" e darcfi, 5, ?/;.-,); t^j draw 4 .. 2. % stem 9b upper serif % lower serif % upper bar line % bowl % lower bar line . 41
a.1 1 ci. S 1 ♦ H2 b? r 1 r 1 7 1 b1 • r • .;Lc > 1 I C2 d2 •T ^-•' *2 ^1 .. iji . r • Jtiii- 1 11.« J A ,< H- / ol — -*.-.• • -: ■. >» V i -— tf\ # O tf e:t 1 • . "2 * Tl ' / 1 : / L-- • ^ " H i " j. ^ V/ 42
"The letter E"; call charbegin^ e, 12,2sc, sc — .5mcarrn/c, ph, 0, hie armic); hpen; lft4X| = round 2u; X2 = x\\ top.,t/i = h ; bot.i?/2 = 0 ; w,\ draw 1.. 2; if ucs ?£ 0: call 'a serif (1, 4,2, — ucs); call" b serif(1,4, 2, 5ucs); call . c serif (2, 4,1, — ucs); call "d serif(2, 4, l,.5ucs); fi; new ss; ss = 1.4aspect.ucs.u + eps; i f ss -\-xih, > .25/i: n e iv ss; ss = .25/i • • w^ + c p s ; fi; rt0a:j = round(r— 1.521); x,\ = ar.i + .5u; t/j = t/i; t/i — yj — ss; rtoa:.-, = round(r — 1.25-); '*> = x.\ + 5tt; */-, — y2; !Ai ■=■ «5 + ss; % ste m % upper slem serif % lower stem serif call" earm(l, 3, 4); call "f arm(2, 5,6); *7 = *iJ !/7 = Vs = .5[j/i,V2]; z8 = goo<l07u; h*> draw 7. .8; if ucs 5^ 0: zq = xio = xs; ^ = ia* + -7ss; yio = Vs — .7ss; i f u\o = u^: u*) draw 9.. 10; else: zn = z8 —u; yu = «s; minvr 0; minvs 0; wo ddraw 11{1, 0} . . 10(0,-1}, 8.. 10; ddraw 11{ 1,0}..9{0,J},8..9; minvr .5; mi nvs .5; fi; fi. % upper arm and serif % lower arm and serif % middle arm % middle arm serif % middle arm serif 43
r m 'i < ; • * 7 • ■ :2 2 L •T d2 •T V lbl * -*i ■ * '<' • "^-4 A 1*1 —«■' a |\l « • 3 • r ■ 44
"The letter F"; call charbegin(*F} 12, 2sc, sc —mc{armic — 2.5pu), ph, 0, m/[arrmc,2.5pu]); hpen; Ift.^i = round 2u; Xi ~ X\\ top,tyi = h; bot \\fi = 0; w.\ draw 1.. 2; % stem if ucs y£ 0: call " a serif (1, 4, 2, — ucs); cal r bscrif(l} 4, 2,.5ucs); % upper stem serif call "c serif(2, 4, 1, —ucs)) call "d serif (2, 4,1, ucs); % lower stem serif fi; new ss; ss = lAaspcctucsu + cps; i f ss -f- u*s > .25/i: newss; .ss = 25/i — t^o + e p s ; fi; rtoarj = round(r -- 1.5u); a?i = 0:3 -+- -5u; yi — yi; yi = yj — ss; call " earm(\, 3, 4); % upper arm and serif x7=2i; yi = y* = .5(1/1, yi]; s« = good()7u; t^o draw 7.. 8; % lower arm if ucsy£ 0: z<) =: xio = a&; W)= £fe + -7ss; y)0 ~ yfc — 7ss; i f wo = ti^: ti>o draw 9.. 10; % lower arm serif else: x\\ = x^ — u ; t/cf = mi minvr 0; miuvs 0; u\) ddraw 1 1{1, 0} 10{0,—1}, 8.. 10; ddraw 11(1,0} .. 9{0, 1},8.. 9; % lower arm serif minvr .5; uiinvs .5; fi; fi. 45
G H -— ♦ -»\ ...-*■" " .v "*• ""^•■v "\ II--""' .-"' A // 1 a3 1 i. s \ \ v \ iy\ "\ . \ V X hi X*--i \ 7 r* V V e Q ii»a : ■■ ' • d • >2 ci T» • v f il li l 1 n ..--' s\ .. ,12 -•T 46
'The letter GM; if uc.s— 0: if m < .6/1: call c/iarbcgin^G, 14, mclbowl, sc — mc( ^ph-slant + (.sc - 1.5)pu), ph, 0, (1 — mi)( *ph-A7ant+(sc—1.5)pu)); else: call charbcgin("G, 14, /nc/bovvi, 1 — mc(px-slant + (sc — I -5)pii), ph, 0, (1 —mi)(px-slant + (sc — 1.5)pu)); fi; else: call cJiarbegm('G, 14, mclbowl, s c — mc(ph s/ani + (sc — l.5)pu), ph, 0, (1 -- mi)(ph-s/ant+ (sc — 1.5)pu)); fi; hpen; rtoXi = rt \Xi) -- round(r — 2u); IJV>£;) = round u; X; — x | — 7.5u; topoi/2 = /i+ 00; boto«i = --00, ?/.j = y(; Mi = -I5[j/2, l/-il; if m < .6/1: y{— good,, '\h\ dsc: t/| ~ good^m; fi; r<> = x\; ia) = good(i J (e, m\\ xq = xnyt if ucs y£ 0: x, = x,; top0</7 = h\ irt0a:.s = 1ft |X|; yH = t/i; tuu ddraw 1 . . 7, 8 . . 7; lp«i#; «/t draw (6. . )l. 2{ —1,0}; fi; hpen; wi} d r a w (6 . )l. 2{—1, 0}; call" a ciarc(2, 3, wr>)', \f u\) = wA: m draw 4{1,0}..9{0, 1}; botot/10— 0; draw 9.. 10; else: yM = !/io = yu-■= iw; IftoXf 1 = lft.jXk); rtdXi^ = rtoXij— rt 1X0; botoi/12 = 0; tut) draw 4(1,0} 1 1 . .9(0,1}; w.\ draw 9.. 10; ti*)ddraw 13. 12, 11(0,- 1} . . r2(2(xr2 -- x, 1), yvl — y\\}\ «; if ucs < 2: call . b scrif(9, 4, 10, -2); else: call H b serif(9, 4, JO, —ucs)] fi; if tics>0: call *cserif(9, 4,10, + 1); fi. % % upper serif 6 erase spurious part % upper right stroke % main stroke % lower right stroke %storn and spur % lower right stroke % % % lower stem spur serif 47
i eh !*- a2 b2 ! 5 trl._L_i3.. «* e2 f? *.2 d.f «tt- *2 h.f —*' 4 **A f? ) , y j-CS. a tt » | H m ^X|| a2 b: ! i I i \ t l j 1 i 1 ? > .' / [y.s / ? r, i *i P*1 " » a2 b2 »# 1 i 1 <=2 : ft di •T \ 2 • >t 9. 48
"The letter II"; call charbegin(*H, 13, 2sc,2sc — .5mc-wlftm,ph, 0, hie rstem)] hpen; lft \X\ = round 2u; Xi - X\\ rt.\X.i = round(r — 2u)] x.\ = xyt top ,t/i = h\ y{ = yy bot ij/2 = 0; j/2 = 1/4; Wi draw 1. .2; % left stem tu.i draw 3 .. 4; % right stem if ucsy£ 0: call "a.serif(1, 4, 2, — ucs)] call " b serif (I, 4, 2, ucs); % upper left serif call " c serif (2, 4, 1, — ucs); cal 1 *dserif(2. 4, l,ucs); % lower left serif call %e serif (3, 4, 4, — ucs); call " f serif (3, 4, 4, ucs); % upper right serif call "g srrif(4, 4,3,—ucs)] call " h serif(4, 4, 3,ucs); % lower right serif x$ = x\\ xa = xy y5r=r.y^ = .5/1; W{) draw 5 . .6. % bar "The letter I"; call charbegin(* I, 6, 0, — .5/nc(p/i -slant— .5pu),ph, 0, hic(phslant — .5pu)); hpen; a^ = a>2 — good, .5r; top,yi = h ; bot.1i/2 = 0; w.j draw 1.. 2; % stem new ss; if ucs 7^= 0: ss = ucs; else: ss = 2 —.5w.[/u] f»; call 'a serif (1, 4, 2, — ss); call * b scrif^, 4, 2, ss); % upper serif call "c serif (2, 4, 1, —ss); call "dscrif(2, 4, 1, ss). %lowcr serif "The letter J"; call charbcgin(* J, 9, 0, 2sc -- .5mc-rstern)ph) 0, hic-rstem); hpen; rt {x\ — round(r — 2u); top.,t/| —/7 ;yi~-2h\X2 = x\\ w.[ draw 1.. 2; % stem if ucs y£ 0: call . a serif ( I, 4, 2, — ucs); call" b serif (I, 4, 2, ucs); % serif fi; If to* 1 — lft ,x-, _- round u; 3/1 — ?/-, = <\/i; a:j =-- .5[x|, x2]; bot0yj = —00] call *car<:(3, 2, «;,); % tail u»0 d r a w 3{ —1,0} . . 4(0. 1}; epen; W\ draw 5. % bulb 1 49
aJ~ T n T—^ ^T _— r a2 b2 7* ♦" r I ] 5 I * | r I ] c2 dd > U-- 2 • i i •7 Ji 1 4'fd *~ * j*2| /•V"' // /■/ „ /A ' z\ l y h \ f , \ \ \ \ \ \ J? JM •7 Lai. 1 L h h*-r*. * r7 *■» i. l2 b2 •T £2 d± *T -"' O V ptji^. f.„,vr e" e: • / —-^ • */ ♦y I 50
"The letter K"; call charbegin("K, 14, 2sct 2sc — .5mc(phslant -\- (.5ucs -\- 2sc—1.5)pu)f pht 0, hic(ph-slant + (.5ucs -f 2sc -- 1.5)pu)); hpen; 1ft \X[ = round 2u; X\ = Xi = x$] tWxj = rt()X,\ = round(r — 2u); top,,yi — top()y.| = h ; botty; = botr>yj — 0 ; yr> = \h] new aa, bb; % auxiliaries for intersection of lines rtr,^ = aa [rt5x,, rt5x;,]; y« = aa[y{, y{\; Ttr,xv = bh[xr,t x.|]; t/u = bb[j^, y4j; ti^5 draw 6.. 3; % lower diagonal lpen#; t**> draw 4.. 5; % erase excess hpen; mi draw I..2; % stern uh) draw 4.. 5; % upper diagonal ifucs^O: call "a scrif( I, 4, 2, — i/cs); call" b scrif( 1,4, 2, ties); % upper stem serif call * c serif (2, 4,1, —ucs); call "dserif(2, 4, L,uc\s); % lower stern serif call "e serif(4, 0,5,—ucs); call" f serif(4, 0, 5, .5nc\s); % upper diagonal serif call "g serif (3, 5, I,—ucs)] call "h serif (3, 5, 1, .Sues); % lower diagonal serif fi. "The letter L"; call charbegin("L,l2, 2sc9 sc, ph, 0,0); hpen; 1ft iX| -- round 2u; a^ — x\] top.|j/] = h ; bot.iy.; = 0; w.\ draw 1. . 2; % stem if UCS ?>£ 0: call 'a .serif(I, 4, 2, -- ucs); call" b serif (1, 4,2, ucs); % upper stein serif call * c scrif(2, 4, 1, —ucs)] call "d serif (2, 4, l,.5ucs); % lower stem serif fi; rtoSu = round(r -- l.5u); a:.i -~ ar:j + .5u; yj xji] y.\ = Ui + 1.4 aspect-ucs-u-f- eps; call "e ar/n(2, 3, 4). % arm and arm serif 51
w • lis • 1 I i t f r t i J i i i. k . • • • c2 • 2 \ \ \ « \ \ \ \ \ \ \ \ \ \ \ .sr .♦ ,• ft w i I r / / _? i / / / / / i 1 I—-l 6..13- di • r e2 f: ' 4 • 2""" ' > 3 *4 r r- a f -x F j [ [ i L & L 9 - . • ^ ic-2 \ 2 • \ \ <-& [\ \ I 1 k \ \ \ \ \ d 1 1 A 1 !•" • . >1 . \ \ \ >f" ~ i | I y t k \ N S ■-.4 J 6 52
'The letter M"; cal I char/>egin(~M,16,2sc,2sc —.Smc-rsiem, ph, 0, hicrstcm)) hpcn;lfto£| — round 221; x\ = rr2; top0j/i — ft ; botoi/2=0; u>0 draw I . . 2; rt |X*j = round(r — 2u); z.j = x.\\ topjj/j ■ /7 ; bott?y.|= 0 , Ift !^5 — lft()X|; lftoaij—•■ Ift \x-y9 y\ =- yr>\ IA\ —y:\) x 7 — z5 ----- z<i — x8; 1ft ,i7 — lft()x8; hot ,1/7 =0; ?& = t^; Wj draw 5.. 7; rpcuf; iu.| draw 8. .6; % erase hpcn; u»q draw 8. 6; w\ draw 3 .. 4; if ucs?£ 0: call ' a serif (2, 0,1, -ucs); call . b scrif(2, 0, I, ucs); call . c serif (5, 4,7,— ucs); call ^d ser/T(3, 4, 4, ucs); call " e .serif(4, 4, 3, —ucs); call * f serif (4,4, 3, UCS); fi. % left stem % left diagonal excess at lower right % right diagonal % right stem % lower left serif % upper left serif % upper right serif % lower right serif "The letter N"; call ch;.irbegin("N, 14, 2sc,2sc— .5mcrstcm, ph, 0, hicrstcm)] hpcn; lft()Xt= round 2u; Xj — xi\ top0yj = h\ botot/2 = 0; tuo d r a w 1. 2; % left stem rtoxj =^ round(r — 2u); £j ■•= xx\ top()j/i --■= /7; boto?/.| = 0 ; Ift 1X5 = lft0Xi; Ift5a<i —- lft0x:,; xj\ — y->; tfc = y.i; ti;-, draw 5.6; % diagonal rpcn#; wj draw 4.. 3; % erase excess at lower right hpen; Wo draw 4. 3; % right diagonal if ucs7^ 0: call 'a serif(2, 0,1, — tics)] call * b serif (2, 0,1, ucs); % lower left serif call ' c serii'( 5, 5, 6,— ucs); % upper left serif call * d serif (3, 0,4, - ucs); call "e serif (3,0, 4,ucs); % upper right serif 0. 53
y J _LUJJJ ■" \ / A kl / / • / 1 / r i a3 1 ' 1 i \\ - \ &4 • \ k « -a i ^f 5^ » "^ ^ 1 J ^ ^J \ b2k 1 \ * \l y \ X . b3 j • 1 / / / ►b4 • / / / \ W±- [T, p- F 1 ill , • jj *2 b2 i f ! L i 1 | 6 I i i i i f < . 1 I 52 di • •T ■r^ 2 X^ 1 \ . • ft *sv ^ Ke.^ \ \ 7 i e3 ,' y.4 / ' ^ -"■ _.'•' i i » 5 54
"The letter O"; call charbcgin(*Q, 14, mc lbow^—mcrbowliph, 0, m/[r/>owl,0]); hpen; i f fixwicith 7^ 0: new save; save = sqrttwo; new sqrttwo] sqrttwo = sqrt save; % supcr-supcrcllipsc lft5x2 = round l.5u; else: lft5X-2 = round it; fi; X{ = r — xi; % axis of left-right symmetry topol/i — ft +00; botoy-2 =-00; 1/3 = 2/2; £3 = r — x^; call . a darc(l, 2, w5); % left part of bowl call * b darc(l, 3, t^); % right part of bowl i f fixwidth 7^ 0 : new sqrttwo; sqrttwo = save; n. "The letter P'; call charhcgin(~ P, 12, 2sc,—mc(.75phs/ant — 3pu), ph, 0, nji[.75p/i-.s7ant -- .5pu,2.5pu)); hpen; lft.jn = round 2ti; a^ = ^ii top.,yi = ft ; bot 13/2 — 0; w4 draw 1. .2; %sfem if ucs -7^ 0: call 'a serif(\,4,2, — ucs); call' b serif(l,4, 2, .5ucs); % upper serif call " c serif (2, 4, 1, —ucs); call "d serif (2, 4, 1, ucs); % |ower serjf fi; x,i = x,\= 7 u ; rtr,Xr, = round(r — u); xq = x\\ U.i = yy\ Vu — U\ = W = goodc .5/i; ivq draw I.. 3; % upper bar line call^e <iarc(3, 5, W5); % bow| tvo draw 4.. 6. % |ower bar |ine 55
/ / i a3 ( ■ \ \ \ • / / • ^ V 5 4 -** < ► • 1 A. v \x / V \ i i f b4 • 8 9' _ \ i : b3 ♦ ,/ / » » _ i / \\ 56
"The letter Q"; call cbarbcgin("Q, 14, mclbowl,—mcrbowl, ph, pdd,mi[rbcnv/,0]); hpen; if fixwidthy^ 0: new save; save = sqrttwo] new sqrttwo] sqrttwo = s<\rt save; % super-supercllipsc ift,iX'2=T round L.5u; else: lftsx-2 — round u; fi; xj = r— Xi; % axis of left-right symmetry top()t/i = /7 +00; botojft =-00; y 3 = y2; x3 = r — x2; call " a darc(l, 2, W5); % left part of bowl call " b darc(l,3,w>); % right part of bowl x\ ^x3 = 4.5u; y.x = 0; new aa; x5 = aa[xi, x2]; t/-> = (sqrt(l — aa-aa))(.5t/i + -5*/2> Sfc]; xg — 6u; t^i = .1/* + l.5u^; ^ draw (4.. )5..6{1, O}; % left part of tail vpcn; x7 = x$ = xc> = Llu; bot8y8 = botcj/f) — —dci; top0t/7 == top8y8; x\{) = round |.3rz; top8?/io = 0; tokjddraw6{l, 0} 7{L, 0}, 6{l, 0} . 9(1,0}; % middle part of tail u*) d r a w 8{L,0} 10(0, L}; % right part of tail i f /ixwidth=^0: new sqrttwo; sqrttwo = save; fi. 57
al 1 1^1 rT? . ~^, < , -il • • > 6 ■ '? 2 • •T di •T V ii .VQfr.-^ 'Jsi-.il L-€i * , '* .J*. A ■ . i **v 1.44 , \£ ^N. 3 • L / 5 iV r - * * "" 1 H 58
' The letter R" ; hpen; if ucs = 0: call charbegin(^R, 12.5, 2sc, —mc(.75ph-slant— 75pu), ph, 0, mi[.75ph'slant — .75pu,0]); vtzxs — round(r — .75u); else: call c/iarbegii)("R, 14, 2sc, 0, ph, 0, .75p/is/ani —1.5pu); rtsjxs = round(r — 2u); fi; lft/ja:| = round 2u; £2 = *b top4yi = h; bot^ = 0; w.\ draw 1. . 2; if ucs ?£ 0: call 'a .serif(1,4, 2, — ucs); call "b serif (1, 4, 2, .5ucs); call % c serif(2, 4, 1, —ucs); call "d serif (2, 4, 1 , ucs); fi; £3 = *1 = 7 u ; xq = x\; to = vi; 1* = y \ = wj = = goodG .5/1; u>o draw 1.. 3; call % e darc(3, 5, w^)\ wo draw 4.. 6; if ucs = 0: rt 1X7 = round(r — u); bot.1i/7 = 0; w.\ draw 4.. 7; else: xs = good5(x3 — 1 . 2 5 - ); IH^s = Ifto^l rt5^ = rt0^; 1/7 = ys = i/9 = :j[y2,yi]; Vi:i = fill/2, yi]; xi:] = l/sqrttwo[x4l a%j]; draw K*|4{ 1,0} . |.25[u*>, t/ft]|l3{aa — x ,, §(ys —yi)}. . K#|8(0,-l}; yio=yn = yi; t/12 = -25[t/2,yi); x,0 = .5(x7, X|2]; x, i =.5|t<),x,2]; rtoXi-2 = round(r — .5u); UH) ddraw 7(0, -1} . , 10(1, 0} ,. 12(0, 1}, 9(0,-1}.. 11{1,0}. .12(0,1}; fi. stem % upper serif % lower serif % upper bar line % bowl % lower bar line % diagonal stroke % upper tail % lower tail and hook 59
a' i i s* .«■■■ , v. \ V cr "rr^L • •.,_ -<N Jlo ri X^'l V 1 \ \ 1 X [ a3'^U 1 3 •^J a4 \ \ * \ s ?)' a NX 6 • f. > SJ>7*T"^ i4 Jy '- / \ I i r \ r9 A 60
% lower left stroke % upper right stroke % lower left stroke % upper right stroke "The letter S"; call charbegin(*S, 10, 0,—.5mc(pb-slant— 5pu), ph, 0, hic(ph-slant— 5pu)); new tttjg; M)9 = round .2[if*), m-i]; hpen; top0yi = h + oo; botoj/-, =—oo; £:* = -5r; t/j = .52/i; lft99X2= round u; rtggz.-i = round(r— u); if ucs = 0: X[ =■■ xs = xj; xo = x<i\ x7 = x^; Mi = i(top00,i/jl; 1/7 —'Jbotofc,^]; VKi draw 6{x5 — Xo, 3(j^ — y0)}. 5{ 1, O }; draw 7{x, - x7) 2(y, - t/7)} . I {-J, 0}; else: i f w<\ = w.\: x\ — Xf, = X3; x$ = x2; x7 = x4; Mi = HtoPo Ojtol i ^ == ;l, [botoh, yj]; U'o draw 6{x5 -- Xr„ 3(j/5 — ?/G)} - 5{ 1 , 0}; draw 7{x, - x7, 2(y, - - y7)} . l{ —1, 0}; xs = x<)--= Xi$; yc) ----- y^ (■- ucs-aspect u + eps; boto^=0; Sio = Su = x7; J/11 = J/7 — ucsaspccfcu — eps; top0j/|0 = /t; u?o draw 8. 9; % lower serif draw 10.. 11; % upper serif else: x\ = x.* - - .5u; x-> = x:j + -5u; xo = x2; rt0X7 =rouiid(r— I .5rz); Mi = goo<lf> J/i —1; 1/7— good, jj/i-|- 1; boto?#= 0; y<> = ?a>; x8 = x«; rt ,^5 = rt0xo; top0t/io = ^ ; l/i 1 = 1/7; 3m = x7; Ift 1X7 = Iftoxn; ttV) ddraw 6. . 8, 9 .. 8; ddraw 7.. 10,11 . . 10; rpen#; w.\ draw 6{0, —1}..5{ 1, O}; lpen#; w{ draw 7{0,1}.]{ —1, O}; hpen; tU[) draw 6(0, —1}..5{1, O}; draw 7(0,1} . . 1{ -1, O}; fl; fi; call 4a sdraw(l, 2, 3,4, 5, w*i<]fround(pixclsp\vv aspect-{ blacker), —/i/(50u)). % middle stroke % lower serif % upper serif % erase excess % ditto b lower left stroke upper right stroke • 61
: 5 /• r 1 1 I Kk • • • ; fi ; / / > / 9/ 1 • r "" b-i-^ 3l2 b2 [• c :2 d b A 1 *■*—* L' 2 ^~dJ >!-*..t. ■ •-- ♦ J 7\ ry°A 7 I \f e' • i LL 1 1 11 I • l2 b2 I • f ; I t i \ ' \ L b^ - ' i V 0 I***1*1* L-^ ^ ,.<j i i 1 T < i ^1 T =3 ' ► 1 \ \ \. i c-1 r 1 r • \ i 62
m "The letter T"; call charbcgin^T, 13, sc -\-.75mcph slant, sc — mc(armic — 2.5pu), ph, 0, /ni[armic,2.5pu]); hpen; X\ — good¥l6.5u; xi = x\\ top^yi = h\ bottfji = 0; u/.i draw J.. 2; % ste if ucs 7^ 0: call 'a serif (1, 4, 2, — .5ucs); call "b serif(1, 4, 2, .Sues); % upper bracketing call "c serif (2, 4, I,—ucs); call "d serif (2, 4,1, ucs); % lower serif fi; new ss) ss — lAaspcctucsu + eps; if ss -j- t/^ > .25/i: new ss; s s = .25/i— «^ + c p s ; fi; rt0xj = round(r — l.5u); Zj = x:i + .5u; yj = y\; y.| = y.i — ss; IftoXi = round 1.5u; x^ = x$ — .5u; y:i = yi; jaj = yr> • • «s; call "oarm( 1,3,4); %upper right arm and serif calP f arm(l,5,6). % u p pe r left arm and serif "The letter U"; call c/iari>egin(^U, 13, 2sc(i — mi) -(-• mc(.3phslant + pu)t2sc — .5mc- rstctn, ph, 0, hie-rs tern); hpen; if Cixwidthy^ 0: 1ft |«i = round(l.Su); rt()xr) = round(r -- 1.521); else: I ft \X\~ round 2u; rtorr-, — round(r — 2u); fi; x2 = xi) X\ = x«;; «;j = .5[x2,a:i); top ,yt = h) y-, — y\) y2 =^ y\ — .3f>h; bot0y.) — —oo; if ucs ^ 0: call xaserif(l,4, 2, —ucs); call *bserif (l, 4, 2, ucs); call " c serif (5, 0, 4, — ucs); call "d serif (5,0, 4, ucs); fi; u>4 draw 1.. 2; call % e arc(3, 2, ti>t); <A) draw 3{ 1,0}.. 4(0,1}; draw 4.. 5. % left serif % right serif » upper left stroke fc lower left stroke lower right stroke upper right stroke 63
1 a i i, v-< * 1 bl •7 xa2 b2| • * \i \ \ \ \ i ^ / ^i> CJ1 NT I 7 // i \ 7 \ ■3/2 _a,. T» J [ 1 V 1 • 2 > \ \ h bi" \ I 3 \ \ \ \ <-l >k *iIhi 1 // N W2 J ♦ • "c2 d A \ V \ \ \ \ \ V \ \ */, \V ft t 1 ! 3 «l V ft 71 7771 f.l 64
'The letterV"; call c/iarbcgin("V, 13, 2sc + mc(ph-sfani-f-.5pu),2sc — mc(rv — 2.5pu), p/7, 0, /ni[rv, 2 5pu]); hpen; lftr>xi = round 1.5u; rtos.i — round(r — l.5u); #2 — £| — £4 — X3; lft()Ij = lft.lX«2; topsi/j = /7 ;y.\ = u\] bot.v{/2 = — o\ y\ = m\ iu$ draw 1.. 2; % left diagonal stroke rpen#; wj draw 3.. 4; % erase excess at lower right hpen; wq draw 3. . 4; % right diagonal stroke ifucs^O: call 'a serif(1, 5, 2,—.5lies); call" b serif (I, 5, 2, u<:s); % loft serif call "c serif (4, 0, 3, —lies); call "d serif (4,0, 3, .Sues); % right serif fi. "The letterW"; call cbarbegm("W, 18, 2sc -|- mc(plrslant -\- .5pu), 2sc—mc(rv- 2.5pu), pht 0, m/[rv,2.5pu]); hpen; Ift^^i ^=^ round 1.5tx; rto:c<»-- rt^xio; £( 1 — x'io = X\) — X|; rto^i 1 — r — 1.5u; %xo,X[o) and ^n are approximations to X\)x-), and a^. X-, - - X\ = a^i — xi — X7 — x.\ - xh — x} = round(£|o — £|); % The idea is to draw Lwo V's displaced by an integer amount. top5yt = h\ bot37/2 = —o\ Ui — U> — W " Vi\ V\ " \h = V* — y\\ vt{)X{ = rt3.T=5; lfto^.j — lftj^; xi — X\ = x.\ — x;J; wi draw 1.. 2; % first diagonal rpen*; w-> draw 3. .4; % erase excess hpen; tun draw 3.. 4; % second diagonal Wry draw 5.. 6; % third diagonal rpen#; «;-, draw 7 8; % erase excess hpen; u\) draw 7.. 8; % fourth diagonal if lies 5^0: call 'a serif (1,5, 2,—.5ucs); if tiA)= w->: call *bscrif(l, 5, 2, ucs); else: call" b serif (I, 5, 2, .5ucs); fi; % left serif call Hc serif(5,5, 6,— .5ucs); call "d.serif (5, 5, 6, .5ik;s); % middle serif call ^n serif (9, 0, 7, — (K\s); call - f scrif(8, 0,7,.Sues); %riglit serif ft. 65
+1—U- ^ ^2 b'i ^ \ \ \ \ v- }fr .// A i 3 VJ // K \ \ \?2 cha di—i 4 V2 bS \ \ 8?/ // // \9 4/ J 1 / / /[ rra C2 d2 A 3 66
"The letter X"; call c/jar/>egin("X, 13, 2sc,2sc — .5mc rv, ph, 0,/iicrv); hpen; lftfj^i = r o u n d l.5u; rt^x.i --- round(r — l.5u); £.} = 2i; £.| = %i\ top.-,yi =■= /i; botr>yi =_- 0; y2 —. y,; y, = y,; u>5 draw i.. 4; u\) draw 3.. 2; if ucsy£ 0: call 'a«cnT(l, 5,4, —.Sues); call * b serif (I, 5, 4, ucs); call . c serif (4, 5, I, —ucs); . call "d serif (4, 5, 1, .Sues); new ss; ss =-- .5(wr, — wt))/u; call " e serif (2, 0, 3, ~ ucs — ss); call . f serif (2, 0, 3, -Sues + ss); call"gserif(3,0, 2, --.Sues ••• ssj; call . h serif (3, 0, 2, ncs -f ss); fi. % upper left to lower right diagonal % lower left to upper right diagonal % upper left serif % lower right serif % correction to ucs makes u'o like tu~, % upper right serif % lower left serif "The letter Y"; call charbcgin(*Y, 13, 2sc -j- mc(phsU\nt + 5pu), 2sc — mc(rv — 2.5pu), ph, 0, iT)/[rv,2.5pu]); hpen; lft-».C| --round l.5u; rto^ = roiind(r — !.5u); top-y, —• top0y2 = h\ rtjXcj — rt()X|.t; Ju - - £| — x; — x\\\ % approximations before rounding x.i — Roodr^,;,; rtr>x:i — rt |3b — rt0a: i; lftoxr, — Ift^xj; Ui = V<\ = !/r> ~ !/■) ^: .'•S/i; V7 — y* = -5[y>, ia>J; bol ry-, —0; x.5 = ^j = s8; lft0X7 = Ift |X8; Wr, draw 1.. 3; % left diagonal minvr 0; minvs 0; wo ddraw ${xA — x\, yj -- y\} .. 7{0, — I}, 6.8; % transition minvr .5; minvs .5; w.\ draw 6.. 5; % stem tt*) draw 4.. 2; % right diagonal if ucs 7^ 0: call ' a serif (I, 5, 3, —.5 ties); call " b serif(1, 5,3, ucs); % upper left serif call . c serif (5, 4,6, — lies); call * d serif (5,4,6, ucs); % lower .serif call " eserif (2, 0, 4, - ucs); rail . f serif(2,0,4,.5i/cs); % upper right serif fi. 67
i 3 • ' ► • • ■".".•._■ • ^ ! al t / 4/ •/ l2 s } f / / / / / i / / / / / * / / i / / / / / / z1. -tTP' - b: • < i k/ u • . • ■ ■ _ ^ ... ; _ •t > ) \ \ > c 4 11 • ( 1 1 ^ ^ K- » ^ ) !■ f t i 4 • 8 • 14 • 5» 1 1 • 5 ■\ 68
"The letter Z"; call charbeg/n("2,11, 0,—.5/nc(p/i-.s/ant — .5pu), p/7, 0, hic(ph slant — 5p(i)); hpen; lftr^2= round u; rt^i -- round(r — u)] top^yi ^= h ; botr,t/2 = 0; new ss] ss = l.4aspcct ucsu -f- eps; i f ss -)- wk > .25h: new ss; ss = .25h — wq -|- eps; fi; lftoz.i— round l-5w; z.j = x-j — .5u; y-j = yi; y.| = y.j — ss; rt()Xr> = rouiidfr — 1.5-); zq — x-> -\- .5u; !/-, = 2/2; Mi — y> + ss; call "a arm(i, 3, 4); % upper arm and serif wry draw 1. .2; % diagonal call ** b arm(2, 5, 6). % lower arm and serif The file romanl mf % This lower-case roman alphabet was prepared byD E. Knulh in November, 1979, % inspired by the Monotype alphabet used in The Art of Computer Programming. % Its spacing is intended for text only. % Character codes '141-'172 are generated. "The letter a"; call charbegin(^ a,9, 0, sc, px, 0, ^(pc, px] slant + 5pvvi + (sc — 2)pu); epen; Jftj^i =round l.25u; if top;J(topjtop6e + 2) > .9[e, m]: top3t/i — .9[e, m]; else: y\ = top jtop0e + 2; fi; wi draw 1; % bulb hpen; lft0a:2 = lft )X\; Vi — y\\ *.\ = 4u; top()y.3 = m + oo; x,i = xj = good,(r—2.511); l/-i = 4le» m^ tAidraw 2{0,1} . 3{ 1, 0}; call "aarc(3, 4, tx>i); % shoulder if ics= 0: botij/5 = 0; w\ draw 4.. 5; % stem else: y5 = .2[top! 0, c]; rtox* = .Sfrti^, rtoary]; botot/B = 0; rto£7 = round(r — .5u); yi = e/3; W\ draw 4.. 5; % stem draw K#|!>{0, —1} . |i«)#|6{ I, 0} .. 7{0,1}; % hook fi; *8 = *a\ Vh = e; a.) = 4u; yc> — .9[u^, <&]; xu) = x\ \ + .25u; yio = -5[w^, y&|; *i, — good2 1.5u; y\ \ -■ .2f«\», ?/.|; rri<; = 3u; bot0y,2 = -- oo\ x\ \ — Au\ yu = .01.%,;, j/*]; a:, , = xH) y, | = .3[t/|-2, !/s]; ^n ==■• r — u; yi j ~e; draw K|8{-1, 0} . |«4)#|9.. |.8[ir,„ «*]|10 .. |w2#|l l{0, -1} . . |.7[tc*)f ti^]| 12{ 1,0}.. K*|13 .. 14(.. 15). % bowl 69
al 111 M | —t • 4 • 7 a 3 A • ■■ 1 / \ N 5- ♦ La- * V 1 y * ! \ t b4 • b3 • / 9 / u * a3 • \ 4 y a2 ♦ / i i ♦ V 3_ • { L 2 • • ^ 7 >
•The letter b"; call charbegin^ b, 10, sc, 0, ph, 0, .5px-slant + iric); hpen; Xi — x>2 = x<\ --■ good, 2.5u; topjj/i = h\ Ift0x7 = 1ft {x{; *;* = rr7; x5 = % = .5(r + u)\ rt0zs == rt|X2; botoj/j == 0; y.j = .5[m5, yrj; top0y5 = rn + oo\ botoft = — °o; new aa; rt 1Z2 ==aa[ato, x,j]; Vz = W = Vs = (sqrt(l -- aaaa))[?/,, t^]; if /cst^O: call ^ a serif (1,1, 2,-~ics); fi; Wi draw 1.. 2; u*> ddraw 7.. 3,8(0, -1). . 3{rr3 — x*t 5(yi — %)}; u\,draw6{— I, 0} . 4(0,1} . 5{ 1,0}; i f a>2 > 1.5u: rt22x) = round(r — .75u); else: xq == good.^r — l.5u); fi; 1/9 = yt>; call "b darc(5, 9, 102). % where bowl meets stem % upper serif % stem % spur % loft part Of bowl % right part of bowl "The letter c"; callcharbc£i'n("c,8, 0, 0, px, 0, pxslant - pu)\ epen; rtjzi = roun<l(r — u); if top:i(topL,top0e + 2) >.9[e, m|: top:{j/i = .9(e, m\\ else: yi = top jtop(ie + 2; fi; toj draw 1; hpen; rt()X2 = rt:jxi; yi = Vi; *;* — Xj = .5(r + u); top(,t/j = m -|- 00; wq draw 2(0,1} .. 3{ — I, O}; i f w-z > l.5u: lft-^xi = round(.75u); else: x\ ----- good2 1.5u; fi; y, = y-,; bo toy-, = — 00; call "a darc(3, 4, 102)) i f ujn = iwi: x(i — x2; x7 -- x-} — x-> -- xA\ y,- = .5(y.j, j/-J; new aa; ^ = aa[x5, x7|; JA> = (sqri(l — aaaa)){?/7, j/;J; else: lfto^o = rto^; M) = 5e — 1; x7 = x^\ yj = e\ fi; wo draw 5( l, 0} . 6(.7). % bulb % shoulder % stroke point 71
i-5- -aa. '« / / I. i I ~] c3 \ CAT X i2 xk' bi ^U i 2 31 ,b / « 4 -' K-c 1 , / / a i '■^""i \ u ^1 i ♦ J ,,^" k n aa i ♦ 1 3" • r al • " i K »• t i aa2 • • • /'" 4 • Lb a2. ♦ "i ) 2 I1 9 72
"The letter d"; callcharbcgin(*01,10, 0, sc, ph, 0, ph-slant + .5pwi-\- (sc — 2)pu); hpen; X| = x2 = good^r — 2.5~); toPiyi = fy bot,y2= 0; itfi draw 1..2; % stem if/cs^0: call 'a serif (lf I, 2, — /cs); % upper serif call "b serif (2, 1, 1, /cs); % lower serif fi; l>otoy:J = -00; topolfi = m-f 00; 1/,| =.5[y.j,y->]; x3 = x5 = .5(r — u); Xj = x2; «*) draw 3(1,0} .. 4(0,1} .. 5{—1,0}; % right part of bowl i f i*>2 > 1 5u: lft2x<} = round .75u; else: X(; = good2 1.5a; fi; »* = -»; cal1 " c darc(5, 6, u>2). % left part of bowl "The letter e"; call c/)arbeg;n("e,8, 0, 0, px, 0, peslant-|-kic +.25pu); hpen; x:j = .5r; top()t/j— m + 00; y\ = e; y2 = .%-),!/;*]; if w>2 > 1.5-: 1^2^= round .5m; ft|X| = round(r — .5u); else: x>2 = good; 1.25a; X| = good,(r— 1.25-); fi; botolfe = — °°; xa-"-- ^ + -5u; call ^aarc(3, l,tt>i); % howl calPb arc(3, 2, u>2); call * c arc(5, 2, w2); % stroke new aa; yx = y.\ = **[*£, j/j]; a:;— 1 = (sqrt(l — aaaa))[xJ; x2]; tun draw 4.. 1; % bar i f wo = w\: xb = xi; x7 — x.-, = xj — x:J; 1/7 = Jfe; new an; X(i= aa[xj, x?J; Mi = (sqrt(l — aaaa})[y7,y-,]; else: rtox^j = rt2X|; X7 = %; sa* = 5e — 1 ; y? — e; fi; Wi> draw 5{1, 0} .. 6(.. 7). % point "The letter T; call charbcgin(" f, 6, 0,0,ph, 0, ph-slant-\- pu); hpen; X| = goodj 2.5u; if fixwidth=0: rt:ix2 — round(r + .5u); else: rt *x2 = round(r — u), fi; epen; top;Jy2 = .8[m,/i]j call 'a fsirofce(2, 1); % bulb, shoulder, stem, and serif cpcu; topU)y* = m\ y\ — yj; IftioXj = irtjx, — u — eps; rtl0xt --■= rt,X| + u + eps; win draw 3.. 4. % bar 73
Nl*' S% 19 cm ' -*,*--i-^i.8N I nil it 74
"The letter g"; if varg =0: % the following program is for a 'classic' g shape call charbegin(*g,Sf 0, 0, px, pd, px slant + .5pwiii — pu); hpen; xj — good! 1.5u; x2 = good, jfr; x, — x3 = x2 — x\\ top0t/i == m + oo; J/2 = y:i—" round 5e; call 'a <iarc( 1, 2, wi); call " b darc(l, 3, W[)] % bowl x.\ = x-2 — u ; y,| = e; xr> = l/j>qrUwo[xi, x2]; y-, = l/sqrttwo[.5yi + .5y2, yi]; x$ = x 7 = r — 1.5tx; new \iX)Q\ wou= round .5[u^,w%{\; cpen; tope;yr, = top<)()y7 = m + 0 0; ti>)<) draw 7; left draw (4. )5 . 6(1, O } ; % ear vpen; x8 = x2; y& = e; xo = l/sqrttwo[xi, xj]; y> == ]/sqrttwo[.5y{ -f .5yi, yj]; zjo = Xc)', yin = yu= good, 0; X\\—x\i — .5r; xvi ~ good0(r — u)\ Mn = .5[bot8yu> top(iyi3]; bot(iyi;> = — d — oo; draw (8.. )|u\i|9..K#|10{l, 0} . U{1,0}; % left part of link top8yi i = top(iy,5; x,.- =-■ xUi = x,,; bot8y,, = bot0y,G; xi7 ■-■■- l/sqrtt\vo[x[r)i xl2]; yi? ~ l/sqrttwo\y{2, y^]; xis == l/sc/rttwo[xib> x,2]; yi8 = l/sqrawo[yi-2, yiej; hpen; u\) ddraw 15(1,0} I7(xi<2 - - xj ^ y12 — yr>} 12{°, — I}, 16{l,0}.l8{xr2-xi(),yl2-ylb}. . 12(0,-1}; % right part of link call "carc(l3, 12, u\))\ % right part of tail new uajo; tixji)1^ round .5[iub,u;i]; xu = x,0 = good0<|ii; y\.\ = -5fyHl yM>]; yiu = .Sfyu, yM); tu&«i ddraw I3{ —1,0}. . 14(0,1} .. 16(1,0}, 13(—1, 0} . . 19(0, 1} . 11(1, 0}; % left part of tail else: % the following program is for a 'simple' g shape call charhcgin("g,9,0, 0, px, pd, .§px-slant + .5pwi -- pu); hpen; x\ = X2 = goodj(r — 1.5u); x.\ — X\\ x:j=xy=.5r; botoyj = —00; topoife = m + 00; yt = -5(y3, y5); tM) draw 3( 1, 0}. . 4(0,1} .. 5{ — I, 0}; % right part of bowl if u>2> 1.5~: lft2x<j = round .75u; else: xq = good2 1.521; fi; JAi — y^JJ call 'a cfarc(5,6, to2); % left part of bowl cpen; topiyi = .9[e, m ] ; y* = 0 ; undraw I. 2; % stem hpen; xy — x-2; bot 1^/7 — — 2r>ci; W\ draw 2.. 7; % link Xio — goodj 2.5u; Xs = .5[xU), x,-]; IftoXcj = Iftjx10; yn = ym; botnf* = — d - 0 0 ; cpen; bot.jym = --. I5d; V)j draw 10; % bulb hpen; m draw 9(0, —1}..8( I, O}; call * barc(8, 7, w,); % tail fi. 75
n 11 i 1 1 I * * Pb2 1 ! | 1 1 c a# :2 • • 2 • / i P2 __a A 2^ «! a2 \ \ I 1- 3 • 2 • « 4 • \ 1 L; = ^ N FT /" N t 3 ^ n • i \ i—"' 1 • a2 b2 ; • » l~- 2 • t j vl i_ e tfrf a2 r IA 76
"The letter h"; call charbegi'n(" h, LO, sc, sc, ph, 0, l][pc,px]'slant-\-.5pwi-\- (sc — 2)pu)\ hpen; x{ = x-2 = good, 2.5u; s:j = good^r — 2.5u); top^i = /7 ; botjt/2 = 0; u>i draw 1..2; % 'eft stem call " a hstrokc(2, 3, 4); % shoulder and right stem if Jcs j£ 0: call " b serif (1,1, 2, — Jcs); % upper serif call ^c serif (2, 1, I,— fcs); call "dsftrif^, 1,1, Jcs); % lower left serif call "e serif (4, 1, 3, — lcs)'t call "f serif (4, 1, 3, les); % lower right serif fi. "The letter i"; call charbcgin(" i, 5, sc, sc, ph, 0, ph slant -\- .5pwi + (sc -- 2)pti); hpen; xi = x-2 = good, .5r; top, t/i=m; bot|j/2 = 0; W[ draw 1.. 2; cpen; topjj/j — h ; rt jXj — rtjXi; Wj draw 3; if Jcs t^ 0: call 'a serif (1, 1, 2, —/cs); call . b serif(2, 1, 1, --Jcs); call " c serif(2, 1, 1, Jcs); fi. % stem % dot % upper serif % lower serif "The letter j"; call charbegin^j, 6, s c, 0, ph, pel, ph slant -|- .5pwi — 2pu); hpen; %\ = x2 = good,(r— 2.5u); if fixwidth = 0: lft;}x,i = round(—.F>u); else: Iftjfft = round u; fi; epen; top;it/;i = h ; Ttjxj = rt|Xi; iu;i draw 3; bot:<y-i = —9d;ti/j draw 4 ; hpen; top,yj = m ; bot|j/2 = —^d; bot0!/.-> = —rf — oo; y, = tjb; lft0Xfj = lft 3X4; xr, = .5[.r2, x01; draw |u;,|I..|w,#|2{0, -1). |tub#|5{— I, 0} .. 6{0, 1 }; if Jcsy^O: call 'a serif{l, 1, 2, . ics); fi. % dot % bulb % stem and tail % serif
a 1 I 1 I V ♦ * * •-»-* a l2 • el, L V • ;T &<■' y/ ?/',--' 5 .-x » c2 • • p2 [_&< ? ^d \ \ \ \ \ \ K \ f2V i l^ u c 4 I L.1 I 2 • a • 12 • ♦ 2 ♦ v, i ( i P2 a r 4 !* X. » "■ -v. * a2 s ♦ \ i 3 ♦ • 2 • • 4 • y~ V / bi u ^ b yT • .f 2. * \ f I 1 1 h 5 * 2 0 ♦ \ |2 H a" 1 1 I r i 12 ♦ 1 2 v 2 78
"The letter k"; call charbegin(*k, 10, sc, sc, ph, 0, px• slant-{-.5pwi -{(less-\- sc—2)pu); hpen; X\ = x-i = Zr, — goodt 2.5u; x:i=: good,(r. 2.5u); rt^ = rtox.i; topii/i = /? ;top()j/.|= m ; bot,t/2 — l>ot,?/j = 0 ; J/5 = -75e; new aa, bb; % auxiliaries for intersection of lines rt,zG = aa[rt,z,, rt^j]; y^ = aa(bot0m, t/j]; rt,x(i = bb[x-)f X.J; 2A> = kb[y5, yi]i u>l draw 6.. 3; %lower diagonal lpcn#; W[ draw 4. 5; % erase excess hpen; W\ draw 1.. 2; % stem too draw 4. . 5; % upper diagonal if/cs^O: cal I " a .serif(l, 1, 2,—/cs); % upper stem serif call . c serif(2,1,1, -les); called serif(2, 1, 1,/cs); %lowerstcm serif call . e serif (4, 0, 5, —les); call ^ 1 serif (4, 0,5, less); % upper diagoriat serif oall^g serif (3, 1,6, — les); call *h serif (3, 1,6,/ess); % lower diagonal serif 0. "The letter I"; call charbegin(~ 1, 5, sc, sc, p/i, 0, phs/ant-f-.5pvvi + (sc -- 2)pu); hpen; x{ = Xi = good, .5r; top,j/i = h ; botjy2= 0; wi draw 1.. 2; if lcs?£ 0: call * a serif (1, 1, 2, — les); call . b serif(2, 1, 1, —/cs); call * c ser/7 (2, 1, 1, /cs); fi. 9S stem % upper serif % lower serif "The letter in"; callcfiarbegin^m, 15, sc, sc, px, 0, ^\pe,px]'slant -f-.5p\vi + (s c —2)pu); iipen; a*i =- £2 = goodj 2.5u; z.) — good, .5r; a>> — x:J . x;j — X\\ top,yi = m ; bot|t/2 = 0; u>i draw 1.. 2; %icft stem call 'a hstrokc(2, 3, 4); %lcft shoulder and middle stern call" b hstroke(At 5, 6); %ri&lit shoulder and right stem if les ^ 0: call " c serif (1, /, 2, — fes); % upper serif call ^d serif(2, 1, I, —/cs); call * e serif (2, I, 1, les); % lower left serif call * f serif(4, 1, 3, —les); call "g serif (4,1, 3, les); % lower middle serif call * h serif(6,1, 5,—/cs); call " i serif(6, 1,5,/cs); % tower right serif fi. 79
H Is L b 1 c 2 ■ • a • 2 • • 2 • «2 _.a 1 2^ * ^ s ♦ 6 t- 3 • 2 • • 4 • \ r2 H i- J^ "',■-■ " ,<a2 /'" / * / / / •• / H- 1 * / 1 I X 2 \V ^a5- *V k V \ \ ^ \ \ \ \ \ b3 H :; * j 1 * / / / 1 A* / l^v 3 i>H—1^ "?.. b2 "T 3 \ a^i / r / / a 4 / 6 C2 ~r i i r 80
"The letter n"; call c/iarbegin("n, LO, sc, scfpx, 0, \[po,px] slant-f .5pwi+ (sc hpen; ^ = #2 = good, 2.5-; Xj — good^r — 2.5-); top,yi — m ; bot|2/2 = 0; u>i draw I. . 2; call ^ a /isirofce(2, 3, 4); if Icsy^ 0: call . b serif(1, I, 2, —les)] call * c serif (2, 1,1, —/as); call ^d serif(2, I, 1,/cs); call ^e serif(4, I, 3, — /cs); call " f serif (4, J, 3,/cs); fi. 2)pu); % left stem shoulder and right stem % upper serif % tower left serif % lower right serif "The letter o"; callcJiarbcgiu("o) 9, 0, 0, px, 0, .5px-s/ant); hpen; X| = r — £|; lft-2^2 = round Rxwidth[.5ut 1.54; X\ — Xi = x;i — x\\ top0j/i= m + 00; bot0y2 — -00; yi = Uh call "adarc(l, 2, u^); call " b darc(l, 3, u>2)- % axis of lefl-right symmetry % left part of bowl % right part of bowl 'The letter p"; <:allc/iarbcg//j(" p, 10, sc, 0, px, pd,.5pxslant -f/cic); hpen; X[ = x2 = X2 = good, 2.5u; z,| = x$ = .5(r -|- u); if ti>2 > 1.521: rt-2^s = ronn<l(r — .75u); else: Xo = good2(r — l.5u); fi; t°PiJ/i = m; botjj/2 = —d; topuyi--=m + 00; bofcojft = -00 «j = .5[y4, y:,]; yt> = is; w{ draw I.. 2; tub draw 5{ —1, O}. . 3{0, 1} . 4{l, 0}; call " a darc(4, 6, xx>^)\ if \csj£ 0: call ^b serif (1,1, 2, — /cs); call " c serif (2, I, I, —/cs); call "d serif(2, I, I, /cs); fi. % stem % left part of bowl h right part of bowl % upper serif % tower serif v 81
^-^ M?/ i c3 L \ c4' ^*2s£24 \Vi \ 3.2 *2 *a* <PTc« *2 / fe2 to 82
4The letterq°; call charbcgin(*<\,lQ,0,1, px, pd,px slant + .5pwi— pu); hpen; x\ = good,(r — 2.5u); zr) = .5(r — u); ar2 = *i = x.j; botif/i = -d; rt0^7 = rt|Xi; Xj = x7; 25 = x^\ lft0x8 = 'ft 1X2; toPoJ/.) = m; 2/<i = -5I?/>>yi>]; top0y5 = m +oo; bo t0 jfe =—oo; new aa; Ift \Xi = aa(xo, X4]; 2/2 = V7 — Vx — (sqrt(l — aaaa))[y4, y$]; if ics^ 0: call 'a serif(1,1, 2, — /cs); call *b serif (1,1, 2, ics); fi; W[ draw I. . 2; u*) ddraw 7 .. 3,8{0, 1} . 3{x:) - xs, .5(y:) - te)}; tub draw 6{i,0} . . 4{0,1} . 5{-l, 0}; if u>2 > J.5u: Wt/Xi) = round .75u; else: xo — good2 1.5u; fi; yj = yr,; c a 1 1 ^c darc(5, 9, w2). % where bowl meets stem % lower serif % stem % spur % right part of bowl % left part of bowl "The letter r"; call charbcgin(" r, 7, sc, 0, px, 0, px-.s/ant); hpcn; X| = x«2 = good, 2.5rz; top,yi --— m; botiy2 = 0; W\ draw I .. 2; open; rt3x3 = rt0x,t = round(r — .5u); top.,y3 = .9[e, m]; yt = y3; W3 d r a w 3j hpen; x5 = x{\ tfr = e; x^ = 5u; topay> == m -h°°; t/\) draw 5{0,1} . 6{i, 0} .. 4{0, - 1 ); if ics^ 0: call 'a serif (I, 1, 2, — les)] call ^b serif (2, 1, 1, — ks); call ^cserif(2,1, 1, ks); fi % % % % stem bulb % shoulder upper lower serif serif 83
84
"The letters"; call charbegin^s,!, 0, 0, px, 0, px slant— .5pu); hpen; top0yi = m + oo\ botot/5 = —00; X3 = .5r; (yj — i«q — .5w^)/(m —2u^ — t^) = e/m; % white space ratio lft][X<2 = round u\ if ics— 0: X[ = x5 = 2:3; lfto:r<i = round 75u; x 7 = rr^; rt[|X| = round(r — u); Wb = i (toPo °> Wl J W = 1 [bot0m, y:j]; ujd draw 6{x5 — z<>, 3(y> — y^)} . 5(1, O } ; % lower left stroke draw 7{:ri —zy, 2(yi —y?)} . 1{ —1, O }; % upper right stroke else: if v>q = w{: x{ = x^ = xy, :f(i . x>2 = £7 - X4; rti 1^ = round(r — u); Ui = :Jj [top0 0, y;)]; y7 = \ [bot0m, y3]; tuo draw G{x-> - 3r«,3(y-5— z/(j)}. . 5{ 1, 0}; % lower left stroke d r a w 7{x[ - x7) 2(y, — y7)} . 1{ —1,0}; % upper right stroke rrs = &j = aft ; yo = i/ci + Ics aspect u + ep.s; bot0ys = 0 ; iio~Xii = x 7 ; yn = j/7 —/cs-aspect-u — eps; lop0ym = m; u>o draw 8. . 9; % lower serif draw 10.. 11; % upper serif else: x\ = — .5u; x:> = xA + -5u; 2*5 = 2:2; rtozy = round(r -- tx); rt ux.i = round(r — 5u); ys = goodly,)— 1; y7 goodG(^[yi, m]) + I; botot/s = 0; yj"-=yfi; z8^2r,; rt|XU — rtoxc>; top0yio= m; 1/11 = 1/7; sin = 2:7; 1ft 1^7 = lftoxi 1; titoddraw 6. .8, 9. .8; % lower serif ddrnw 7.. 10,11.. 10; % upper serif rpen#; w\ d r a w 6{0, - 1 ) . 5(1,0}; % erase excess Ipcn#; v>{ draw 7(0,1} . 1{ —1, 0}; % ditto hpen; iuo draw 6{0, —1} .. 5(1, O}; % lower left stroke draw 7(0,1}.l( — l, O}; % upper right stroke fi; fi; new aa; if m — c > e: aa = m - e ; else: aa = e; fi; call 'a sdraiv( 1, 2, 3,4,5, u>u,t<&, — aa/(12ti)). % middle stroke 85
\ 2 • • 8 \ \ B 5"" V ~7 • 9-^ ) l a M ^ 1 \ A 1 '7 \ a j 2 M 1 J ^ T~r 1. ^ - i'i • hJ 1 . ■'**' 1 b \ i i i | -4-U- • i 3 v id .1 XJ 86
"Ttie letter t"; if px—pe <.75(ph— px): call cbarbegin{^ u 7,0,0, 2px— pe, 0, px slant + .5pwi — 2pu); yi — 2m — e; else: call charbcgin(" t, 7,0,0, .75[px, ph], 0, pxslant + .5pwi —2pu); y{ = .75[m,/i]; fi; hpen; X\ = x2 = good, 2.5w; top0j/2 = #*; i f xi\) = ti^i: w, draw 1..2; % upper terminal else: rt|X| = rt0x3; lftoX4 = lftiXi — u — eps; y.\ — y-> = yi\ V3 = Vi; = *3J wi) ddraw 4{1, 0} .. 3{0,1}, 4.. 5; % left and upper terminals fi; Ift io^, = !ftiX| —ti— eps; rt 102:7 = rtiXj + 2u + eps; open; topmyo = m ; xjj = y^; ww d r a w 6.. 7; %bar hpen; xs = xt; botoyfc — .5e; wj draw 2.. 8; % i f u\) > 1.5u: botoj/f)= 0; ta) = r — 2.5u; rtoxm = r — .5u; Xn = r + a; yn = e; new aa; iio = aa[2i,,x,|]; t/10 = (sqrt(l — aa-aa))[yi,, tfy\\ draw |w,#|8{0, —1} K#|9{ I, 0 } i0( ll); % hook else: bot0W) = -oo\ yu) = jje; x<) — .5[xs, xl0|; xm = good0(r — u); draw |w|*|8{09 --l)\ K#|9{ I, 0} . 10{0,1}; % hook fi. "The lctteru"; call charbcgin(* u, 10, sc, sc, px, 0, px .slant + .5pwi -j-(sc — 2)pu); hpen; Xi = x2 = good, 2.5u; xj = X( — good,(r — 2.5-); lftox-, = Ift 1X3; topiyi = m; m —1/2 == ^[c, m]; m — Jfc = ^[e, m ] ; % prepare for upside-down hstrokc xa = .5(x2, x5|; botot/B = —00] x 7 = l/sqritwo[xk, x/]\ y 7 = 1/sqrttwo[y2, !/r>]; draw K,|5{0,-l}.|^)#|6{-l,0}.|.6(^n,tt>l]|7{x2 -- x<>, y2 - 1A>} .. . |wi#|2{0,1}. 1 ; % stroke y-1 = V\] boti?/:j = 0; W\ draw 3.. 4; % stem if les 7^0: call * a serif (1,1, 2, — Ics); % upper left serif call * b senT(4, 1, 3, — fes); % upper right serif call "c serif(3,1,4, fcs); % lower serif fi. 87
""'■a • ► 2 ♦ \ \ \ h>1 •1 \ \ ^ \j V \ ?/.2 J / C<L A / / r / #1 Li. a » 2 ; \ \ \ •3/: // / 2 5- 7\\ / \ V V / f • 0: 8 1 T-Jfl °f 1 88
The letter v"; <'.allchar/>ftgin(*v, 10, sc,sc, px, 0, px-s/ant + .5pw+ (/<:«+sc-- 1.5)p»); hpen; X[ = good, 2u; x\ —• good0(r-f- (Jcs -- jess—2)u); x-2 — Xi = rr.j — x*; IftnXj ™ lft i £-2; top ,i/| — m; ^ = yi; botj y2 — - 0 ; ?/j = w, w\ draw 1.. 2; rpcn#; ^i draw 3 .. 4; hpen; w() draw 3. 4; if/<;s^0: call * a serif(1,1, 2, — /os); call" b scrir (I, i, 2, /cs); call . oscrif(4, 0, 3, ~lcs)\ call . d scnT( 4, 0, 3; less); fi. % left diagonal stroke % erase execs* at lower right % right, diagonal stroke % left serif %ripjit serif "The letter w"; call c/iarbcg!ji(*w, 13, sc, sc,px, 0, px .slant + .5pw + ('^j- sc hpcn;X|== g 0 0 d , 2 u ; rtoX<) ---- rt |Xk>; Xn—xio = x<>— x\\ % x<), X|o,andxn arc approximations to x.i,x->r and x^. x j - - x\ = x0 — x2 =xr — x.i = xs — X| — roun<l(xio --- x(); %Thc idea is to draw two v's displaced by an integer amount. top,y, .-- m; bofc|-j/2 — o\ y.i — u> ~ Vi ^ Vi\ V-\ _rr lJ~> = U* ^ V* \ rtoxj -- rtvrr,; |ft0xj =- 1ft -r,; x-2 — x( = x.| — x;l; Wi draw 1. .2; 4; 4; - l-5)pn); £|| = H-('CS — Jess -- 2)u; rpen#; w» draw 3 . hpen; u*) draw 3 w\ draw 5 .. 6; rpen#; w\ draw 7. .8; hpen; v^) draw 7.. 8; if Jcs 7^ 0: call ~ a serif {I, I, 2, —/cs); call . b serif(1,1, 2, /cs); call * c serif(5,1, 6, — /ess); call"dser/T(5, I, 6, Jcs); call . e serif (8, 0, 7, --Ics); call * f serif (8, 0, 7, less); fi. % first diagonal °/o erase excess /o second diagonal 96 third diagonal % erase excess % fourth diagonal % left serif % middle serif % right serif 89
<■ 3 l2 • / <2 • . / t / / / / * / / / 4—r • / b: ;/ ; 90
"The letter x"; call charbcgin("x, 10, sc, sc, px, 0, pxslant-\-.5pwi + (sc-j- Jcs — 2)pu); hpen; x\ = x;j = good|(2.5— Jcs + lcss)u] x>i — z.\ = r — X\\ top, V\ = top0yi = m; bot0y, = bot {y{ = 0; W\ dra w 1 .. 4; % upper left to lower right diagonal u\) draw 3.. 2; % lower left to upper right diagonal if Jcs 7^ 0: call 4a serif(1,1, 4, —less); call *b serif (1,1,4, 2[less, Jcs]); % upper loft serif call *c serif (4,1,1, — 2[/css, les])] call *d serif (4, 1, 1, Jess); % lower right serif new ss; ss = ,S(w\ — u\))/u] % correction to les makes wOlikcwl call ^e serif (2, 0, 3, -- 2[/css,les] — ss); call . f serif (2, 0, 3, /css-(-ss); % upper right serif call "g serif(3, 0,2,—less— ss); call" h serif (3, 0, 2, 2[less,les] + ss); % lower left serif fi. "The letter y"; call charbcgin("y, 10, sc, s c, px,pc/, px slant + .5p\v + (Jcs + sc —l.5)pu); hpen; X|=^= good, 2u; z., = good0(r-f (jCs — Jess --- 2)u); Z2 — X{^X,\ - - Zy, |fl0:ri = Ift [X2\ top{yi = m; y, = y, ; bot{y2 = - 0 ; Ui = V2\ w\ draw 1. .2; % Irft diagonal stroke rpcn#; ti/| draw 3.. 4; % erase excess at lower right cpen; lftjXs = lfto^7 = round .25u; bot^ys = — .9d; y? = wj;^idraw 8; % bulb hpen; afc = 2u; botoyfo = —d — oo\ botoifi = —.5d; new aa; x5 = aa(zj, x^J; y-, = aa[y:J, yij; undraw 4.. 3{x;i — Z|, yj — yi} . . 6{--l, 0} .. 7{0, i}; % right diagonal and tail if Jcs7^ 0: call "aserif( I, 1,2,— Jcs); call . b serif(l,l, 2, 7csj; % left serif call " c serif (4, 0, 3, — Jcs); call x d serif (4, 0, 3, less)] % right serif fi. "The letter z"; call charbegin("s,8, 0, 0,px, 0, pxslant - .5pu); hpen; 1ft 1X2 = round w; rt|i| = round(r — a); top{y{ — m; bolii&~ 0; new ss: ss = lAaspectlcS'U + eps; i f ss + i^j > .2577i: new ss; ss— 25m— r/\> -}- eps; fi; lfto^ = round 1.5u; s.j = £;] — .5u; yj = yi; y.j = yj — ss/1.4; 1*0*5 = round(r — l.5u); ^ = x5 + .5u; y-, = y2; jaj = JA + ^J call 'a arm(l, 3, 4); % upper arm and serif t^i draw 1. .2; % diagonal stroke call "b arm(2, 5, 6). % lower arm and serif 91
/ t \ 1 /' / A m / 1 (1 \ ~m » ^ \ \ • i \ \ / ' / n ■ f / w r / / / / bil < r » 1... • V J ,-*~ "-I ) V f L*~ J:,x-r:K /a2 / \'' i ( I t I I \ a3 • | i M \ 2 1 •v. ^a^ v J 1 '^ w V I \ b3 • f i /b4 / y y 3 92
The file romand mf % This file contains the ten digits, as well as '&' and T, % in the so-called roman style. % Codes '046, '060-'071, and '077 are used. "Ampersand"; call charbegin( '046, 14, 0, 0,ph, 0, .5 pc-slant + 5pvv — .5pu); hpen; Si = r — 2.5u; top0yi = m ; #2 = 4m; i/2 = .015[i/i,e]; z3 = 3u; bot()yj = — oo\ x.A= good, 1.5u; y.i = -J [\jh y,-]; a* — 5.25u; y^ = 5[j/3, y?]; Sfc = good08.5u; yo = .8[yij, y?]; x7 — 6.5,; top()y7 = h + oo\ xH — good, 4u; mb = y»; xg = x8 + u; y.) = «5J *io = r — 5u; t/io = -0l5[j/^, yyl; Xn = a?io + l-5u; yi I = yy, xvl = good„(r — a); y,2=--= .,%,h e]; if 5 = 0: tA) = .l(!/i, to]; else: yb = yi — s; fi; (x, — xn)/(y, — yo) = .5(rr, — x2)/(yi -- y2); t^) draw 1.. 0; % short diagonal draw 0{jo — *i,M) -- Vi} |ti*)#|2 .. | j? [u*,, ti>2]|3{—I, O}. . |u>2#|4{0, 1} . |tM)#|5{xr> — x,,yr) .. i[l/j,!/H} . . 6{0,I}..7{ — 1, O}; % lower bowl and right part of upper bowl call "aarc(7, 8, t^i); % left part of upper bowl draw |wi|8{0, —1} .. 9 .. |w,#|10 .. |u*)#| L1{1, 0} . 12{0,1}; % long diagonal if Jcs 7^ 0: call " b serif (I, 0, 0, — ics); call " c serif (1, 0, 0, Jcs); % serif fi. "The numeral 0"; call charbcgin^O, 9, 0,0, ph, 0, ph slant — .5pu); if fixwidth = 0: new save; save = sqrttwo; new sqrttwo; sqrttwo =sqrt( 1.231144I3save); % the constant is 2:l/l° fi; hpen; i f u>2 > 1.5u: lft-2£'i = round .75u; else: X2 = good2 15u; fi; x, = r --- arj; % axis of left-right symmetry Xs = r — X2't top()yi = /z + oo; bot0y2 = — °°; yj = 3/2i call " a d;.m;( I, 2, 1(7); call . b<i;.n<-( I, 3, u^); % bowl if fixwidth = 0: n e w sqrttwo; sqrttwo = save; fi. 93
i A fe: JC *2 b* •" 2 NUJH 11 f — .... ^ 3r - 94
"The numerall"; callch<irbcgin[" 1, 9, 0, 0, ph, 0, ph-.s/ant— 5pu); hpen; x{ = x2 = good2 5r; top2yi= /i; bot-2y2 = 0; u>2 draw L.. 2; % stem call H a serif (2, 2, 1, -2); call* b serif (2,2,1/2); % serif i f u\) = u>2* if Jcs — 0: top()y;j — .8[m}/i]; Xj = Xi— 2u — c/?$; else: top0y.j = .2[m,/i); x.j = Ift^^i — 2u — eps; fi; else: top()yj = .8[ra,/i]; xj = x( — 2.5u — cps; fi; V\ = VW rt^xi — rtnx.j; y> - 1.5[m,/i]; x.., = x5; Ipcn*; ti>2 draw (5. . )4 . 3{ — 1,0}; % erase excess hpen; vh) draw (5. . )4 .. 3{—i, 0}. % point "The numeral 2"; call charbegin(" 2, 9,0,0, ph, 0, pfi slant — ,5pu); vpen; new wm\ if les = 0: UA)o = ti>.|j else: tc*)9 = ti^; fi; rlc)o^i -- round(r— u); lflnn*j — round w ; botgoyi =0; yj ~ y-i] UX)\) draw 1 . . 2; % bar if /cs^l 0: x.| = x\\ topuy.| = top<v)yi + ucsaspext u -f- eps; botuyj = 0; if t^ = ti*: xj — xi; else: Xj + .5u = xj; rpen#; i«b-f--5u draw 3 . . 4; % erase excess fi; hpen; iuo draw 3 . . 4; % serif fi; epen; botjt/-, = m; Ift 1X3— round u; w.i draw 5; % bulb hpen; lft.jx.5 = lflu^; y-> = mi rt-^o = rtu^) -"- round(r -- u); ll'l^n ~= lftoXS; X; = .5(ar(i> x«j]; X| 1 ~ x2; zi<) = 2:7; topni/7 = A -f~oo; t/s — y.) = .7/i; bot()y,/==0; y»o = 4(yi /, yo]; u\) draw 6(0,1}.. 7{ 1,0}; % shoulder lpen#; 2u draw 9(0, --I}. 10{x,o — Xo, .5(y,() -- y,)} . ll{x,, ... x,n, 2(y, / — ym)}; % era.se excess hpen; t^ddraw 7{ I , 0 } 8{0, - - I } J0{x|() - x<)f .r>(y,o -- y<))}, 7{l,0}.9{0,-i}..IO{xlo-x,Jl .5(y,0 - yo)}; % stroke draw 10{x,o - x<), .5(ym. .?/.,)} 1 l{r,,— xm, 2(y,, — ym)} % link 95
3 .♦ ♦ l, 1 '^» i t£ c: ♦ -9- ♦ ♦ x a \ \ k i 7 1 ♦ bl , / ♦ \ C IN / i ) * dl > \ \ 8 « 1 / ^r • /• / / / / A J.\ ■• / • //~ / / // / . / / > A± r~~ / -j I | L [ \ _i T t a2 b: >* • f 5 J uS M? V^l 96
"The numeral 3"; r.allcfiarbegi'n(*3, 9, 0,0, ph, 0, ph slant -- 5pu); new iik)cj; ii>)cj = round .75(tMu,itfj]; cpen; botjDj/i = .75/i; i f top,)c)t/i > .9/i: new yi; top(,n{/i .9/i; fi; lftoo^i ~ round 1.5u;u*)o draw 1; % upper bulb top,y2 = .25/i; i f bot:,i/.2 < .l/i: t/2i bot ,j/2 = .l/i; fi; lft;jZ-2=^ round u; ti/j draw 2; % lower bulb hpe.n; lft()«.i = Iftoo^i; ifto^i — ift ^; «i = ?vi; ?/i = w, a>, — .5[xu x7]; Ay = .5(x,|,xs]; top0y-, == h +oo\ bot()jA> -- —oo\ rt,x/ = round(r - 1.5u); rt^s - round(r — u); y7 — .5(y«), ?/-,]; y$ -= .5[ym, y>]; ^)=r-!/i():= good, .52/i; x(0 -|- w ~ x.) = .5r; tt^) draw 3{(),l}..5{!, O}; % shoulder call 'a arc(5, 7, W|); call "barc(9, 7, itf|); % upper howl undraw 9 . IO; % bar call "carc(9, 8, tt^); call "dar<;(6, 8, t^^); % lower bowl too draw 6{ —1, 0} . 4{0,1}. % tail "The numeral 4"; < all charbcgin(" 4, 9, 0,0, p/i, 0, phslant— Spu); hpen; X[ — 2:2; ifics^O: i f ti>2 > l.5u: rt^xi round(r ■—1.75u); else: X[ = good2 6.5u; fi; else: x\ — good2 6.5u; fi; top2y, = a; bot2y2 = 0; rt2xj = rt(,x;,; j/i = yy, y, — y> = good, J|e; lft0X|= round u; u>2 draw 1 . 2; % stem lpen#; ti>2 draw 3 4 ; % erase excess at upper left hpen; undraw 3.. 4; % diagonal if Jcs y£ 0: rtoss = rt2#2 + 1.5u-f- eps; call <a serif (2, 2, 1, -1.5); call *bscrif(2, 2, 1, 1.5); % serif else: rlox-, ---- round(r - - .75a); fi; iO{) draw 4 .. 5. 97
g 7T i* "^'— tn-r-Vf i t f \.y'~ ?*~~~ ^. -zJ * a >.) C [wl \ • \ \l Y v; \ 8 • » A -L-sJL ^9 / • / B & 20 k b- Hi©*"' X 2 N \ b3 i A 98
"The numeral 5"; call charbegin(°*5,0,0,0, ph, 0, ph slant — .5pu); vpen; X[ = good,, 2u; top8yi = h; vt^x-a = round(r — 1.25u); top(Jy;j = /i; Xi = .5[x\,Z3]\ new tUjg; tojt> = round .75[tUo, lUfc); topg^ = round .95/i; ^ = —.5u; X:\ = r-fl.5u; yo = y4 = 1.5/i; draw (|t4s|0. .)I.. |w.)o|2..|tiib|3(..4); % arm hpen; x5 = Xg = xx\ top0ife = /i ; top0ify = .75[e, m]; X7 = .5r; top0y7 = m + oo; Xq = X7— .5u; botolA) = —°°i rt2xs = round(r — u); t& — .5[t/7, l/o]; v\) draw 5 .. 6; % stem draw (9 . )6..7{1,0}; % left part of bowl call " a arc(7, 8,102); call "b arc(9, 8, t^); % right part of bowl lftoXio = lftjXM = round u; y,0 = yn = \w> tub draw 9{—1, 0} .10{0,l}; % tail cpen; taj draw 11. % bulb "The numeral 6"; call charbeg/n(^6, 9,0, 0, ph, 0, ph slant — .5pu); i f u>2 > 15u: Ift^xi = round .75w; rt2^2 =^ round(r — .75tt); else: X| = good2 15u; x-2 = good2(r— 1.5-); fi; new tU)o; tU)n = round 75(tub,wj]; cpen; topji/j = h — .25e; i f y.i < .5[m,/i]: new yj; yj = .5[m, /i7; /-'•■ rt<)9^ = rto^! = round(r — 1.5u); y,j = y3; n*)<) draw 3; % bulb hpcn; x<2t) = good2(xi + .Jti); x—~ ^ = xio — .5[x2o, x*]; top0yr, = /i+ 00; tt*) draw 4{0, 1} . . 5{ -1, O}; % shoulder botoife = —00) top0ys= m -0 0; y2o = -5^2, ifc]; y i — Ui- yio; rt()X7 = rt-2X2o; call 'a darc(6, 7, i/^>); call "b darc(6, 2, W2); % bowl new UAjg; tiXj<> = jj [wo, w?]; % intermediate width used in dare routine xg = ax>; rt99xs = rto(l/sqiMwo[xfc,X7]); ys = l/sqrttwo\vzo, Vr); Vs — Vo = ys — V7\ Vi — -Sfjfc, yio); draw K#|5{ —1,0}. . \ux)<P{x7 - AiM — &<)} . |u>2#| 1(0,-1} . |t/*)<>|8{sft . . x7, tji - 7/20} K#| 10{ 1, 0}. % stroke 99
3 if !r 4/ — / i t € r « .... / / i I 3 i r i a ■ • 3"* i 1 a7 ,-**~ *"-■»- / , ft V * \ \a4 \z. . ♦ ^5 N* ♦ >- r r>x „■-■ \\ / s I- a6 S*3 /" s / < / i*f u \ kl "**""*!• ^"^^ N y ^ -\ *\ \ "N — <=* ^ Lz-l--- "^r \ ] a X •4-1*9 ■?•/
The numeral 7"; call rharbcgin("7,9,0,0,ph, 0, plvslant — 5pu); vpen; new to^; if /cs = 0: W&) = ty.i; else: ti*)o = Wg\ fi; lfto?jX|-= round u; rtoo^*2 = round(r —u); top99yi = h ; yi = j/i; mjc) draw I .. 2; % bar if les 7^0: £i = £i; bot0?/., -r botoot/i ~ ucs aspect u -- eps; toptfft = ^; if w7 = «*j: *3 = z<i; c]se: X;J _ ,5U = x.i; lpcn#; w0 + .5u draw 3.4; % erase excess fi; hpen; u\) draw 3. 4; % ycr'f fi; cpen, bot2?// = —oo; bot^Z/G — £ra; A\ = x7 -= good2 Au\ u>2 draw 7..6; % hulb hpen; xj = 5.5u; y$ = .?#; topnj& = /*; *s = Xi\ rpen#; 2u draw 8{x3 — xHf }{y>. .yH)}. . 5(. 6); % erase excess hpen; draw |^,|8{.t5 - xH, }[& - . </*)> . |tt\,#|5.. K#|6{0, -1}. % stroke "The numeral 8"; call cfiarbegift("8, 9, 0,0,ph, 0, ph slant — .5pu); new ic*)k,i%),&s; twin" round ^[ut), t"i]; hpen; \ft!)qZ{ = round u; Xi = t —x\\ y\ = yi\ lft99^:i= round .75u; x.| = r — z*; yj — y<\\ £5 = r — £5 = x^ = 27; toPol/3 = /* -f °°; t/u = .52/i; botoj/7 = —oo\ u»w — 2[?t>7, u*l; i f 11^ ~ tuns- ^^ 0; else: ss = /i/(18u); % s,°pe fi; call "ascira w(5, 1,6,4, 7, u^ti^s,— ss); % upper left and lower right strokes u*m draw 5{ I, 0} .. 2{0, —1} .. 6{-l, -.75*s} .. 3(0, --//. .7(1,0}. % upper right and lower left strokes 101
I" rio-^>- 13* V m j 2 1 b' [ i Ub-3 (. \ l / /1 a pj [N • -6- ^Ht^ 41 CV a4 P V / 3 J 1 ■ kl ' ■' •' / /I .JT* L — 102
"The numeral 9"; call charbeg/n("9, 9, 0, 0, ph, 0, ph-slant— .5pu); i f v>2 > 1.5ti: Ttixi = round(r — .75u); lft^^ = round .75u; else: xi = good2(r— 1.511); x2 = good2 l.5u; fi; new tttjc>; ti^o = round .75(u\), ti^]; cpcn; botooyj = .25c; i f ui > -5c: new yy, y;) = .5c; fi; lftguxj == Iftoz.-i = round 1.5u; y,| = yj; it*)9 draw 3; % bulb hpen; *.20 == good2(x| .lu)j x-> — x<) xl0 — .5[x2o,x2]; bot0y5 —oo\ w0 draw 4(0, —1} .. 5{ 1, 0}; % tail topoy2 = /i + oo\ Mi = e — oo; y,() = .5(y2, Ms]; V7 == !/io = !/2! lft0x7 = lft2X2o; call 'a darc(6, 7, u\>); call ^b<farc(6, 2, W2); % bowl new ti>)g; W)i) = ^ [wo, m^\ % intermediate width in <J/ircroutinc *h = ^; Iftoo^s = lft0(l/sqrttwo[^i,a:7l); y8 = \ / sqrttwo[rj2[)t yr]; y> - - y<) = ys — y;; yt = -5[y-„ yio]; draw |^)#|5{1,0}.. |v>)9|9{x7 — %, 1/7 — 1/20}.. |u\>#|l(0,1} . |tfoi||8(ai — x7,y7- -«2o}.|u\)#| L0{ — 1, 0}. % stroke "Question mark"; call charbegin( '077, 7,0, 0, ph, 0, .8phs/ant-f-.5pwii — pu); now %), tyQ8; ti*JS = round A[xvo, t^); i f w.j<u\)sqrt2: t(*J9 = i^ sqrt 2; else: 10)9 = ti^; fi; cpen; bot99yi =0; X\ = good0 .5(r — u); ti>)0 draw 1; % dot lftjx2 = IftoXj = round u; yi — yj = 8[top99yi, botoy-i]; topbyt = /i + 00; xu.\ draw 2; % bulb hpen; x, = .5(r - u); x5 = good2(r — 1.5ti); y5 = y2; t^) draw 3(0,1}.. 4(1,0}; callNaarc(4,5,^); % bowl Iftoxn = lft^xs; rt0x12 = rt2xr>; y\\ = yvi — W>\ cpen; topGt*) = top98t/(j; bottiy,0 - bot98tA>; A) = x,0 — x7 -f n, x7 —- xs = xi.j = xi; y\.\—1/7 = 1/10. y>; ?/i - - y2 — y2 — IA>; l<>p(iy,- = lopiJS ^ [jfc, {*] ; botoiA* = 2:>[top,J0y,, m\ + I; hpen; u>o ddrnw 1 1(0, —1} .. 9{ —1,0} .. 7(0,—1}, 12(0, —1}. 10( —1,0). .13(0, -I}; % link and stem draw 13.. 8. % point 103
iM a2 U£: jk. "k2 _ • I 2 % 1 ! .£ / ' 2 • >2 It-- i • Ll" • I ;: g z. m ^r -. S.*N )<*) / / /<=! ,- 2V\ \ ' ) \ ■ . 1 . ■ s ^ y \\ \ \ ) ♦ / / A1 / *-"'" .-■• / / 104
The file romans. mf % This tile contains special letters and letter combinations, % compatible with the alphabet "romanl". % Codes '013, '014, '033-'035 are used. "Dotlcss letter i"; call charbegin( '013, 5, sc, sc, px, 0, pxslant-}-.5pvvi+ (sc —2)pu); hpen; Xy = Xi = good, .5r; top{y{ = m; bot|t/2 = 0; u>i draw 1.. 2; % stem ifics^ 0: call 'a scrif(L, 1, 2, — /cs); % upper serif call" b serif (2, J f 1,— ics); call "c serif (2, 1, 1, les); % lower serif fi. "Dotless letter j"; call charbegin( '0 14, 6, sc, 0, px, pdtpX'slant-\-.5pwi -- 2pu); hpen; X\ = x>i — good,(r — 2.5-); if fixwidth = 0: lft\\X\ -- round(—.5tt); else: ift^x.)—- round u\ fi; open; botjyj = — .9c/; tiijdraw 4; % bulb hpen; top^ = m; bot]j/2 = — \d\ bot0y.5 = - d — 00; y.i = xji\\ lft(,2^ = lft3a:.i; xj = .5[x2, xfcj; draw |ti;i|l..|ti/|#|2{0> --1). |u*)#|5{ — 1, 0} .. 6{0, i}; %stcm and tail if Icsy^ 0: call 'a serif (I, I, 2, — Jcs); % serif fi. "The German letter ss"; call charbcgin( '033, 10, sc, 0, p/i, 0, phslant — pu)'t hpen; Zi = x2=-= ^orf, 2.5u; rt2X} = round(r — 1.5u); rt2x,, .= round(r — .5u) bot(y, = 0; yi=--5\mt yr>]; top0y5 = h+ 00; x3 = .5(*2,3j1; Vj --= -5[m, y:>]; y.| = .4m; t/>i draw 1.. 2; % stem call 'a arc(5,2, u>t); % shoulder top0£/K ~ /w; lft(,^ = round(rt|3:24- 1.521); call" b arc(5,3,w2); ca// " c arc(6, 3, w2)) % upper bowl open; lft ^ -- round(rt \X\ -\- .5u); bot^y^ = 1 e ; w$ draw 8; % bulb hpen; Ifto-fy " lft.jXs; */.) =•■- i/hI *~< — l(lftoX<j, X\]] botny; — —00; call "dar<;(6, 4, ti^); call "earc(7, 4, t«>2); % ,ower bowl tn,clraw7{ —1, 0). . 9{0,1}; % link if/cs=^0: call" e scnf(l, 1, 2, —les); % serif fi. , 105
i V fr ^ A?/ r -3 ♦ b* ^ r1 N 4 ■ 8 • 2* \ \ .2.3^ ^v - ^ _» al • Q ^ 106
The ligature ae"; call chnrbegin( '034, 12, 0, 0,px, 0, pc slant + Jcic); epen; IftjX| — round 1.25u; if topJ(topJtop(ie + 2) > .9[e, m]: top3i/i = .9[e, m]; else: y{ = top3top6e + 2; fi; Wl draw 1; % bulb hpen; lfto#2 = lftjSiJ 2/2 = V\\ *3 = 3.75u; topflt/j = m + 00; XA = good, 5.521; y., = ±(e, m]; wo draw 2{0, l}.. 3{ 1, O}; call 'a arc(3, 4,tt/|); % shoulder £8 = ^i; £ta = e; ti>i draw 4.. 8; % stem st> = 4u; yj.-=.9K y8]; xl0 = xu + .25u; yU) = .5|ufc, y&]; xn = good21.5u; yn = .2[i^, t&]; Xj2 = 2.75u; botoj/12 = —oo; X|3 = 3.75u; yu = .0l5[t/i2, y»]; ^i.i = ^; l/i i = .3[yi2,!/»]; :r,5 = 7tt; yr> = e; draw K|8{-1,0} . K#|9 .. |.8K, io2}\ 10 |t»2#| 11{0, -1} . . |.7[tn)lta2)|12{lf0}.K#|13..l4(. . 15); %lcft bowl i f ti>2 > 1.5u: rt2X2i = round(r — .75u); else: £21 = g°°d-2(r — 1.5u); fi; *22 = an; *23 = r — 4u; top()y23 = m -|-oo; y2i = e; 1/22 = ^Wr^V>A'> botottr> =-00; £25 = #23 + -5ti; call "aarc(23, 21, wi)\ % right bowl call ^barc(23, 22,ie/|); call ^c arc{25, 22, wi); % stroke tt\) draw 8.. 21; % bar i f Ufo = Wi: $20 = *21 J #27 — £25 = ^21 — #23) 1/27 = V22\ new aa; X26 = aa(2>25,327]; t/20 = (sqrt(l —aaaa))[y27, </2r>]; else: rloZztt = rt-2^2i; *27 = ^2f>; y2<i = .5e — 1 ; y27 = e; fi; u\) draw 25{ 1,0}..26(..27). % point 107
\_j n / d3 • V \ c *\ 2 7 / 1 / ^S, 5^' V I 1 4 f 1 t I / • 24 • 3« 3 / / • N 1 "X. _2 V 3^w 25- • J 2#1 -7 1 ( 3 :2 / 1 ^!) 108
"The ligature oe"; call charbcgin( '035, 13, 0, 0,px, 0, pc slant+ lcic), hpcn; X:i = good2 .5r; if v>i > 1.5u: lft<22>2 = round .75u; rt2:r2i = round(r — .75u); else: x2 = good21.5u; x2\ = good2(r — 1.5u); fi; X[ — X2 = Xj — X[] ^p0yi = m +00; bot0y2 = -00; y2 = Ut> call "ddarc(l,2, u;2); % ,eft Part of ,eft bowl call "edarc(l,3,w2); % right part of right bowl xyi = **\ xn — r — 4u; top0y2.i = m-f oo; y2t = e; y22 = .5[y2r>, lfe:i); bot0y25 = -00; x-2--, = a** + -5^; call" a arc(23, 21, u>2); % ri8ht bowl call " b arc(23, 22,u>2); call* c arr(25, 22, t^); % stroke new aa\ y2[ = y2 i = aa[y22, y2jl; x2 i — i = (sqrt(l — aaaa))[x.2:}, x22\\ xi\) draw 24.. 21; % bar i f U\) = tl^t: X2G =" ^21 ; *27 " ^2"> = ^21 -- ^2i; 1/27 = y22i new aa; x2o — aa[x>:„x21\\ y2(i = (sqrt(l — aa-aa))[y27,1/25I; else: rUyx^ — rt2z2i; z27 == x*2o; t/20 = .5c — I; y27 = e; fi; tut) draw 25{1, 0} . 26(. 2 7 ) . % Point The file romitp m f % This file contains punctuation marks common to roman and % italic styles, including math italic and fixed-width fonts. % Codes '041, «o 17 '054, '056, '057, '072 -'076, '133, '135, '140 are used "Exclamation point"; call charbcgin{ '041,5, 0,0, p/i + ph, 0, (ph -\-pb) slant-\- 5pwiii — 2pu)] new tujo; if tU3<tuosqrt 2: Wjg = round wq sqrt 2; else: t(X)<) = W3; fi; open; x\~x2 = z.j — good,,,, 2.5u; bolc^t/i = 0 ; tu^) draw 1 ; % dot top.,c)?/j = /z + b; bot(,?/2 = .25[top0<)y, -f 1 , m]; W99 draw 3; % top of stem lipcn; draw |wj<)|3 |it\)|2. /'o stom 109
L \ 1 " d 2 J ♦ *s / /'A y 7 J / / r "J* /" J 7 1 1 jL 1* \\ n y ^ • \ [3 rn d ,—i. , K. hk \ \\ 1 v \ \\ l ■'i* i. -; t A vA <*A >< 1 110
"Apostrophe"; call charbcgin('047, 5,0,0, ph, 0, $[px,ph]'slant + .5pw— pu); % There is rotational symmetry with respect to reverse apostrophe. new v; v — fixwidth[utiu]; % unit width adjusted to agree with closing quotes epen; toV;,I/i = topC)y2 = h\ topby4 = m\ yj = $[y4ltfcl; Xi = #2= good, .5r; £j = good0(:T| + v + *p$J; £| = Si— .5v — eps; w3 draw 1; % bulb hpen; t^o draw 2{1,0}..3{0,—1}.4{3(x4 —^),y.i —yj}. % tail "Left parenthesis"; call charbegin('050,6, 0, 0, ph + pb, ph + pb — 2pa, (ph + pb)-s/ant-h-£>piv — .5pu); % There is left-right symmetry with respect to right parenthesis. hpen; xy — Xj~ good()(r — it); top0y» = h + b\ y->— a =-5(yi,y,}; y> = y,; y.| = yj; % unit width corrected for fixed width option if fixwidth — 0: v = u; else: v = jju; fi; new tu)9; tujo— round .75[t^),tU|]; Ift^j^ = round(xi — 4v); xo = X/j = x\ + 7.5v; draw (0..)|tA)|i. .|ta.)c,#|2..|u\)|3(..4). % stroke "Right parenthesis"; call charbcgi7i('05L,6,0,0, ph -[- pb, p/i + pb — 2pa,pas/anfc — .5pu); % There is left-right symmetry with respect to left parenthesis. hpen; X\ = xj = good0u; top()yi = h + 6; y2 = a = .5[yi, yj); &fo J/l J yi !/:*; new v; % unit width corrected for fixed width option if fixwidth= 0: v = u; else: v = §u; fi; new ttt)o; uajo = round 75[u*),ioi]; Ttwr-i = round(i| + 4v); xi) = xt = xi — 7.5v; draw (0. .)K|1--I«*)9#|2..M3(..4). % stroke 111
(3» al • • • HI 1- 9 4 \ ►el } 1 I-* ■■■' w 1 < I. •dp cm ja— \~t-.p... t i [ f f ► h j —-i. ♦ l fe I: 2 »j i ,.... 1 V ^ 112
Asterisk"; call cluu'bcgin( '052, 9, 0, 0, lowast[ph-{-pb, pa + 5px], 0, (lowast[ph-\~ pb, pa -f .5px] — .25px)s/a/it — (4 — 1.875 sqrt3)pu); cpen; topjt/i = lowast[h + 6, roun<l(a + .5m)]; top^i — botij/2 = m ; 1A) = .5[yi, y^; so = r — x^; zi == rr<2 = $o; ^3 = r — rj; £«> = r — are; £3 = z.5; % left-right symmetry yj = y-i; tt> = u>; y.* — y$ =■■ yi — ia; •%:*> ys] — yo; x, — a*) i=(.!> sqrt 3)Ift [ 3.75u; % asterisk will have 60-dcgrcc angles if m —-7.5u call 'a <;dravv(l, 0,1,0); % upper arm call *bcdraw(2, 0,1,0); % lower arm call "ccdraw(3, 0, 1, 0); % upper left arm call* d cc//.ivv(4,« . 1,« , : % upper right arm call " e eclraw (5, 0, 1, 0); % lower left a r m call " f cdraw(6, 0,1,0). %lo\vr.r right arm "Plus sign"; cpen; if fixwidth — 0: if pa + 8pu > ph: call charbegin('053, 18, 0, 0, ph, ph — 2pa,pa slant ~ .5pu); top ,(,yi = h\ else: call charbegin( '053, 18,0, 0, pa + 8pn,8pu— pa, pa slant — .5pu); top,o-j/i = a }- 8u; fi; else: call charbcgin('053, 9, 0,0,3.5pu + pa,3.5pu -- pa, 0); topl0yi = a + 3.5u; fi; -%ii»] = a; *\ = ^ = -5r; lft io^:j = round u; 2;, = r — £3; yj = y.i = a ; W10 draw 1.. 2; % stem draw 3. . 4. % bar "Comma"; call charbegin{ '054, 5,0, 0,1.5pwii'i,pdd, 0); cpen; new v^y, if Wj<u\) sqrt 2: u*.w — round u\) sqrt 2; else: il?c)q = w^\ fi; X\ = goody,5r; botcjoyi = 0; m)0 drawl; % bulb t/2 — yi; rtwx, = rt()X2; if fixwidth --- 0: x.j — good,, 1.5?/; else: Xj — good0 f^u; fi; hpen; bot0yj = - dd; tA) draw 2{0,—1} . . 3{3(x.j --*;), y.j -- yi}- % point 1 1 13
0) 1 / / / i r i i j / f f ' / / t i 1 i ( f 1 i t t "7 t > I ( n / 1 n i V \{ 3 ♦ ) ;o eJ o M ki 1 1 1 1 1 1 1 1 1 l^ .-•(' Ill 111 1 1 1 I 1 1 1 1 1 ^» 1 II 1 1 1 1 U<^ r' r Mm UK'f'f >-S4 I llltl lllll r*» ^^L l l | | I HITm 114
"Period"; call <:harbcgin( '056, 5, 0,0, l.5pwiiit 0, 0); cpcn; new tityj; if \&i < u\) sqrt 2: ^9 = round ttysqrt 2; else: Wy,) = my, fi; 2:1 = good,, .5r; botyoyi = 0 ; k>)9 drawl. % dot "Virgule (slash)44; call charbcg/n('057,<),0,0, ph -f pb, ph -\- pb -2pa, (ph + pb) slant — .5pu); cpcn; Iftio^i = round u; xi = r — x\\ top,02/2 h + l>\ .5[yht/2] = <*; twin draw I.. 2. % diagonal "colon" ; call ch<irbcgin( 4072, 5,0,0, px, 0, pxslanL + .5piviiisqrt 2 — 2pu); r.pen; new Uty)*, if t/>i < u\) sqrt 2: wyj = round tt\)sqrt2; else: ttA)o = v>\\ fi; a:] .= good;,;) .5r; botool/i = 0; iujd drawl; % upper dot x-i = X|; top^jj/j = ra; u*j» d r a w 3 . % lower dot "Semicolon"; call c/iarbegm( '073, 5,0,0, px, pdd, pxs/ant-|-.5pwiiisqrt 2 — 2pu); cpen; new tojo; if W\<.IV{) sqrt 2: t/*)9 = round u*> sqrt 2; else: uxm = k^; fi; Xi = good9<).5r; botooyi = 0; ttAw draw 1; % bulb z5 = x\\ top0(,t/5 = m; tuij<) draw 5; % <lot tfe = V\! rt?M)«i — rtoxi] if Rxwidth—- 0: xj - - good,, l.5u; else: x* = good0 f£u; fi; h p e n ; botoy? = — dd] wo draw 2{0, — 1} . :j{3(xj --- x2), y* — 1/2}. % point "Less than sign"; call charhegin( 4074, 18, 0, 0,.5fpx, ph] + prt/2, .5(px,pJi] + prt/2 — 2pa, .5[px, ph]-slant -- 2pu); cpcn; lft|()X| = round 2.f>u; x2 = x:j —- r - - x\\ Vi = good ,0.5[m,/i]; .5[y2, t/i] = yi = goodl0a; i^io draw 2.. 1.. 1.. 3. % diagonals 115
■ t-j . , u..._, . j. . u_.. , ,__, , ^^^ L* • • [a-J—J—L_LI —I—L—I—1-_I— I——I , 11. l..4v L * i i i I t i j V I f !2 V L . L pn 3 PI <! 1 L^"* ._.- *v^ ^**% -^ ^>. ^ ^ X ....' ^> .***" ^ 1 ^ --1 /( / t ?J1 /**—"• 116
"Equal sign"; call obarbegin('075,l8,0,0, pa f .5(px — pc)-f prfc/2,0, (pa + .5(px - pe))slant — .5pu); cpcn; IftioX! = round u\ x$ = £i; xL = x.l = r — X\\ Vi = I/2; y* = U\] V\ — y.) = round(m — e); .5[yhyj] = a; W\() draw 1.. 2; % upper bar draw 3. .4. % lower bar "Greater than sign"; call charhcgin( '076, 18, 0, 0,.5[px, ph] + prt/2, .5[px, ph] + prf/2 -- 2pa, pa-slant — 2pu); open; IftioXi = round 2.5u; 22 = z$ = r — X[\ Vi = good 10.5[rn,/i]; .5(3/2, V.j] = Vi = goo<l10a; tyio draw 2.. 1.. 1.. 3. % diagonals "Left bracket"; call charbcgin(' 133, 5, 0, 0, ph+pb, ph + pb — 2pa, (ph -\- pb)-slant + prt/2 — .25pu); cpcn; X[ = X2—r good 1(j.5r; £3 = x.\ = X\ + J.75ti-f" f/?5 topl0yi = /i+ 6; .%,,!&]— a; yj = yu y.i = y2; Win draw 3.. I.. 1.. 2.. 2.. 4. % stem and points "Right bracket"; call charbegin('135, 5, 0,0, ph-f pb, ph ~|- pb — 2pa, ( p h -J- pb) slant -\- prt/2 — 2pu); cpen; X\ = z2 — good1() .5r; x3 ==: rtj = x,— 1.75- -- eps, topl0y, = h + 6; .5[yi, y2] = a; y, = yt; yA = y*; t^io draw 3.. 1.. I.. 2.. 2.. 4. % stern and points "Reverse apostrophe"; call charbegin('M0,5,0, 0, ph, 0, ph ,s7ant + .5pw —1.5pu); % There is rotational symmetry with respect to apostrophe. new v\ v = fJxvWcft/i[it, J}u]; % unit width adjusted to agree with opening quotes cpen; bot,yi = botby2; toptiy, — h\ y* = jj [y.h y2|; y-2 — y 1 = '" — /i; X\ = x2 = good3 .5r; z.j =-- goo<l0(:C| — v — cps)] £4 = x\ + .5v + e p s ; 103 draw 1; % bulb hpen; 1^ draw 2{ — I, 0} .. 3{0, l}..4{3(ar, - *;,), y.| — U)}- % tail 4 117
. . . , . ~tT^^*^^^^^^^^T^^^TI w It 1/ i ..s 1 I m ^ ^ / 7n ,*4 ^ V * 1 1 11 k2l / 1 1 | II 1 1 111 1 ml
The file romita. mf % This file contains accents common to text roman and italic fonts. % II also contains the f/E\ *CE\ and '%', since these symbols are common % to the same fonts that the accents are common to. % Character codes '015 '032/036, '037, '045 are represented. % (Actually the accents In positions '025, '026, '031, '032 are % not generated unless ligsj^ 0, since other symbols arc substituted % for those accents in non-ligature fonts.) "Grave accent"; call charbegin('015, 9, 0,0, ph, 0, j}[pJi, px) slant + .5pw — pvW/6 — \|-pu); cpen; Ift \X[ = round 2u; Xi = $(zj,r -- x,]; top,yi = h\ p> = }\h, m]; call 'a cdraw(l,2,1,0). * diagonal "Acute accent"; call charbegin('016, 9,0,0, ph, 0, ph slant —1.5pu); cpen; rtizi ~ round(r — 2u); z2 = §[xi, r — £|]; top,y, = /i; y2 = §C*,m]; call 'a cdraw(l,2,1,0). % diagonal "Circumflex (hat) accent"; call c/iarL>egin('017,9,0,0, ph, 0, .5fpx-,pJi]s/ant + .5pw — 2pu); x{ = good,, 2.5u; x^ = x.x = r — x2) x.i = r — X\\ % left-right symmetry vpen; y{ ~ y3 — .5[m, tjo]; top8yo — topay2 = /i; bot8JA) = botuyi; ti*, dtlraw 2.. 1,4.. 1; % left point ddraw 2. .3,4..3. * right point "Hachek (hooklet) accent"; call charbegin{ '020, 9,0,0,. 75[px, ph], 0, .75[px,p/i]s/ant + .5pw - 2pu); X, = goo<l() 2.5u; x2=x.l =r — x2; z, = r—x,; % left-right symmetry; vpen; top0yi = round .75(m,/iJ; y\ = t/3; top8j/2o = ^i !fci = -SKj/iol; yi — M) = »o —tell % inverted circumflex top8yo = top0yt; bot8yn = botoy*; u^5 ddraw 2.. 1,4.. I; % ,eft Point ddraw 2. .3, 4.. 3. % right point "Breve accent"; call charbcgin( '0% I, 9, 0, 0, p/i, o, ph.s7anl-|--.5p\vl.5pu); x0r=xi = good,, 2u; *> — r - x2; .Tj = xx = r — xi; % left-right, symmetry new ti>jc>; i^m, = round .25[u\i,t^]; Vo = y.t = 1.25(m,/i]; y, = yu y2 = \\m,h\\ vpen; top90y, = /i; draw |tU)c>#|2{—1,0}.. |t^>#|l(..0); * left point draw |ttt)9#|2{l,0}..K#|3(..4). % right point 119
I 1 1 V I \ V I) \ — — • ... \ ♦ | ^\ V h —i M *-— **-i <? 4 V *)\ / > 1 ' 5 >- / 1/ 4 / /' 120
"Macron (bar) accent"; call charbcgin[ '022, 9, 0, 0, ^[px, ph] -|- prfc-a.spccl, 0, \ [px, ph]-slnnt-\-.5p\v — l.5pu); Z| = good0 2u; ar2 = r — zi; yi =-- y2; vpen; new iwjc); uajo = round .25[tt\i, ttfc]; hot^yi = j(m, h]; tt*.M draw 1.2. % bar "Umlaut (double dot) accent"; call ch;iri>cgin( '023, 9, 0,0,p/i, 0, ph-slant + .Spvvni -- 2pu); Zi = good;i 2.521; x2 = r —£,; y, = y2; cpen; top3y, = /i; w.) draw 1; draw 2. "Tilde (squigglc) accent"; callcharhcgin('024, 9, 0, 0, p/i, 0, p/i-.s/anH 5pwi - I .5pu); x{ = 2u; x., = r — 2u; x-2 = .25[:<:,, S.,]; x.j = .75(2:,, a:,]; new aa, bb, rr, cost/), sinth; ria^=^(x, -- x,); fofo — .2(/i -- m); rr = sqrt(aaaa + bbbb); costh —- aa/rr\ sinth = bb/rr; spcn(4(costli costh/w\/w\ -\- sinth-sinth/-^/wq), 8<:osth'sinth([/w\/v)\ -- I /wu/vH)), 4(costh-costh/u\)/W[) -(- sinth-sinlh/ut\/w\), 0,0,0,0); %obliquc pen in direction {(x.| -- x\)/3}y^ — y,} top0yi = .8(m,/i|; top()y2 = /i; y* = y,; y, = y2; w{) draw 1.. 2{ I) 0}.3{ I) 0). .4. % points and stroke if Jigs 7*^0: "Arrow (vector) accent"; call charbcgin( '025, 9, 0, 0, .75[px,p/i]4-prt aspcct/2, 0,.5[px,pb]s/anfc); open; lft,()x, = round .5u; x2 = r — x,; y, == y2 = -5(w,^]; t/;io draw I 2; % l>ar rtioXj = round(x2 — u)\ X\--xy, yj == y-2-h (h -rn)/4; y, = y2 — (h — m)/4; draw 3{.5(x2 -- *.■), y, — y.,} 2{x2 -- *;J| .5(y2 -- Va)}\ % uPPer Point d r a w 4{ .5(x2 — x.i), y2 — y,} 2{x2 -- x,,, .5(y2 — y,)}; % lower point fi. if ligs^r 0: "Long Hungarian umlaut accent"; callcbar/)i^in('02G,9, 0, 0,ph, 0, ph slant —pu); epeu; re, = good,, 2.5u; rt |X2 = round .5r; Xi -- X\ = x\ -- xy\ rt|X| — round(r— I 5n); V\ —- y.i — ', [m, /i); top ,1/2 ~ /i, y2 = y,; call*acc/raiv(2,1,1, 0); call " b cdraw(4, 3, 1,0); fi. % left dot % right dot % left di/igonal % right diagonal 121
. , t k .-•_ X 1 i *4~ 2 k M !\ <? A ^ v\ \ I'll 1 122
"Scandinavian circle accent"; % This character is designed to be used as an ordinary accent on an 'a' % or to be raised j(ph— px) points and superimposed on an 'A\ call cfjarbcgin( '027, 13, 0, 0,ph,0, 0); X{ = good,, 5u; x>2 = X/j = r — x>i\ Xy = r — x\\ hpen; top0y2 = h + o; top()y.| = round i(mi'1] + °l ^ = W = -5(lfc» V-ib ti*> draw 4{ —1,0}.. l{0, I}. .2(1,0}; % left half of bowl draw 4{1,0}..3{0,1}..2{—1,0}. % right half of bowl "Cedilla accent"; % This character is designed to be used as an ordinary accent on a V % or to be superimposed on a C\ call charbegin{ '030, 14, 0,0, 0,.75pd, 0); X[ = x" = 7.5u; x;j — X} -f- 1.5u; rr.i = xi -- 1.5,; new tuoo; wqo— round .5[if4), u/|]; hpen; bot^yi — —oo\ bottj/2 — round(—.2!>d — oo)\ w\ draw 1. . 2; botjy., = round(— 75rf— 00); 1/3 = .5[y2> y.\\\ draw 2{1, 0} .. 3{0, — 1} .. 4{~ I, 0}. if Jigs 7^ 0: "Cross for Polish 1 and L"; % This character is designed to be used as an ordinary accent on an T % or to be raised ph— px points and superimposed on an 'L\ call charbegin( '031, 4 + pwiv/pu,2sc,2sc, px — (ph — px), 0,0); Ift , ,5[x{, x-2] = 2u; X2 — x\ = 3 u ; toPoJ/2+ ^ — m) = m; j/i + ^ — m^ = ei ujfc draw 1..2; % diagonal fi. if ligs ?£ 0: "Tic accent"; % This character is tuned to work best with a dotlcss roman i. call charbcgin('032, 5, sc, sc, ph, 0, px slant + .5pwi-f- (sc — 2)pu); *,= g^j,, .5r; yi = y.j = <}[m, /i|; x2 = .5[z,, x\,]; xj •■= good0(r + 2u); vpen; top10yi = h -\- oo\ W\q draw 1{0,1} . . 2{l, 0}; % left point draw 3{0, l}..2{—I, 0}; % right point fi. % stem % hook 123
k"; // v. Z1 1 25 t / / al // / 'i < >3 1 7 L ♦ S6 |_ :2 d2 • •! 2 V • til • 4—- • A : »| d •i 1Jf — - r—• L- ./; L \ e: • ?/ ; • ? 124
Upper case ligature All J . allr/j;ir/)ogin('036,16, 2.sc,.sc,p/i, o. arrnic); hpeu; lf( j^i -round 7uj or-2 — Z|; top s\j\ — h\ bot 1J/2 = 0 ; '7; \ draw I 2; % stem if lies '/ 0: call" a serif (I, 4, 2, —ucs); call . b scr/f(l,4, 2, .Sues); % uppei stem serif call * c «or/T(2, 4, t, - - ucs); called scrif(2, 4, l,.5uc\s); % lower stem serif fi; n<*w ss\ ss — I '{.aspect ucs-u -|- cps) i f ss -[- iV(i > .25/*: new ss; s.s -- .25/i — wo -[- <"PS*> fi; rto:rj =-- round(r — 1.5?/); x, = t.j + 5u; y.j = yi; yt =- y* ss; rt0x\-, -: round(r - 1.25a); :rti = x, -| .5u; y> -- yi) U> =2/5 + ss; call Hearfn( I, 3, 4); % upper arm and serif call "f ann(2, 5,6); % lower arm and serif *7 --"- x,; y7 =- i& --= .5(yi, y2]; afc = good,, ll.5u; t/;(, draw 7.8; % middle arm if ucs y£ 0: ro ~ xm ~ xs; y> ~ j/s -f .7s.s; t/m = yH — .7ss; i f mo = toj: ti\> draw 9 10; % middle arm serif else: xh — Xh — u] y{ \ — y8; ininvr 0; rninvs 0; /<>0ddrawll{ I, 0}.10(0,-1}, 8.. 10; ddraw 11 {1, 0} .. 9(0, 1}, 8 .. 9; % middle arm serif minvr .5; rninvs .5; fi; fi; IftoXii - round l.5u; bo tot/21 — 0 ; Tto^.i = '^ \x\ \ t°Pol/21 "-" h\ u'o draw 23.. 21; % left diagonal stroke ih ■-> - ihi\ =-r' e; *;.-> - - I r= {■&-> - - yi\)/{yz \ - ?/2i)[^-2ii ^2.j1; £*> == **.*; t/;o draw 25.. 26; % bar line if ucs -7^ 0: call "g serif (21, 0, 23, —.5ucs); call %hscrif(21, 0,23, ucs); %left serif ii. 125
i- / J i i f L a3 1 * \ \ \ 2 2 ( \ m JUJJAj --I \ k^ _^_ 4 «5r'^ m 7 i-i 55 * d: • 2 v»a._ ./J^ - T ' ^i 4-1* fi, '* 1 / 1 qI ■Z*-' '•I U*"""W~ \ 1 ~*j^" n \ ji s v eV • . J \ | r2 • i N 126
"Upper case ligature OE"; call charbegin( '037, 18,0, sc, ph, 0, armic); hpen; new w^] uvjcj = round .5[u*), w.{\; lftgoXi = round 9tt; Xi - x\\ top<)9yi = h\ bot<jcjy2 = 0; iz>)0 draw 1.. 2; if ucs ^ 0: call %b serif (1, 99, 2, .5ucs); call "d serif (2, 99, 1, .5ucs); fi; new ss; ss = 1.4aspectucsu + c/?s; if ss + tu& > .25/i: new ss; ss = .25/i — t«o+ eps; fi; rto^j = round(r — I 5u); z.i = x-* + .5u; yj = yi; y.-i = rtoa:j = round(r— 1.2521); *<> = x<\ + .5u; 1*5 = 2/2; ito = call * e arm(l,3, 4); call M ann(2, 5, 6); 2:7 = 2:1; y7 = 1/8 = .5|yi,y2]j xH = good„ 13.511; u\j draw 7. .8; if ucs y£ 0: x<) = a:l0 = x8; !Aj = Ma + -7ss; yio — «s — i f WA) = um: u*) draw 9.. 10; else: x\ \ - x% — u ; Vy\ = Uh] minvr 0; minvs 0; xl\) ddraw ll{lf 0} . . 10(0, — 1}, 8.. 10; ddraw 11{1, O}. .9(0,1}, 8.. 9; minvr .5; minvs .5; fi; fi; \{ fix width ^ 0: new save; save = sqrttwo; new sqrtr wo; sqrttwo = sqrt save; 1ft5*22 =■" round 1.5u; else: Ift^a — round u\ fi; xn = 7u; top„&i = h + 00; botot/22 = —oo; call - a darc(2 1,22, tx^); a?23 = S2i; 1/23 = V22I lft0x2i = ift<j<)*i; *2-» = ^-»; mm = 3^; 3/25 r-= hh> tn, draw 21{1,0}.. 24(0,-1); draw 23{ 1,0) .25(0,1); i f ucs 7^ 0: if iwu t^ u^: ildraw 21(1, 0). 24(0,-1), 21(1,0).. 1(1,0); ddraw 23(1,0). 25(0,1),23(1,0). 2(1, O); fi; fi; if fixwidthj£ 0: new sqrttwo; sqrttwo = save; fi. stem % upper stem serif % lower stem serif = 1/3 -I- **; % upper arm and serif % lower arm and serif 7ss; % middle arm % middle arm serif % middle arm serif % super-supcrcllipse % left part of bowl % upper right part of bowl % lower right part of bowl % fill in % fill in 127
1 t 1 • / ;?/ | l , 1C \ • \ 1 '\ X - 1'1 •V p Lg-l- * * / f / [y A / ^p ) 8 • •• / V [ \ ..•• /i / / / / A / -^ / / f / 1 / / —- s •'' / / '-" VA r / ^j**" ,14 ■ f l'l3 / \ • i ' i \ \ \ 20 \ r ♦ n. llS- / 1 1 / 7] 115l 1 l--*""1 V\ \ //' 13/ ■•' *iL La5U al Jb2. ' 2 ( • «a3 V., b#l Z *a2 ..K • #&bp aii- 1 ^abl J- ba2 • ♦bbfe b.ii- 3 \.h H1 128
"Per cent sign"; call charbegin('045,17,0,0, ph + pb,pb, (ph -fpb)-s/ant-f-.5pw — pu); hpcn; xi =- 2.5u; x2 = r — 1.5u; botoj/i = - 6 ; top0i/2 = /z + 6; too draw I..2; % diagonal lft|X;j = round u; rtox7 = round .5(r — 3u); new 55, sf ; ss = .25(x2— x\)/{]H — 2/i); % reciprocal slope for ellipses y.j = Vi = •%>> U)}', top()y3 = /* + ft; botoj/r) = round .5/i; st = l/(sqrt 2); yx = y^ = st(y.,, y5); y8 = l/io = st[yh y<)]; S4?(yr, — J/o) = x5 — X9; ss(y.i — yjo) = x., — x,0 = Xo — x8; S37 = .5[rc;j,x7] = .5[x5, x<>]; .5(x,, x,o] = sfcjx^xj]; .5(xo,x8] = st\x37) x7j; draw |u;,#|3{ss, I}. |[j[u>o, W|]h{*r> — x:j + >ss(y5 — Wj), y5 — !/:j} |^,#|5{1,0} .6{x7 — x.-, -J- ss(w — V'X V? — V>) • 7{—jss, —1} . 8{.tc) - - x7 -f ss(») - - l/i), tt) — V7> • 9{ — J, 0} . |?i(^),^i]|I0{x.) .. xci -I- m-0/j — y.)), j/.« — j/t)} |u;it|3{ss9 i>; % upper bowl V\ I = .%/,«->]; x,, ==(sqrt(l — (.9)(.9)))[x,7, x7] + ss(y, , - yy); % ppoint or, ellipse yi2=901[j/7, y,]; *l2 = (sqrt(l - (.901)(.9()l)))(xJ7, x7] -f- ss(yl2 — Vr)\ % nearby point wo draw (12. )11 . 2{x2 —x,,y2 — y, } ; % link £|j— x.j = X|i — X| = X| j — Xj •^-x\u — Xk = z\7— x7 = £ts — x* = x\\) — &) —" */\) ' x\i) ^~- round .5(r -|- u); !/ij —tti— S/1-1 — yi=yn ir> = y\u — w> — y\i — \n — y\H yH — vw — vn — y-io yio; botoyio = —ft; draw |iu,#| I3{ss, 1} |j][t/;(), W|]|M{x5 — x, + >ss(y-, - y;i), y-> — yj} . I^)#|l5{i,0}t6{x7- xj + s»(v7 - y>), v? - tt>) i7{-ssf -l}. . j 8{xo —x7+ s;s(y>-y7),ykj yi) 19{ —1,0} . . \l\ii\h W|]|20{x.j — x<) + ss(yA. - t/o), y;3 —?/)}.|t/;i#|13{5s, I}. % lower bowl The file roml ig. mf "The ligature R'; call c/MfbcginCm, 10, 0, 0, ph,0, ph slant+ 2pu); hpcn; x\ = good, 2.5u; X* — good,(r — 2.5u); if iMn = w,: rt:jX2 = round 6.5u; xt — x;j —- x2 — x\\ else: rt jx2 = round(.5r + 2u); rt jXj = round(r + l.5u); fi; open; lop.,?/; — .8[m,/i|; ?/i — y2; call "a/stroke(2, 1); % left bulb, shoulder, stem, and serif rail" b fstrofr^fi, 3 ); 9c rif^ht bulb, shoulder, stem, and serif IIX10X5 = lft|Xj - - a — cps, rtio'Xir--- rt,x* + u + cps; top10y5 — m; iaj = y>, tt;io draw 5.. 6. % bar link lig 'f: " i = '174, *f = ' 173, % 1 =* 175; 129
_^-iu2- / / fal/ *U a;a2 M>fc aif 1 v*tl 0 +» t4- "?.2. fc2 SfeLl/'SL I r- 1 '■" j 1 ' a > 1 ». 'al /' a2 • • 1 • kb Li. , • 2 t L 1 A I 2 • • • >2 • * 3 ♦ r3 i i I mm ^-aO-L t al a±± aa2 U ,.4 -*?~U \fci» i a3 (;••} bi ba2 bb &^1.?*£l 6? U2 V. 6 130
The ligature fi"; call charbcgin{ M74, 10, 0, 2sc, ph, 0, phslant-\-.5pwi-\-{2sc — 2)pu); hpen; x\= good, 2.5u; x:i = x.\ — good^r — 2.5u); tI:\x2 — rt|^; epen; top3i/2 = 8(m,/i]; call" a fstroke(2, 1); % bulb, shoulder, left stem, left serif hpen; top0y.| = m\ botoj/j = 0;t/>idraw3..4; % right stem cpen; I ft 10*5 = 1ft tXi — u— eps; Xo = £3; top10yr) = rn; 2Ai = 1/51 ti/!0 draw 5.. 6; % bar ,ink if /cs^ 0: call H b serif (3,1, 4, — ics); call * c serif (3, 1, 4, /cs); % right serif fi. % appropriate end lo "fi" "The ligature fl"; call charbcgin(' 175, 10, 0, 2.sc, ph, 0, phshint -\- .5pwi + (2sc -- 2)pu); hpen; x\ — good, 2.5u; £:* = x.| = good,(r — 2.5u); rtjx2 = rtix.i; cpen; topj^ ~~ «9(m,h\\ call "a fstroJce(2,1); % bulb, shoulder, left stem, left serif hpen; top0!/.| = /* ; bot0y;j = 0 ; ttf| d r a w 3 .. 4 ; % right, stcm cpen; lftiox-, = lft|X| — u — eps; Zu = xy, topl0y5 = m; !A> = W>\ W10 draw 5.. 6; % bar link if les j£ 0: call * b serif (3f J, 4, — les); call ^ C ser/'f (3, 1, 4, /cs); % right serif fi. "The ligature ffi"; call <:harbeg/n('l76,15, 0, 2sc, ph, 0, ph slant -f- 5pwi -|~ (2sc — 2)pu); hpen; ^i— good, 2.5u; Xj— good, .5r; x j — xj — x, — a>2 = xj — .t, ; x(s ~ Xr} = x*y, 1/2 = V1 = Jtoi cpen; top,?/; -- ,8[m,/i]; rt iX\ — rt|Xo; call 'a fstroke(2, 1); % left bulb, shoulder, stem, and serif call * b /stro/cc(4, 3); % right bulb and shoulder, middle stem and serif hpen; top0yo = m ; botofft ="- 0 ; W\ d r a w 5 .. 9 ; % right stem cpen; 1ft 10^7 = lfljSi -- u — eps; xH — xr>] top10j/7= m; J/3 = J/7; wu) draw 7.. 8; % bar link i f les 7^ 0: call * c serif (5, I, 6, — les); call *d.serif (5,1,6, /cs); % right serif fi. lig -173: M -- '176, M --- '177; 131
-a^L_ IEEE al -*"' aa2 3i*r±-' 1 kbfc fc1 v bl a3 i i I b3 ba2 • •bb$ KiAr' 3 'H1 9> tl r2 / ,'* ^t- £ /'/ }■/ .>■ .,-•-*. ^'/i i2 /'" ''' / IV t \ I \ a*-' / X • / ?>•> 4/ / / / ( *5 • N, *X / / V i"-3r b4 / • s 3 ♦ .J —i 2 1 • / >• ib AW V.-;. Tv 1 132
"The ligature ffl"; call cliarbegin(' 177, 15,0, 2sc, ph, 0, ph slant + .5pwi -|- (2sc — 2)pu); hpen; x\ = goodj 2.5u; X\~~ good, .5r; *?> — *.\ = * i — ^2 = ^:J — x\ i *r> = #5 = *9i 1/2 = 2/1 = !/ft) open; top:iy2 = -9[m,/i]; 1*3X1 — rt^; call ^a/sirofce(2; 1); % left bulb, shoulder,stein, and serif call " b fsfcroJce(4, 3); % right bulb and shoulder, middle stem and serif hpen; top0y& = h\ bot0y5 = 0;^|draw 5.. 9; % right stem open; Ift l()x7 = lft{x{~u — eps; s8 = xy, top,0y7 = w; im = \fi\ wU) draw 7.. 8; % bar link if lesy£ 0: call "c serif(5,1, 6, — les); calPd serif(5, 1,6, les); % right serif n. The file romitl mf % This file defines characters common to roman and italic text fonts % that do not appear in non-ligature fonts. % Character codes '040, '0 12, '055, '100, '134, ' 136, ' 137 are used. "The Scandinavian letter o-slash"; call charbegin( '040, 9,0,0, px +-.5pd, 5pd, (px + .5pci)-s/ant~|-.5(pw — pwii)); hpen; X\ = r — X['t % axis of left-right symmetry if fixwidth = 0: lft^X'i = round .5tt; else: lft'2x<2 = round 1.5u; fi; x{ — x2 — x-.i — x\\ top0y! = m -|- oo; bot()y2 = --00; y2 = 1/3; call "adarc(l, 2, tt>2); % left part of bowl call "b darc(l,3, ti>2); % right part of bowl x.\ = z2; a:-, = xyt y, = —5ci; y-, = m + .5<i; ti\) draw 4.. 5. % diagonal "Closing quotes"; call c/iarbcgin('042,9, 0,0, ph, 0, 3(/>x,ph] -a/ant -f-.5pvv — 2.5pu); % There is rotational symmetry with respect to opening quotes. open; top ,j/| —top0y^ —/i; top(iy, = m; «, ~ 5j[y,, y2]; z» = *i = good:, 1.5u; X3 = good0(x| + it + eps); x,\ = X\ — 5u — cps; X| 1 — x\ = .t|-2 - - :r-> — X|.j - x.\ -- X\ . — .T| -■- round 3.5u; iu.j draw 1; % left bulb draw 11; % right bulb hpen; %draw 2(1,0} 3{07—1} .. 4{3(x, — xj), y, — y.j}; % left tail draw 12{1,0}. 13(0, -I}.. l4(3(xM-*,,,), yN - yl:j}. % right tail lig -: — = '042; 133.
} I [»■—I 1 I LJ—I—I—LJ h. A ■ . --, . -^| / ~n .J--' l ,a2 > 1 3.3 1 / v \ \ \ 4 > / / • -• a4V / V ^ y • V 5 / • ..• " ■•-, "i • /' * ,' / ■--a * / / 15-- *% ^ >w / 771 "" / >• \: 1 /. "A N N \ ? \ . \ ! b3 ' i i r I / 'b4 /' • . 1 .-•■' .■•' 1 j [ 1 v. 4 \ 0 ft > : 1 / / 1#1 1*2 4 r f=j^^E^^ 134
"Hyphen"; call <;/]arbeg/n('055,fixvvi(/fh[6,9], 0, 0, px, 0, .5pxs/ant — .5pu); vpen; y{ = y2 — .5m; if Fix width = 0: IftyXi = 0; rt7X2 = r - u ; else: lftyX| = 1.5u; x2 = r — x\\ fi; i^; draw I.. 2. % bar "The Scandinavian letter O-slash"; call clu\rbegin{ MOO, 14,0,0, ph -f ph, pb,.5ph s/ant —.5pu); hpen; i f fixwidlh t^ 0 : new save; save = sqrttwo) new sqrttwo; sqrttwo — sqrt save; % super-supcrcllipse lft')X-2= round l.5u; else: lft-5X-2 =■- round u\ fi; X| = r— X|j % axis of Irft-right symmetry topny, = h + 00; bot0y2 = --00; y.j = y2; x;, = r — x2; call * a darc( 1, 2, tu;,); % left part of bowl call * b darc{ I, 3, u>->); % right pari of bowl if fixwidth -y£ 0: new sqrttwo; sqrttwo •— save; fi; t<>PnJ/i = /i -f- 6; botciyr, = —6; rt0z.i - lft->3;j; lft<)X".> = rt0x-2; u*} draw 4.. 5; % diagonal fi. "Opening quotes"; call t7)ari>ogm('i34, 9, 0, 0, p/j, 0, ptislaiit f 5pw — 5pu); % There is rotational symmetry with respect to closing quotes. cpen; botjiji — bot(iy2; top(iy, = /?; y:J — *[y,, y2|; !A> — U\ — m-h; x, ~ x2 ~ good j 4u; x< — gooJ()(xi — u - - ops); X|==X|-(- .5u + eps; X| | — X\ = X|«2 -- x2 = x\ { — x.i = Xj j — X| — round 3.5u; !/■ i = vw vvi — »; vn = w; yi i = v\\ W[] draw 1; % left bulb draw 11; % ri^ht bulb hpen; w{) draw 2{-l, 0 } 3{0,1} 4{3(x, — xj), V\ — y.«>; %left tail draw I2{-I, O}. . 13(0,1} . H{3(x,, - *,,), y,, - yu}. % right tail lig - : -•= '734; "En dash"; call charl>eg/n('136,9, 0, 0, .5px + 5pw-a.spec(y 0, .5px-s/anl-|--.5pu); hpen; lft<)X| = 0 ; rt(>x2 = r; yi = y2 = 5m; t^, draw 1.. 2. % bar lig *-: -- = '136; 135
— ~~ • j 1 '"'■■" L_l nl h /[ In 4 '1 1 J 1 1 *n• ■ 1 III 1; ° 1 1 i H ilLLLLI IJJJ [ .1- hi ..k] J' •■r'i"i- X FT" 1 1 1> N 11 II —_ ♦ ' 1 1 1 1 1 1 136
'Em dash*; callcl)arbegm('l 37, 18,0, 0, 5px + .Spvv-aspcct, 0, .5px-slant + .5pu); hpen; lTto^i = 0 ; rt0x2 = r ; y{ = j/2 ^ -5m; u\) draw 1.2. % bar lig '136: -- = '137; The file romits mf % This file contains the characters substituted into a text font when Jigs — 0 is set. % Character codes '025, '026, '031, '032, '040, '042 '044, '055, % '100, '134, '136, '137, and '173-'177 are affected. "Infinity"; call ch<irbegin( '025, 18,0,0, px, 0, .5px-s/ant —.5pu); new u*).s,u*)o; v*n = round .25[u*;, u;-,-); iajS = 2(101, t//2]j vpen; top09?/2 ~ m + °°; botoof/i -=r —oo; 1/2 = t/i; ?/i = j/j; *i = *>; x3 = x 1; 1/5 = l/c> = !/7 = 5[y,, ^2]; lft(>X7 — round u\ rl(jx.-> — round(r — u); xo — 5[x7, xr->l; new ss, mss; ss = —6u/m; % reciprocal slope at center if u*) = u*)h* mss = ss; e/se: mss = .75&s; fi; call 'a zdraw(5, I, 6,4, 7,tL\)<)ttu<)s, ss); % lower right and upper left strokes u*w, draw 5{ 0, l}.2{ -- 1, 0}.f>{ mss, —1} . 3{ —1,0}.. 7{0, I}. % upper right and lower left strokes "Circle-times operator"; call charbegin( '026,18, 0, 0, p/i, ph — 2pa, pa slant - .5pu); c.po.n; lftoX<> = round u; y^ = a; x^ — r .. xh; top0j/s — /i -|- 00; call cjrclct) 2 3,4,5,6,7,8,^); % bowl wo draw 7 .. 3Y % upper left to lower right diagonal draw 5..1. % lower left to upper right diagonal 137 •
J— • V- ._. _1 - - ■2 — —1- — -- *r -fc» r 1 1 "K 3 B p / i •aid 1 1 i i ! i •^ 'j' »♦ ^3 * — 5 ■ i / i i L. 1 / 1 1 1 .^_ L S 1 ^ 1 r i 1 t t i i i i. i i i 8^ • i i i /. / i ♦ h li 1 1 i 1 1 1 f 1 i 1 | 1 < > 1 — — — j- - — ,-4\ * 1 1 * ) • ! i > 1 j jj i | i ] i II j j 3 * j 138
"Rightward arrow"; call charbcgin('03\,l8, 0, 0, .24ph + 5prt + pa, .24ph + .5pr£ — pa, pa-slant — 5pu); cptn; lftio^ = round u; rt|0£| = ^ = round(r -- u); y< = 1/2 = Vs — Vs = goodl0a; W[o draw 1.. 2; % bar hpen; rt [Xh = zg; £5 — ^8 = z« — £3 — fix width[3tz, 6ttJ + eps; £j ~ x | -- av> = £7; J/J — !A> = i/i — yj = U[ — V\ = \)i -- V\ — -24/i + cps; rpen#; u>io + u>i draw (5.. )8..3(..6); % erase excess at lower right hpen; draw (|u/i|5.. )8 . .|wfo|3(.. 6); %lowcr point rpcn#; tuio + wi draw (5 . )8.. 4(. 7); % erase excess at upper right hpen; draw (|tot|5 .. )8.. |ti*j|4(.. 7). % upper point "Urderbar suitable for < and >"; call charbcgin('032,18, 0,0,0,.5[px,p/i]-|-prt/2 -- 2p/i + (px — pe), 0); Vn — good l0 .5[m,/i]; 5[y2-2, y2 j] = good u)a; y, = y2 = Vi 1 — (m — e); open; 1ftk>xi = round 2.5u; £2 = r — x\\ Ww draw 1 . 2. % bar "Blank-space sign"; <;alldiar/jcgin( '040, 0, 0, 0, .5[px, p/j], .5pd, .5(px, ph] slant + .25pu); cpen; new %>; ww — roum\{7 5 pixels pw + blacker); % smaller than hairline lft<j<)£| = round .25te; rl\\<)X/\ —• rourid(r — .25m); x\ = Xi\ xj = x.\\ V\ — y\ " .5(m,/i]; y2 = y* = good<)9(— .5d); tojcjdraw 1 . .2. .2. . 3.. % left stem, bar, right stem "Straight double quotes"; call charbeg/n('0-12,9, 0,0, ph, 0, p/i s/ant-}.5pwm -- 2.5pu); new 1^)9; i f v>s Wu s(|rt2: wno = round utjsqrt 2; else: uv)<) = w\\ fi; x, — r2 = goodcK) 3u; sj = x.\ = r — xx\ cpen; top09y, = h\ ij2 = .5(e, m]; 3/3 = yi; y,j = yn\ call " a cdraw( 1, 2,99,0); % left stem call ^b cdraw(3, 4,99,0). % right stem "Sharp symbol (number sign or hash mark)"; calldiarbcgi/i( '043, 15, 0, 0, p/i,p/j — 2pa, 0); open; lft.|oS| —round!/; X) = rri; £•> " si = r — x\\ V\ =■- J/2J yj =i/i; Vi — V.\ ~ round(m e)\ .5[yi, yj) = a; itfio draw I. . 2; % upper bar draw 3.. 4; % lower bar £5 — 2u = xi; X8 + 2u = x-i\ ar<> — rc5 = x$ — x-t\ x^ — x-t = fixwi<lth\Q, --3tz]; 05 = Vri Vb = tfii topioiA = A; 5[ifc,tfc] = a; draw 5.. 6; % left diagonal draw 7.. 8. % right diagonal 139
— al • "' \ — -v 3-8) a • '-- '•1 1 • i i l i • •^1 3t7^- • 1 .w^ L c '^N \ )**7 \ \ a9 • -"■ .- f1 "g-^.-cf .cJ2 ,d3 i '-Kr,^ a2 a3: U a4. b2 U, Vl-J 4. 10 3 a M ! 7 i liU-1 M 140
"Dollar sign"; call chacbcgin( '044, 10, 0, 0, ph-\-phtpb,ph-sl<-int— 5pu); hpcn; top0j/! = h -\- oo; bot-oj/-, = —oo) xA = goodl() .5r; yj = .52/i; lftn^= round a; 2.1 --=-■ r — -x^\ if ucs— 0: si = x5 --= x,; Mi = .5(y-„ ]):\\] y? — .5[yi, y;j|; else: ifWQ =ua}: si = x-; = xj; y(i = .5[y3, t/.j]; y? = %i, y.j]; else: Xi -f -5m — xr} — .5u — x.j; y<> = /i/4 — 1; y,- = .8h -|- 1; fi; fi; Vh = Mil tt) = 1/7i cI4cn; ,ft ^8 = lft()a<ij rtjxo — rt(,z7; x0 = x2\ x 7 = xt; ?<;., draw 8 ; % lower bulb draw 9; % upper bulb hpcn; u*j draw (){0, --1} 5{1, O } ; % lower left stroke draw 7{0,1}.1{ — 1, O }; % upper right stroke call " asdravv(l, 2, 3, 4, 5, itf||,t<*), --/i/(50u)); % middle stroke epen; xH) = xM — xy, topmy,u =/i+ 6; botm[/n = — b\ w\o draw 10.. 11. % stem "Minus sign"; cpen; if fix\vidtb=-- 0: if pa -|- 8pu > ph: call charbegifi( 4055, J8, 0, 0, ph, ph — 2pa,pa-s/anl —.5pu); else: call charbegin( 4055, 18,0,0,8pu + pa, 8pu -- pa, pa-slant — 5pu); fi; else: call charbcgin('055, 9, 0,0, 3.5pu-|-pa, 3.5pu — pa, 0); fi; 1ftio^» = round u\ x2 = r — x\\ y\ — yi = a ; W\o draw 1.. 2. % bar "At sign"; call cbarbcgin[ MOO, 14, 0, 0,p/i, 0, .5p/is/ant + .5pw — 5pu); lipcn; x\ = xH = xio — .5r; x-2 = good, -1uj x.j — x\ = x-, -- r - - xz\ lft()2x) — round u; x7 = X| | — X\i = r - - Ah ^> — ^ fcr» *i\\ toPoJ/8 = h + °°; botoyio — —oo, yr) = ym; yi =-good0.8[yio, y»]; w — Wi = JA> = gooda .2[yl0, y&]; V< —.%io, y8]; yi | ^goo(l(i.1[y,o, y^]; y,2 =--- -9[t/iu> <&]; yi == 8[y2, yi]; y-, — '^\y7t y(ij; call "adarc(J, 2, W\); % left part of inner bowl call . b darc(lf 3, u\))', % ri g h t part of inner bowl draw |?r,|4..|?/;,#|5{0, - 1 ) H)#|f>{|, 0). 7(0, 1); % stem and link call " c arc{8,7,Wu); % right part of outer bowl call "d darc(8, 9, u\)); %Ieft part of outer bowl wo draw LO{ I, O}. 11(..12). % point 141
i r K \ N \ \ . s| \ N \ \ ^ II 1 III 71 Mil 1 II II 1111*1111 III II II 1 '7 i^^TTrititrf hum iiiiiii*iiiiiiiiiii i 7 <i 7^ i i I i ( f 3 < * I t ( \ ° t ♦ l V VL I*"*"**" 33 p » * • p." r 142
'Reverse slash"; call charbcgin{' 134, 9, 0,0, ph + pb,ph + pb — 2pa, 0); cpen; lft|o«2 = round u; xL - r — %\\ t°Pioto = h + 6; .5[yb y2] = a; i^io draw 1.. 2. % diagonal "Upward arrow"; call charbcgiii{' 136, 9, 0,0, ph, ph — 2pa, .75ph-siai)t + .5pw — pu); cpen; lopl0yi = JA) = ^i %i,to) = <*; xo = x\ = x>2 = x5 = xg = good,,, .5r; tuyo draw 1.. 2; % stem vpen; top7y& = yo; lpen#; u>io draw 0.. 8; rpcn#;u>|0 draw 0. .8; % clean the top Ms — M» = H& — w = -24A H- ePs; to = to = to = to; Xi — xk — x\ — xj = x\ — X| = x7 ~ 54 = 3u + eps; Ipenf; w\q draw (5. .)83( ••*>); % erase excess at left vpen; draw (|u^|5.. )8.. |u*|3(. .6); % left point rpen*; w\0 draw (5. . )8..4(..7); % erase excess at right vpen; draw {\wr\5 ..)8. |u*>|4(.. 7). % right point "Leftward arrow"; call charbcgin('137,18, 0,0, .24ph + .5prt + pa, .24ph-|-.5prt — pa, pa slant — 5pu); cpen; lft|QX| = x& = round u; rt 10^2 = round(r — u); to = to = to = to = good10a; ww draw 1.. 2; % bar hpen; Ift|X8 = $0; x5 — xg = xs — X3 = —fixwidth[3uf 6u] — eps; x$ = x^ = x& = X7; to — to = to — to = t/4 — t/i = to — to = -24/i + e p s ; lpcn#; win + tui draw (5. . )8..3(..6); % erase excess at lower left hpen; draw (\w\ |5.. )8.. |u*>|3(.. 6); % lower point lpen#; ti^io ~h ^1 draw (5 . )8..4(..7); % erase excess at upper left hpen; draw (|ti>i|5.. )8. .|i^}|4(.. 7). % upper point "Left brace"; call charbegin{ '173,9, 0,0, ph + pb, ph + pb — 2pa, (ph + pb)slant + .5pw — pu); hpen; x-i = X3 — x5 = *<> — good, .5r; X| — x2 = x<i — x,\ = 3u + eps; X\ = x 7 ; toPoto = fc + b\ to = -5(1/1, t/7] = .5[to, to] = 5fyj, y^] = goodGa; to- - to = to --- Vi = (l/i - - y,)/4; draw K#|l{3(x2 - x,), y2 -y,} . . K#|2{0,-1} .>1#|3{0,-1} .. |tn>*|4{3(*i — x;)),to — to}; % uPPer stem draw |ti*,#|7{3(a* - x7), t* - to} • |uit l|6{0,1} . |wi*|5{0,1} . . K#|4{3(x„ — xr>), y., — y5}. % lower stem "Vertical line"; call charbegin(' 174, 5,0,0, ph + pb, ph + pb — 2pa, (ph + ph)-slant + prt/2 — 2pu); cpen; xv = X2 = good10.5r; top10yi = /i + fc; ^[y\9y^ — a\ wi0 draw 1.. 2. % stem 143
1 I j i ! 1 1 I 5 • \y^ >•'' <j~^ (T ^ *^% 2^ • ! V^ P 3 / -r" /5 - ♦ | I ( 1 1 \ !e' \ • L-" ./ _^---' i nl♦♦♦at i y 144
"Downward arrow"; rail charbegin('175,9, 0, 0,ph,p/i —2pa, 0); cpen; top{0y-2 = h\ .5[t/i, j/2] = a; yo = botioyi; xo = x{ = x2 = x5 = xH = goodl0.5r; toio draw 1.. 2; vpen; bot7y& = ja>; lpcn#; W[Q draw 0.. 8; rpen#;wio draw 0.. 8; !/5 —y& = »b —Vj = —-24/i— eps; y.j = yi = ye yz; X3 — xfe = Xi — X3 = x,\ — X[ = X7 — x.i = 3u -f- eps; lpen#; wio draw (5 . )8..3(..6); vpcn; draw (|ti^|5..)^-|t^i|3(..6); rpeti#; w\o draw (5.. )8..4(..7); vpcn; draw (|tV7|5 . . )8 .. |^|4(.. 7). % stem % clean the top % erase excess at left % left point % erase excess at right % right point "Right brace"; call c/iarbcgin('176, 9, 0,0, ph + pb, ph -f pb — 2pa, (ph -f- pb)s/ant + 5pwi — 4pu); hpen; x2 = x* = xr> = x^ = good, .5r; Z| — x2 = x',', — £\ = —3u — eps; £1 = x 7 ; t-°p0yi = /i + 6; y-i = -%i, yj\ = .5[y2, t*] =.5[t/j,^]= good0a; v\ — ui = y.j — y.1 = (yi— yi)/4; draw |u*)#|l{3(^ —rci),y4 —yi}..K#|2{0, -1). |u;i#|3{0f -1} . . |u*)#|4{3(xt — x:i), y,\ — t/3}; draw K#|7{3(xo - x7), t^ - yz} |w,#|6{0,1} . |ti/i#|5{0,1} . . |u*)#|4{3(x., — x5), y4 — y5}. "Straight single quote"; call charbegin{ '177, 5,0,0, p/i, 0, 0); new tOf)9; if wj<u*) sqrt 2: ww = round t/Jo sqrt 2; else: tujo == W3; fi; x, = x2 = good,, .5r; cpen; topmy{ = h] y2 = .5[e, m]; call ^ a cdraw(l,2,99,0). % upper stern % lower stem % stem 145 *
146
ITALIC CHARACTER DESIGNS The Ale italic.mf % The Compuler Modern Italic family of fonts (by D. E. Knuth, 1979). danger = /ni/8; input romitu; % upper case (majuscules) input ital 1; % lower case (minuscules) input itald; % numerals, ampersand, and question mark input romitp; % punctuation symbols common to all roman and italic if mi 7^ 0: % the following is the "easy" case, a math italic font input greekl; % lower case Greek letters input italms; % special symbols for math italic input itmcxt; % nonstandard characters (codes '134, '136, '137) texinfo slant, 6pu,3pu,2pu, px, I8pu,2pu; else: % the following is the "hard" case, a text italic font input rom i ta; % accents and other symbols common to roman and italic text if Jigs 7^0: input ital ig; % letter ligatures (codes '173- '177) input itals; % miscellaneous letter combinations input romitl; % ligatures common with italic input i ttext; % nonstandard characters (codes '043, '044) else: input rom i ts; % substitutes for ligatures fi; if fixwidth = 0: new k, kk, kkk; % three degrees of kerning k = — .5pu; kk = —1.5pu; kkk = —2.5pu; uk = -^-pu\ lig d: "w:" 1: '1 kern uk; Iig T: 'V: 'a kern kkk, "o kern kk, "e kern kk, 'a kern kk, "u kern kk, "r kern kk, ' K : ' X : 'Okcrnfc^C kern k} "G kern k, "Q kern k; Iig T: *y kern kk, *Y: "o kern kk, ~e kern kk, 'a kern kk, " u kern kk, " r kern kk, ' P: ^W: 'a kern kk; lig "O: A kern k} "W kern k, "Ykern k, . vkern k^X kern A:; if ucs 7^ 6: Iig "R:; fi; Iig ' A : % t kern k,~b kern k, ~ h kern k," k kern /c," 1 kern k, " m kern k, * n kern k, * r kern /c,* v kern k,% w kern k} ' L: " i kcrnfc,'u kern A:, "T kern kk, "okern A;,"U kern k^C kern k> "Wkern kk, "Ykern kk,"G kern /c,"vkern kkk, "Q kern k% 'b: *c: "e: "o: *p: %r: " a kern fc,% c kern k, * d kern A:," e kern A," g kern fc, * o kern A:," q kern k\ 147
mm rrr-m / uJM \ r i ill ,'d'3.n 148
tcxinfo slant, 6pu,3pu,2pu, px, 18pu,2pu; else: texinfo slant^pu, 0, 0, px, 9pu,9pu; fi. The file itall . mf % This lower-case italic alphabet was prepared by D. 13. Knuth in December, 1979, % inspired by the Monotype alphabet used in The Art of Computer Programming. % Math spacing is obtained by setting rni = I, otherwise set mi = 0. % Character codes '141-'172 are generated. new mc, lbowl, Ihook, rbowl, rhook, rstem; % quantities used in spacing corrections m c = mi/pu; rhook = ^px-slant -\- 5pw + .5pu; lbowl — .3px-slant — 5pwii + pu; rbowl = .7px-slant -\-.5p\vii — pu; Ihook = ^px slant — .5pw — .5pu; rstem — px slant + .5pwi— pu; "Italic letter a"; call charl>eg/n("a, 9, mclbowl,—mc rhook, px, 0, mi[rhookt 0|); cpen; £| — .5(x2, x;<]; x-i =---- good2 l.5u; xj = x.\ — x-> — good,(r — 2.5ix); ^°P(iJ/i — m + °°; botft!/2 — —oo; y* — yi\ top,?/i = m — .02/i; call 'a darc( I, 2, w2); call * b <Mr<:( |, 3,t^o); % bowl W\ draw 4; % make end point round call ^ccxit(5,r); % closing hook hpen; W\ draw 4.. 5. /o stem "Italic letter b"; call charbegin("b, 8, mc-lbowl, —inc-rbovvj, ph, 0, nii(rbovvi,0]); hpen; *i = x2 = goodj 1.5u; x.-, = goocl.2(r — 1.5u); z:i = x i = .5[x2t x5l; top,yi = fc; 1/2 = -5(1/;,, !Ai]; top0j/3 = m + oo; bot0J/i = — oo\ ys = y4; call ^ a serif (1,1, 2,— les), % serif w,draw 1 . 2; % stem call * b arc(3, 2, u*,); call "* c arc:( 1, 2, ta,); %lcft part of bowl call "d darc(3, 5, v>2). % right part of bowl 149
FFR U////AJ 150
"Italic letter c"; call charbegin(* c, 8, mclbowl,— ^mc-px- slant, px, 0, mi[pxslant— pu, 0]); hpen; rt^ = rt0x2 = round(r — ' 1.52 1); *3 = *5 = .5(r + u); x,i = good2 1.5~; rt()Xb = r — .5iz; topoJ/p, = .5e; x7 -=^\ ?/?= ^ y, = j/2 = .5[c, m ] ; top0yj — m + oo; bot0yj = —oo, y-> = y.\\ u\) dra w 2{0, 1} .. 3{—i, 0}; % shoulder call "a darc(3,4,ttf2); % bowl tty) draw 5{1,0}..6(..7); % point cpen; tu.i draw 1. % b u i b "Italic letter d"; call max(phslant + .5pvvi - 2pu,rhook)] call cbarbcgin("d, 9, /nc/bow/,—mcacc, ph, 0, mi(acc;0]); hpen; X[ =■ .5[x2,x.j]; 2:2 = good2 l.5u; x:j = x.i = x-> — good,(r — 2.5u); top,y.| = /i; lop0yi = m -f 00; bot0y2 = —00, y.\ = Vi\ call "bdarc(i,2,to2); call "cdarc(l, 3, m); % bowl call ^d exit(5, r); % closing hook call 'a scrif(4,1,5,— lcs)\ % serif Wi draw 4.. 5. % stem "Italic letter e"; call charbcgin^e, 8, mclbowl, — ^mc>pX'slant, px, 0, mi(px-slant —pu,0]); hpen; rtoX] = round(r— 1.5~); *2 = good2 1 5u; z3= x.i =.5(r + u); rtoXs = r — .5u; xo = xr>; yt = .5[e, ,„ /, y2 = ,.- top0yj = m + 00; botoj/4 = —00; top0y5 — .5e; IA3 = e; w0 draw 2{1,0}..1{0I1}..3{—1,0}.. 3{ —1, O}; % bar and shoulder call 'a arc(3, 2, tt^); cair b arc(4, 2, v>i)\ % howl draw 4{1,0}..5(..6). % point "Italic letter T; call charbegin^ f, 7, 1 — fixwidth — mc{pdslant + pu), 1 —/ixw/dt/i —mc(pxsJant), ph, pd, phshint -f- .75pu — mi-px-.s7ant); cpen; lft;jX| = lft0x2 = round .75u; rtjx:j = rt()x.i = round(r — .75u); x5 = r —2.25u; x& = good {(.5r — .5u), x7 = good^.Sr + .5u); x8 = 2.25u; bot3yi = — 9d; y2 = l/i"; Jft = t/-i; 1/5 — Vs = 1/2 — Vs\ top0y5 = /i +00; y-, — tto = W — V*', botG!/7 = — i^,' bot0ys — —d - - 00; Z9 = X(i — 2.25u — eps) xJ0 = x<$ + • -75u + cp«; toPioW) — mJ 1*) = V10; u>;t draw I; draw 3; % bulbs wjo draw 9.. 10; % bar hpen; draw K|4{0, 1} K#|f>{—1, 0} |u,,#|6{xy — x&, yi --V*) . . K#|7{x7 -%, Vi ~ I*} • h)*|8{-l, 0} . . 2{0,1}. % stem 151
1111 I •III III JJjJJl /.i2/ ■' -^ • I'll III "'a3 /-f Will? rn / / /»/ / ;t8V j nfTTi Mill I t f at I I I t mi iru 11 . / ^77 fV / V//7777/77 * i JLL * i ' ' I ! /f It t hi i %y j i i 152
"Italic letter g"; call max(—lbowl, pd slant — l.5pu); call charbegin(^ g, 8, —mcacc, -mc( rstem — -^px-slant), px, pd, mi[rstem, ^px-slant]); cpen; x{ = x^ = .5r; x2 = good2 1.5u; z.i = X\ ~ x-> = good^r — 1.5u); lft jXs = lfto£7 = round 2u; top0y, = m + oo: bol(&2 = —00; y.\ = ife; top,t/i = m — .02/i; t/3 ~ — i^; botfit/u = --d — 00; botAyj — —M\ ys = Vt\ wA draw 8; % bu,b w\ draw 4; % make end point round call " a darc{ I, 2, ti>2); % ,eft Part of bowl call * b darc(l, 3, W); * right part of bowl hpen; d r a w |tu,J4.. |u/|#]5{0, - 1} . )u>()#|6{ — 1, 0} .. 7{0,1}. * slem and tail "Italic letter h"; call charbcgin{^ h, 9, 0, —mcrhook,ph, 0, /7ii[/*book,0]); cpen; x{ = x2 = good, 1.5u; x.i — good,(r — 2.5u); x.\ = x:i— .25u; toPuI/i = ^; botii/2 = — oo\ W\ draw 2; * make end point round calP a serif (1, 1,2,-Jcs); * serif hpen; W\ d r a w I.. 2; '0 stcm call " b italhstroke{2, 3); % stroke call -c skew exit(4, r); % closing hook draw 3{0,— i}.4{ —u, -m}. % ,ink "Italic letter i"; call max{rhook, ph-slant + .5pwiii — 2pu); call charbegfii('i, 7, 1 -- /ixvvidt/i + rnc Jhook,l— fixwidtb — mcacc, p/i, 0, mi[acc,0]); xi = .5r + .25u; £2 = 5r — .25u; call "askewentry(uj); % opening hook call" b skew exit(2, r— u); % closing hook hpen;tO|drawl..2; /o stem cpen; topjt/j = h ; xj = .5r; t^draw 3. % c,ot "Italic letter j"; call charbegin(* j, 7.5, I — fixwidth -- mc(pci + pd slant)t 1 — /ixwidth -- mc(pc-slant -}• .Spwi -- 1.5pu), ph, pd, mi\ph -skint -j- .flpwi --- l.5pu,(ph -- pe)s/ant]); cpen; Ift/jZi = lft0x2— round .5u; z* = 2.5u; z,— xj ~goodj4.Su; rtjx« = rt|.T-,; top j^} — h; bot jj/j = —.9d; t/> = xj\; botfit/i = — d — 00; botCiyi = —\d\ Wj draw 1; % bulb draw 6; % (lot call "aentry(u, 5); %opening hook hpen; draw |u;,|5 .. |w,#|4{0, — 1} .. K#|3{— I, 0} . . 2{0, 1}. % stern and tail 153
mm uMii • } > / ' ' ' MiM -; 14 I IT lllk mm L 17/i 'If/ L*J j I I !\ fr£l 2 ///y//¥///i A/2/// fmii 154
'Italic letter k"; call charbegi/i(" k, 8,0, —mcrhook, ph, 0, mi[pxslant, pxslant — rhoo/c]); cpen; x{ = x2 = Xj = good, 1.5u; x.{ = r— 1.5-; rt.iXti = rt()X5 = round(r — .5u); x7 = good1(r— 2.75-); xH = r — 1.2571; Xq = good0r; topoj/i = h\ botij/2 =-oo: 2/3 = good0e; top0y.| = m + 00; y*> == u> = $[e, m]; t/7 = -5e; botoifc = — oo\ y^ = £m; Wy draw 2 ; u>3 draw 6; call 'a serif (1,1, 2, — Jcs); hpen; W[ draw 1. . 2; tub draw 3(1,0} .. 4(1,0} .. 5{0f —I}; draw K#P(l,0}.|u,,#|7(0,-l}. . K#|8( 1,0}. .9(0,1}. % make end point round % bulb % serif % stem % upper diagonal % lower diagonal and closing hook "Italic letter I"; call max(rhook,ph slant + .5pwi — 2pu); call c/iarbeg/n(" l, 6, 1— fixwidth, 1 —- fixvv/dth -- mc r/ioo/c, pij, 0, ace — mirhook); hpen; X| = x2 = good, 2.5u; top,yi= h; call * a exit(2, r — u); % closing hook can * b serif (1, 1, 2, — Jcs); % serif Wi draw 1..2. % stem "Italic letter m"; call charbcgin(*m, 15, mc Ihook,—mcrhook, px, 0, mi[rhooJc,0]); cpcn; Xi = x2 = good, 2.5ii] x3 = x.\ = goodj .5r; £5 — X3 = x* — x\\ x^ == x-,— .25u; bot|t/2 = - 0 0 : l/-i = J/2; w>i draw 2; draw 4; % make end points round call " a cntry(0, 1); % opening hook hpen; w\ draw 1.. 2; % left stem call " b italhstroke(2f 3); % left stroke draw 3.. 4; % middle stem call " c ita//Ks(ro/cc(4, 5); % right stroke call "d skcwcxit(6, r); % closing hook draw 5(0, —1}.6{—u, -in }. % right stem "Italic letter n"; call cAiarbcgiu^ n, 10, mc Ihook, -~mc rhook, px, 0, mi[rfjooJc,0|); cpen; Xj = ;<:2 — good, 2.51 1: x-, - good,(r — 2.f>u); xo = x-> ■ botij/2 = —00; W\ draw 2; call * a en*ry(0, I); hpen; ^1 draw 1.. 2; call . b itaIhstroke{2, 5); call "c skcwcxit(G1 r); draw 5(0, -1). .6(—u, -m } . .25u; 0 make end point round ^opening hook % left stem % stroke % closing hook % right stem 155
mm v /I iVi -777/77"^ '7 rrrn / / /» jl/i/;i/ r?i TTn'?ffl iii • /1 pkll ti/f 1 i* 1 ■ i~ * * j .' •■ = * « / r"f t i—7—7 n I j 11 i *"■ ? h< / / / / / 156
"Italic lcttero"; call charbcgin(^o} 9, mclbowI, — mcrbowl, px, 0, mi[fbow/,0]); hpen; X[ = r — X[] % axis of left-right symmetry %i = good? 1.5u; £i — a>2 = *3 — &ij top0yi = m + oo; bot0y2 = —oo; y2 = V.h call "a darc(l; 2, 1112); % ,eft Part of bow| call " b darc(l, 3, u>2). % right part of bowl "Italic letter p"; call max(-Jhook, pd slant -|- .5pwi — 2pu); call chai'begrn(" p, 9, — mc-acc, — mcrbowl, px, pd, nii[r/>ovW,0]); xt = x2 = x.t = good, 2.5u; x;i = .5[x,(, x^]; x~> = good.2(r — 15u); hpen; botjy* = —d; top()y:i = m -\- oo\ bot0yi — —oo\ y-> — y.\\ call "aeniry(0, 1); % opening hook tii|drawl.2; % stem call " b serif (2,1, 1, — .5/cs); call "c serif (2, 1,1, Jcs); % serif call "ddarc(3,4f t/Jfo); % left part of bowl call "edarc(3, 5, 102)- % r»ght part of bowl "The letter q"; call c/)arbegin("q; 10, mclbowl, 1 — (ixwidth - mc(rstcm — \px slant), px, pd, im[rstem}^px slant])] hpen; X| = good,(r — 2.5~); x, = .5(r — u); x2 = xj = x.i; botij/i = —d; rto^7 = rt 1 x\; xj — x7: X5 = x^; lft<)Xg = 1ft 1^2; topoyj = m; y,j = .5[y>, tt;]; top0j/r, = m + 00; bot0y& = -00; new aa; lftix2 = aa[xo, x.i]; y2 = 3/7 = t/» =■= (sqrl( I — aaaa))\y,\t y^\] % where bowl meets stem if Jcs 7^0: call 'a serif(l, I, 2, — les); call " b serif (1,1, 2, Jcs); % lower serif fi; W[ draw 1.. 2; % slem u*j<l<lraw 7.. 3,8{0, 1}. . 3{x3 — x8, .5(y:j — te)>; % tn, draw 6{1, 0} .. 4{0,1} . .5{ —i, O}; % right part of bowl i f k>2 > 1.5u: lft^xg = round .75u; else: xg = good2 1.5u; fi; yt) = u*,; call x c darc(5, 9, t^)- % left part of bowl 157'
m .urn // //" I'un I mm 158
"Italic letter r"; call charbcgin(* r, 7, mclhook,—mc(px-slant— .75pu), px, 0, mi[px slant — .25pu, .5pu]); cpcn; X[ = X2 = good^.Su; £3 = r— 2u; rljx-, = rtn^ = round(r — 75u); bot|t/2 = —oo; topGt/j = m + 00; V4 = Vr> = ;2j [e, m] ; W{ draw 2; % make end point round tify draw 5; % bulb call 'a entry(Ot I); % opening hook hpcn; W\ draw 1 . . 2; % stem u\) draw 2{0,1} .. 3{i, 0} .. 4(0, -1 ). % stroke "Italic letter s"; call c/iarbcgin("s,7,0, — mc(px slant — .5pu), px, 0, mi[pxs/ant — .5pu, 0]); cpcn; rt2£i — rtox_> — round(r — u)\ x:> = 3u; Ift | |£j = round u; z5 = 5r; rtuxfo — round(r — .5u); x7 = r — 3u; IftoZfe — Ift^xo == round .5u; !/i = J/2 = -5(e, m ] ; top6j/.j = m + oo; bottty/ = —oo; j& = t/<) = .5e; (m> - tifc —.5ti*0/(m-|- 0 -- 2tt\i — Wh)= e/m; % white space ratio k>2 draw 1; W\ draw 9; % bulbs hpcn; tuo draw 2{0,1}.3{ —1, O}; draw 8{0,-O..7{ 1,0}; % links new aa; if m — e > e: aa — m - e , else: aa = e; fi; call "asdravv(3, 4, 5, 6, 7, wu, w$t — aa/(l8u)). % stroke "Italic letter t"; cpcn; call max(rhook, px slant— .5pu -}- .5pw); if pjc — pe <75(p/i— pjcj: top|t/j= 2m — e; call charbcgin(*t, 7.5, I — dxwidth + mc(pxs/ant — pu — .5pw), 1 — fixwidth - /nc-acc, 2px —pe, 0, nrj/[acc,0]); else: top^i = .75[ra,/i]; call charbcgin(*t, 7.5, I -- fixwidth -\ mc(px slant - pu — .5pvv), 1 — fixwtc/lh — mc acct 75(px, p/j], 0, rrjijacc, 0]); //; xi = X2 = goodl 3tt; X3 = x\ — 2.5u— eps; £4 — X| -f2.5u + eps; W\ draw 1; % make end point round topioJ/j = m ; y,\ = 3/3; Wm d r a w 3 .. 4; % bar call ^a cxit(2, r — u)\ % closing hook hpcn; u/| draw L. .2. % stein 159
U4 m 11 mill y? \7—?—i—1~. ovn f-4-4-U*-U-t I I /' // / ' / / Iji 11 ini N'V M V'J ^77/77/7 ■f rffiiffe / ^777777777 / #/ r//// ii nil nwfhm JMJMlMi IMJMh 160
Italic letter u"; call ch*rbegin(^ u, 9.5, mclhook, —mc rhook, px, 0, mi\rhook, 0]); cpen; X\ — .25u = x2 = goodj 2.5tt; x* = x2 + .5u; x( = .5[x-2, a:-,]; xr, = x<, = xi = good t(r — 2.5ti); J/2 = -7e; y.j = .25[y,|, c]; bot0yt = —oo; y-> = e; topty6 = m -f oo; u>i draw 6; % make end point round call "a s/ccwentry(0, 1); % opening hook hpen; draw |u;||i{—u, — rn) .. |tui#|2{0, —-1} .. |.75[tt\), u;i]|3 .. |^,#|4{1,()}..5{0,1}; % stroke call *b exit(7, r); % closing hook W\ draw 6.. 7. % stein "Italic letter v"; call c/iarbegirj(" v,8; mclhook, —%mcpx- skint, px,0, mi\px slant, ^px-slant]); x> — goodi 2.5u; xi = xi -\- .25n; xj -~ x<i -\- .5ti; call "a skewentry (0ti)\ % opening hook hpen; y2 = .7[y.|,c]; yj = .25[y.,,e]; bot0y, = —oo) x{ = 5u; rtoxs; = round(r — .5u); y-, = e; draw |^,| l{-u, —m} .. K#|2{0, -1} .. |.75[ti;0, u>i]|3 .. K#|4{1I0}..5{0,1}; % stroke call "* b endv(5). % closing bulb "Italic letter w"; call churbcgin^ w, 12, mclhook, —'-^inc-px-slant, px, 0, mi[px-sfant, ^px-s/anfc]); cpen; X| — 25u = x^ = goodj 2.5u; x* = x2 + 5U; x.t = 6[x'2, 2:5]; £■> ="" a<i = X7 = good, 6.75u; x« = x; + .5u; x.) = r — 2.75u; rtoXio = round(r — 5u); y2 = Je; yj = .25[yi, e]; botuyi == —00; yr, == e; top,yfc = ra -f 00; u>i draw 6; % make end point round vi = m\ ys~Ui', ») = y-»; 1/10 = ys; call "a s/cewentry(0, 1); % opening hook hpen; draw |iU||l{ — u, —rn) . . |u>i#|2{0, — 1} .. |.75[«*), W|]|3 .. K#|'1{1,0} .5(0, I}; % left stroke draw |w,|6 .. |u,'i#|7{0, — 1} .. |.75[^,, w{]\8 .. K#|9{ I, 0} . . 10{0, 1}; % right stroke call "b e«dv(10). % closing hook 161
mm 11 udllh uJJIIl K A /Y"i /)xv <K°X\ 7 /7 7 1—1— mm frtm F '/.' t^. i I/M4 J M / 162
"Italic letter x"; i f px slant > rhook: call c/]arbeg/n("x,8, 0,— mc-px-slant, px, 0, mi[px slant,()]); else: call charbegin(* x, 8, mclhook,—mcrhook, px, 0, mi(rhoo/c,0]); fi; cpen; Xi = x? = good, .5r; lftix-2 = lftoxj; x^ = 2u; lft<)Xr, = Ift jx^ = round .5u; rtixi = rt()X7j xs = r— 2u; rtoxo = rt:jXio = round(r — .5u); l/j = tfe; boteya = — oo; yr> — y^; t/7 = yi; top^yfc = m + oo; j/|, = y,0; » —i* = tt5 —y-u Ma = jkml; call "a entry(0, 1); % opening hook call "bexifc^r); % closing hook ti^ draw 6; draw 10; % bulbs hpen; wq draw 3(0, — 1} .. 4{—1, 0} .. 5{0,1}; % lower loft link draw 7{0, 1} .. 8{1, 0} .. 9{0, -1); % upper right link W[ draw 1..2. % stern "Italic letter y"; call charbcgin( "y, 8.5, mclhook, —mc(rstcm — -^px-siant), px, pd, ini\rstem,}ipx'slant]); cpen; X| — .25?* = X2 = good, 2.5tx; x3 = X2 + .5u; x,j = .5[x-2, Xr>); x.5 = x^ = X7 = goo<l|(r — l.5u); x<s = .5r; lftoxg = 1ft jXio = round 2u; m 7e; yj==.25[y.|, e]; bot(iyi = —oo; y:> = e; top,yo = m-\-oo; w\ draw 6; % make end point round Y7 = 0; botat/H = - d — oo; &) = y10; bot3j/io = —.75d; Wj draw JO; % bulb call "a skewentry(0, 1); % opening hook hpen; draw \w[\l{ — u,—m}..\w{i\2{0)—l}..\J5[w{))wi)\3-. |u*)*|4{i,0}..5{0,1}; % stroke u>i draw 6. . 7; % stem call * b arc(8, 7, tt>i); % tail ti*> draw 8{ —1,0}..9(0,1}. % link "Italic letter z"; call charbcgin("z,7, 0,--mcrhook, px, 0, pxslant + .5pvv — /nrr/iook); vpen; X| = good0u; x2 — x.j = 2.5u; x.~, = 5w; x^ = good0r; x 7 = xg = 5u; xl0 = 2.5u; xn = X|2 = good0(r — .5u); xn = xM = *i; yi = .75m; top(5y2 top8y3 m + oo; bot8yj = bot(iy,; y-, =• .825m; yb = 'm; botoy? = bot8y& = — oo; top8j/s — top(iyo; y,0 = .l75m; V\ i = Vz\ V\-2 == yu + (^ 4- b — "0; ?yi:j — Vi; Vi\ — 1/13 — [h f 6 — m); u* ddraw 1{0,1}..2{l,0}..5{l,0},l{0,l}..4{l,0}..r>{l,0}; % upper bar ddraw 10(1,0}..9(1,0}..6(0,1},10{l,0}..7{ I, 0}..6(0, !}; % lower bar draw 5(1,0}.. 11( 12); draw (14 )13..10(1, O}; % links drawll{x|al — x, ,, 2(yu — y, 1)) I3(x,:, — x, ,, 2(y,j — yM)}. % diagonal 163
/ / / / !J~JTT 164
The file itald.mf % This file contains the ten digits, as well as '&' and '?', % in the so-called italic style. % Codes '046, '060-'071, and '077 are used. "Italic ampersand"; call charbegin{ '046, 13,0,0, ph, 0,0); hpen; rt3Xi = rt()X2 = round .5(r + u); yi = 3/2 = 5[m,/i]; x3 = 4.5u; top0f/i = h + 00; ; lft 1X4 = round l.25u; top0yt = round ^[e,m]; £7 = X3; rtoxo = round 6u; 2/5 = y<\\ botot/7 = round j}[e,rri]; lft2x8^ round u; x^ = 7u; ys = -5[i/7, !A>1; bot0yo = —00; rtozio = round(r — 1.5-); t/10 = e; wq draw 2{0, I}. . 3{—1,0}; call "adarc(3, 4, u>|); call " b darc(7, 6, tA)); call " c arc(7,8,w2); call "d arc(9, 8, u^); call " e arc(9, 10, «*)); *n = 9u; yj 1 — .5[e,/i|; rt3X|3 = rt0xl2 = round(r — 2n); Vvi = Vu\ rt()Xi/j = round(r— 5.5-); yn = .5[e, m]; zi5 = *if> = r —4.5u; epen; top2t/i3 = h\ bot^yie ~ bot^yis = round e; ^3 draw I; xi>i draw 13; draw 16; hpen; u\) draw 10{0,1} . . ll{2(xu — xi0), yu — yio}; draw 12{0, -1} . ll{2(xM - xl2), y,, - y,,} . 14{0, -1} . . 15{l, 0}. % shoulder % upper bowl % loop % lower bowl % link % bulbs % stem % arms "Italic numeral 0"; % (Same as in the roman font, except for spacing.) call charbegin("0, 9, 0,0, ph, pd, ph slant — .5pu); if fix width = 0: new save; save = sqrttwo; new sqrttwo; sqrttwo = sqrt(1.23114413save); fi; hpen; X2 = good2 1.5u; the constant is 2,/,() *i = r — x\\ x:] = r —x2; top0y, = h f 00; bot0y2 = — oo\ yj = y*; call 'a </arc(l,2,1^2); call . b <7arc( I, 3, w?)\ if fix width = 0: new sqrttwo; sqrttwo —save; % axis of left-right symmetry % bowl 165
m i n l' H4 I ! / / / / a2 ^L ! I h U— . „ . y—/-I / / /1 -k-LMJX , / / /,2 I } mm fmm 166
'Italic numeral 1"; call charbegm^ 1,9, 0, 0, ph, pel, phslant — .5pu); hpen; X\ = x2 = good2 5r; top2j/i = /i ; bot2y2 = 0» ti>2 draw 1.. 2; % stem call " a serif (2, 2,1, -3); call % b serif(2,2,1,3); % serif toPoJ/i = -2[m, /i]; xj = If12X1 — 2.5u — eps ; V-i =-"• 1/j; rt2Xj = rtnz.i; y, = / .5[m, A/; xi = x5; lpcn#; t/>2 draw (5. )4..3{ -I, O}; % erase excess hpc n ; wq draw (5 .. )4 . . 3{—I, 0}. % point "Italic numeral 2"; call charbegin(* 2, 9,0, 0, ph,pdtph slant — .5pu); hpen; a*) = 1/ ; W) = .5[m,/i]; xi =■- 3u; y, = yo; x2 = good()3.5u; t/2 = .25[m,/i]; X[\ = 2u; bot0y.)-- round .5[e,m]; x.l~good0u; y, = m; x-, = .5r; top0yr> = h +00; x<) = good2(r — 1.51,); lft2x<) = lft0x&; rt2j>) — rt0X|o; Ms — V\o = .5[i/7, y>]; x7 = 4u; J/7 = e; x(5 = gooof,, l.5u; botoyj = —o; xn — 2.5u; yn = .4c; vpen; botsl/ij = --00 = bot^y^; top8yu = top(lyn; X12 = x\ \ — 6.5u; X| =good(l(-r -- .5u); j/i = $c; hpen; «*■ draw (0. . )1 . . 2{0, — 1} .. 3{ — 1, 0 } . 4{0,1} .. 5{1, 0}; % shoulder ddraw 5(l,0}.8{0,-i}.7(2(x7 -- xm), y? - yl0}, 5(1,0} . . 10{0,-l}..7{2(x7-xU)),y/-ylo}; % bowl draw 7{2(x7 - x,0), y> - y,0} . 6(0, --1}; % link draw 6(0,1} U{1,0}; % left part of bar ddraw 11(1,0}. .14(1,0}.. 15(0,1), 11(1,0}.. 12(1,0}. 15(0,1}. % bar "Italic numeral 3"; call c/iarbegin(^3, 9,0, 0, p/i, p<l,ph slant —.5pu)] hpen; xo = u; yb = 5[m,/i]; x, = 3?i; y, = yb; x2 = good03.5u; y2 = .5[i/,,t/j]; 1/7 — I/s = 52/?.; x.j -- 2u; bot0y, — round .I25[y7,/i]; lft0x.i= round u; y.\ = J (y^ysl; x5 = .5r; top()y> =/i+oo; rt|Xo = rouud(r —u); yfc = .75/t; x7 = .5r; x8 = x7 — u; 1ft3X9 = lftoxio -— round .75u; ja> = yio; open; topvJyb ~ 3/i; i/>j d r a w 9; % bulb hpen; botny, ,~--oo; x\\— 5fx,of xl2]; rt.;X|2 = round(r — u)\ y\i = .25/i; u\} draw (0..)l.2(0,-1}. 3(-l,0}..4{0,l}.. 5(1,0}; % shoulder draw|tub#|5{l,0} . |wl#|6{0l -1). . Ki#|7{ —1, 0}; % upper bowl draw 7 . .8; % bar draw |t^#|7{l,0}..|u>2#|12{0l~l}..|mJ#|IL{ —1,0}; % lower bowl draw 11{ — 1, 0} 10(0,1}. % link 167
/ / / / l,U lill!:'I ownJ / / / /•■ •/ / / / / / / va / // // / / <jUJL I I / II I 'mm hi i ZZZXZTEn //p^V^Tr 11 'II111 / / / If I '■* II r 1 ?M/ / / / /. /1-:>( i 1—/ / / ! Klj1*St I / / / -, / / j'-n !liiii i iii 11 I 111 in 11II i /a2, 7 / ' bi( , u 44-Lpj I / / / 20* *£c / /\ // // .' / ', 8 V . / I b4/ / < ! 4 , X,U./-- .'U / "mi UUn 168
"Italic numeral 4"; c.nllc/v>rbcgiri("4, 9, 0, 0, ph, pdfph-slant— -5pu)] cpen; top^i = k-\- 00; X\ = good, 5u; lft().T2 = round .5u; kotv>y2 — 0; x.i = 3u; y.j = .08/i; o:.| = r — 2u; yi = o : rt(,^ = round(r — .25u); y.-, = .03/i; xt\ = x7 = |--r; top,?A3 = e; botiy7 = - d ; W[ draw 1; % make end point round draw 6.. 7; % stem hpen; draw |w,#| |{0, — I}. |w;0#|2{2(j-2 — *i), V> — y\}] % diagonal wq draw 2{2(zl-:r2),y,-y,}..3{l, 0). 4{ t, 0} . 5{xr, - x.u 2(1/-, - y,)}. % bar "Italic numeral 5"; %(Same as in thr rornnn font, except for spacing.) c a / lcharbcgin(*5t9, 0, 0,pit,ixl,ph-slant • -.5pn)'} vpen; x\ = goodn2u; topsyi — h , rt(3z.j "" round(r — l.25u); top(iy.j — /i; x>i = 5\x\}x.i\\ new uv.w; ?(*)<) = round .75[w\iftuH\] topt,,,y2 ^-: round .95/i; a<) = —.5u; a:.! = r + 1.5u; tA) — l/-i ■ 1-5/ij draw (|w*i|0. )l \uky.)\2 . K|3(. 4 ) ; % arm hpen; a;-, — x^ = xx; top()y5 = h ; top^ — -75[e, m]; 2:7 =■ .5r; top()y, •-— m + oo; x<) — x7 — .5u; botoyu = — oo\ rt'i^H = round(r -- u); y* = .5[1/7, y<)|; W[) draw 5. . 6; % stem draw (9. )6.. 7(1,0}; % left, part of bowl call "a arc(7, 8, t/>2); call "b arc(9, 8, w/); % right part of bowl !ft0zm = lftjZi , —- round u; yw = y\\ — ^w* wq draw 9{ — I, O}. . 10{0,I}; % tail cpen; 143 draw 11. % bulb "Italic numeral 6"; %(Samc as inthcroinan font, except for spacing.) callc/ia/be£in(^6,9, 0, 0, ph,pd,ph-slant —.5pu)'t x\ — good.2 1.5u; x-2 — good2(r — 1.5tz); new iixyy, Wi)<)-~ round .73(1^),^]; cpen; tup ^ = h — .25e; i f Ui < .5(m,/i]: new y,; y;i = .5[m, h]; fi; rt<j<)X;j = rt(,x, — round(r— 1.57-); y» = yi; mj<, draw 3; % bulb hpen; x2{) ^ good.2(:c, -\ . lu); z-, — ^ =-- *,„ -- .5(a;2o, z2]; top()yi -- h f 00; it'u draw 4(0, 1}. 5{ - 1, O}; % shouldci bot<>?/> = —oo, topnMi — m -f 00; y2o — .5[y2, ?a>]; Vi r Vj = V\ih rLoZ7 = rt^a^o; call ** a (iarr(6, 7, «*i); call * b darc(G, 2, tt>2); % bowl new ^,„; u*)t) = ] (tA), u>2]; % intermediate width used in dare routine xH — Xi)i rt<)o^s^rt0( I /sqrttivolxii,x7])] ys = l/&qrttwo[y20, j/yj; y-, — yk, = y8 — y7; y, = .5[i/r>f y,0]; draw |tM,#|5{ — 1,0} . m \wn)\9{x7 — x^} & — y20} . . |w2*| l{0, -1) . .|waj?)|8{xo— X7. yz — y2o}. .|u*)#|10{l,0}. % stroke 769
170
"Italic numeral 7"; call charJ>cgin(" 7,9,0,0, ph, pd ,ph-slant —.5pu); cpen; x, = good, 5.5u; bot{y{ =-00; x2^= good0(r — u); top(.y2 = h\ x.\= good, ,.75tt; j/j = m; yx-. ,,.d.;.5[m,/i]; y.i = 1/7 = 2/2; (^4— *:i)/(v4— to) = 0*2. .z\)/{vi— vi); top8to = topGt/7; botsUi = bot^ys; *r> = x7 = 4u; % = §r; W| draw 1; % make end point round hpcn; draw K\)#|2{2(*i — x2), y{ — tj>) . |^i#|l{0, - 1 ); % stem ivo draw 4.. 3; % serif draw 8{ 1, 0} . . 2(2(x2 — x[)iij2 — y{}\ % link ddraw 3{x,| — xJf y., — to} . 7{ I, 0} . .8(1,0}, afc,-*.,,^-!/.!}.. 5(1,0}. .8(1,0}. %bar "Italic numeral 8"; % (Same as in the roman font, except for spacing.) call charbogin("8, 9,0, 0, ph, pd, ph slant —.5pu); n e w tiAj8,tiA)cj,ss; ta)<> = round j[t4),u>i]; hpcn; lftoc)X| = round u; x2 = r — x\\ y{ = y2\ Iftvio^j— round .75u; £4 = r — 2:3; t/j = y.\\ x-> = r — £5 = Xo = £7; top0yj= /> -|-oo; & = .52/i; botnz/7 — —00; ti>j8= 2[u;7,ws]; i f wa = ii^g: ss = 0; else: ss = h/(l8u); % slope fi; call "asdraw(5,1,6, 4, 7, tt*)9,«A)8,—ss); % upper left and lower right strokes uto draw 5( 1,0} . 2(0, — 1} .. 6{—1, —.75ss} . . 3(0,—1} . .7(1,0}. % upper right and lower left strokes 171
UX 174
T!-e file greek 1 .mf % This lower-case Greek alphabet was prepared by D. E. Knuth in December, 1979, % inspired by the Monotype alphabet used in The Art of Computer Programming. % Its spacing is intended for math formulas only. % Character codes '013-'037 and M73-'177 are used. new mc, Ibowl f Ihook, rbowl, rhook,rstcm; % quantities used in spacing corrections m c = l/pu; rhook = ^px slant + .5pw + .Spa; Ibowl = ,3px-slant — .5pwii + p u ; rbowl = .7px slant + ,5pwii -- pu; Ihook = ^px-slant — 5pw— .5pu; rstem = px slant-\- .5pwi - - pu; "Lower case Greek alpha"; call charbegin( '013, 10, mclbowl.—mcrhook, px, 0,0); hpen; X| = x,\ — 4.5u; irt'2a:-j = round it; top()y, = m + oo] botoltt ^-oo; t/2 = J/jJ call " a darc( 1,2,102); % left of bowl rtoxi rouiid(r — u)\ top()y,, — .75[c, m\\ tuo draw 3(1,0} .. 4(0,1}; % upper diagonal ^3 = r — 2.5u; a^ = r —2tt; 2/5= jjm; y* = ^m; botoj/7 =-00; £7 = r — u; xs = goodur; y* = yr>\ draw N)#|1{1, 0} |^i#|5{xg — s-j,!* — !/5> • • |u;i#|6{xb — rr5, jfe — y-,} ..|t^)#|7{l,0}..8{0,1}. % lower diagonal and tail "Lower case Greek beta"; call charbegin( '0 14, 9.5, mc(pu — pd-slant— .5pw), —mc rbowl,pl\} pd, 5fpx,ph]s/ant— pu — rbowl); hpen; x\ = x2 = x» = good,, 1.5u; bot()t/| = —d; y^ — /7? >' 33 = 3:3 = $8 = 5w; rt|X.|---roun<l{r— 1.521); *o = good2(r — 1.5u); IftoXT -~ round 3.5tx; toPoJ/3 = h + 00; bot0y4 = m — t^; top0yr,=- m ; bot0^ = —oo\ y, = y;; yr, = ys; yn = 5m; t^> draw 1.. 2(0,1} . .3{ I, 0}; % stem and shoulder call 'a darc(3, \,W\); % upper bowl call" b €larc(59 7, v\})\ % loop call xc darc(5, 6,102); % lower bowl call "d nrc(8, 9, u>o). % link 175
'U-U-L JTJTJ1, I I'rKi hi / / / / V;/ I i / • v ' if / //W/ rrt±L 1 wm m /// / b3 / /b-4 bsy Ml Ml i n i-4 L± i±H // 4 W / i i i I r U4 m: i\¥J /I 1/ /" ^/ If . / ..v B5 ,/ / w 176
"Lower case Greek gamma"; call ciiarbegin( '015, 10, mc peslant, -mc( ^px slant - .5pu), px, pd, ^px slant); vpen; IftoXi — round .5u; botuj/i = e; topHy2 ~ m >' xi = 3u; a::) = l/sqrttwo[x2, z,|]; y,\ = 1 /sqr«wo(r/ ,, y2\ J rtGx.i = round(r -- u); y.\ = — .5d; zr> — -5fx.i, x(i]; botojfc = — d — o; Iftoro = round(r — u — ^-[two, W|]); Ui = 1/iJ xi — *\\ ioPoW= m ; draw K#|1{0,1} . K#|2{1, 0} . K#|3{x, - x2) y, - - y2} .. 4{0, -1} . 5{-ll0}..6{0Jl}..7{2(x7-^)ly7-ifc}. * stroke "Lower case Greek delta"; call charbcgin( '016, 8, mcJbovv/, — -mc(.7px slant — .5pu)tphf 0, ,§ph-slant -f- .5pw — l.5pu — ( Ipxslant — .5pi*)); hpen; X] = 4.5u; top0yi = m ; x2 — good2 l.5u; t/> = = yyt z-j = xi; bot()i/j = --00; x.| = 4u; top()y.| — h + 00; 1 ft 11 x.^ = round(].5u); rtnafo —round(r— = xs = r — 2u; J/7 = .9/i; !/8 = m'» call " a darc( 1, 2, u>2); % left of bowl call * b sdraw(4, 5, 1,6, 3, wn,wH)— /i/(18u)); % shoulder and right of bowl WO draw 4{1,0}..7(..8). % Point "Lower case Greek epsilon"; call niax(px slant-\- .5pw -- 2pu,— 5pu); call charbcgin( '0 17, 8, jncJbow/, —mcacc, px, 0,0); hpcn; ^ — .5u — x;j = r — 3u; xj —.5(r+u); top0yi = m; tA) = yi; x<i = xo; x2=--good2 1.5-; y2 = J/5 = 2A; = e\ X\ = r — u; x-, = r -f- .5u; botojfc —-00; new aa\ xA = aa[xih x.-,]; y.\ = (sqrfc(l — aa-aa))^, t/j]; t/^) draw 0.. I; % strengthen upper point call ' a arc(],2, \i»)\ % upper left of bowl call " b arc(3, 2, w2)\ % ,ower ,eft of bowl draw 3{l,0}4(..5); % lower point draw 2..6. % bar "Lower case Greek zcta"; call charbegm( '020, 7, mclbowl, 0, 25(px,ph], pd, px slant), hpen; lftoxi = round 3.5u; y\ = .25[m,/i]; *2 = 3Pj = xu = xs = 5u; bot0?/2 = m -- u^; y2 ~ y\\ top0i/j = m ; rt0xj = roundfr — .5m); Iftjo^ -- round u; yi, — 0, rtio^r = roimd(r — .!>u); botnt/s -- — (/; x«, --- 3u; Xw — 2w; ?/) = -- 75d; y,0 - 0; K*, draw l{0, —1}..2{1, O}; r>c flourish call's darc(3f 4, ^,); ^ loop caw** b 5draw(3, 5, 6, 7, 8, w,0,^,-*/(M); % stroke draw 8{ — 1, 0} .. 9(. . IO). % point 177
4Lower case Greek eta"; call charbcgin( 02 1, \0,mclhook) — Tnc(rstcTn — lpxslant)tpx,pdJjpxslanty) xi = good, 2.5tz; call 'a en£ry(0, i); % opening hook cpcn; xi - x\\ botit/2 = —oo\W\ d r a w I.. 2; % left stem £;* — good i(r — 2.5u); call N b ital/h?trofce(2, 3); % shoulder rr.i = X;j; hot\\j.\ = - d —o; draw 3.. 4. % right stem "Lower case Greek theta"; call cbarbegin( '022,8, mc(.3pb'slant + pu — .5pwii), —mc(.7ph-slant - pu + .5pwii), pit, 0,0); X[ = r — X[] % axis of left-right symmetry Z2 — x,\— good2 1.5,; x:j — X5 = r— x<\\ top()y, = h + oo) botoi/2 = —oo\ yi = yi\ y<\ = W> = 5[y,,j/2]j call "a darc(l, 2,t^); % left part of bowl call "b </arc(l, 3, ^2); % right part of bowl wo draw 4. . 5. % bar "Lower case Greek iota"; call charbeg/n('023, 5, 0,— mcr/jook, px, 0,0); cpen; xi = good, 1.5u; X2 = Xi -- .25a; top^i = m -^-oo\ call 'a skew exit(2, r); W\ draw l{0, —1} .. 2{—u, - m } . "Lower case Greek kappa"; call charbcgin('024, 9,0,— mcrhook, px, 0,0); cpen; x{ = x2 =x-> = good,1.5u; top,t/t = m +00; bot|t/2 = —00; toPil/j = top0y.j = m ; x:j — x,; rt^x;* = round(r — l.5u); !/->= e; Xi, — 6u; X7 = 7.7511; xs = good0r; yti = .5e; botoy7 = ~oo\ y* — J-m; wi draw 1 .. 2; W\ draw 3; hpen; m draw 5(1, 0}4{1, O } ; < draw |tn,#|5{ 1,0}. . K#|6{0f - 1 ). K#|7{ 1,0} .8(0, I}. % closing hook % stem % stem % bulb * upper diagonal % lower diagonal "Lower case Greek lambda"; call charbcgin( '025, 10.5, 0, 0, ph, 0,0); cpcn; top0t/| —/i; X| = - 2 U ; x^—O; 3/2 ™ -7[m, /t]; x.i = r~2ti; y.j = .I25e; new aa; x, ~ aa(;/;,, x*]; t/, =-- aa\y2, y.i\) y.\— m ; x-t — 1.5u; bo tit/.-, = ~oo; hpen; xo = r — 1 . 5 ~ ; boljjAj = -00; draw |w*,#|l {I, 0} |w, fr\2{xA — x2, U\ — !/>} 3{x, - - x2, y.\ — xji) 6{2(x(3 -- xj), lAi — 2/*}; % long diagonal call 'a cdraw(5, 4,1,0). % short diagonal 179
/////TV/ / / / / ' / /! / / TWri ni mm 172
Italic numeral 9"; % (Same as inthcronian font, except for spacing.) call charbegin('*9} 9,0, 0,ph,pd, ph slant—5pu); x\ ~ good2[r — J.5u); z> = good2 l.5u; new ium] wiw—- round .75fiUo;u>}]; cpcn; bot()oj/;i = .25e; i f Ui > -5e: new y,; y-j = .5e; fi; lfton^j --lft'0^ = round 1.5u; y.i = y*; uahi draw 3; % bulb hpen; z-zo — good2(z{ - - Au)\ zr> = z^ = x,0 — r>[x-2o, ^2]; l>otoy:> ^—oo\ wu draw 4{0, —1} .. 5{1, 0}; % tail toPuW = 'lf 00; y> = e — 00; y-2o = •%>, yu]; y7 = yio = 1/1', lfto^7 = lft-2*2o; call x a darc(6, 7,^); call ** b darc(6, 2, W2); %b 0 w I new t/A)o ; w<m — j [«*), W2]; % intermediate width in dare routine z$ = Zi)'t \K<)<)ZH = ]ft{)(l/sqrttwolzt^xi])] ys = I /sqrttwo[it){h yj\\ y-> - U) ~ V*— Vi\ V\ ^ •%-» V\ok draw |u\,#|5{],0} . |ttkjc||9{x7 - Xi>, y? -- ifco}|^#| 1{0, 1} |t^)9|8{%- -x7,y7 — vm}. |t**i#|10{ —1,0}. % stroke "Italic question mark"; call charbegin[ '077, 9, 0, 0, ph, 0, 0); cpen; IftjXi — lfto.r^ = round u\ y\ == y2; bot ]yi~m; x3 = x, = Xn = xs = .5r; topuy, = /* + 0 0 ; y8 = .5/*,; y4 — good(i *e; rtioax) = round(r— 1.5~); 1ft 10X7— round 3u; X3 = %r] top(iy-, = e; bot:jy.| = 0; w;i draw 4; % dot draw 1 ; % bulb hpen; ti*, draw 2{0,1}3{1, O } ; % shoulder call 'a sdraw('At Y, 8, 7, 6, wm,ttfc,(yj- y(i)/(*0u)); % stroke draw 6{1,0}.5{0, 1). % point 173
mm if ,iu i mum UkWu INIII/JU fmlmTF 11 Milk ,"1111 ! i'! / / I I / / / / / / // /,! I! / / / //. nm iii rfi 111 it T"v MM I I I I I I I I I h t > ; i~!<e4 ^L.7 i II htm lllliil 180
% closing hook % stems % stroke "Lower case Greek mu"; call diarbegin('026, 9, mc(pu — pd-slant — .5pwi),— mcrhook, px, pd, 0); cpen; xj = a>2 = x 3 = good, l.5u; z.| = X* + .75a; X5 = 55(x;i, tr<>]; X(> = X7 = good, 6.5u; top,yi = m + 00; bot,j/2 = - </ — o; y, = .7c; y.\ — .25({^,e]; botoyr> = —oo\ U> = Vi\ call " a exit(7, r); u>i draw J... 2; draw 6.. 7; hpen; draw |wi#|3{0, -1). . |.75[tn,f tu,]|4.. K#|5{J, 0} .. 6(0,1}. "Lower case Greek nu"; call diarhcgin( '027, 9,0,—mc(rstcm— ^px-slant), px, 0, \px slant)) cpen; Z[ = x>i •— good, l.5u; xj = r — 1.5u; toptiyi = m; bot(,y2 = 0; top,yj = m + 00; hpen; W\ draw I. . 2; call 'a surif(lf 1, 2, —lcs)\ rpen#; w\ draw 2{36u, m } . 3{0, 1}; cpen; w\ draw 3; hpen; draw |iuo|2{36u, m }. |wi#|3{0, i}. % stem % serif erase excess at bottom % bulb % diagonal "Lower case Greek xi"; call charbcgin{ '030, 9,0,0,/?/*, pel, .75(px,ph]-s/ant —2pu); hpen; top0yi = h\ lfto£t~ round 3u; x2 = x3 = 5u; bot0j/2 — top0yj — wj; top()y:J = round(yi -- .25(/i — m )); yi =-- 1/2; rtoxj = round Zi + J.5u; lft4x-> = round u; yr> — .5[y.j, yj; x^ = x7 = 5u; botojA = top0j/7 — w?; top0y7 = round .5/i; ya = y&; rtoXfi = round x^ + ].5u; lft 10X11 = round u; xj2 = 7 —3u; j/12 = --- -,d; rtioXn = round(r — .5u); X9 = r — 2 u ; botoiAi = - d — 00; xio — a*) — 2u; yio = — .75d; 2] , = xio --- 2u; Vi 1 = 0; 14) draw 1{0, —1}..2{1,0}; % flourish call ' a da re (3, 4, ti^); % upper loop call * b arc(3f5, W\)\ % top of bowl call H c arc(6, 5, w\)\ % bottom of bowl call "ddarc(7,8,tH)); % lower loop call " e sdraw(7, 11, 12, 13, 9, wH),wHt - <?/(l2u)); draw 9{ —1,0} . 10( 1 4). % stroke % point "Lower case Greek pi"; call charbegjn('03.l, 9, mc( 7px-slant — 5pw - 5pi/), —inc($px slant - pu -f .5pwi aspect), px, 0, \pxslant); call 'a pistrokc] % bar open; botiy2 = - 0 0 ; top7y, -== ?n; yj = y\\ yx = y2; X| = good0 3.5u; x2 —: good, 3u; xj~ good,, 5.5n; x.| = good, 7u; hpen; d r a w |^,#|1{0, — 1} . |ti;,#|2{3.14159(x2 — xt), y2 — yi}; % left stem draw |wJb#|3{0, — 1} . . |wi#|4{3.14I59(x.| — x3), y4 — y3}; % right stem cpen; W\ draw 2; draw 4. % make the end points round 4 182
182
"Lower case Greek rho"; call charbcgin('032,8, rnc(pu — pdslant — .5pwi), — mcrbowl, px, pd, 0); cpen; x{ = x2 — good, 1.5u; x.\ = good«2(r — 1.5u); X3 = X5 = .5fxi, X/j]; bot 1 j/2 = -d — o ; y\ = .5[y:i, y5]; topGt/j = m + 00; botGy5 = —00; y,4 = y>; W{ draw 2.. 1; % stem call " a arc(3, 1, w\)\ % upper left part of bowl call "br/arc(3, 4, to2); % right part of bowl call Hc arc(5, l,iuo). % lower left part of bowl "Lower case Greek sigma"; call charbegin('033, JO,mc-lbowl,— mc( '^pxslant— 5pu), px, 0, ^pxsiant); cpen; top7y2 = top^ = m ; bot7y2 = botoi/j; V\\ = Vi\ m=^u.) = yio = y» = ite = y.i = -%2, y?l; botuy/ = —00; xi = x«2 = x;j = x7 i=-.5(r— u); rtyXi 1--r — u; lftnx« = lft2x<) = round .5u; rtoxm — rt'jXg; Ifto^o = IftiXs; rt0x.i = rt2xr> = round(r — 1.5u); x12 = l/sqrttwo[x{) x8]; y!2 = l/sqrttwo(yk, yi]; Xj3 = l/sqrttwo[x:,, x10j; y^ = l/sqrawo(yl0, tfj]; ti>7 draw 2.. 11; % bar hpen; i^ddraw 8{0,1} . 12(xi - a*, y, - - t*} . 1{ 1, 0} .. 4{0, -1}, 10{0, 1). .13{x3—x,0, yj — yio}..3(1,0}.. 6(0,— I}; % upper part of bowl call 'a arc(7, 9, to2); % lower left part of bowl call " b arc(7, 5, ti>2). % lower right part of bowl "Lower case Greek tau"; call charbcgin( '034,8, mc(.7pxs/ant -- 5pw — .5pu), .5, px, 0, pxslant— .5pu -|~ .5 pwi-aspect); call 'a pistroke; cpen; X| = x2 = good, 3.5u; top(5yi = m\ botiy2 = —oo\ W[ draw 2; lipcn; draw |imo#|1. . |wi#|2. % bar % make lower end point round % stem "Lower case Greek upsilon"; call charbegin( '035, IO, mc lhook, — ^mc-px-slant, px, 0, ^pxslant); X2 = good^.Su; xi = x2 + .25u; x%\ = x-2 + .8u; call 'a skcwentry(0, 1); hpen; y2 = .7[y,,e]; y.} = .25[y,,e]; bot(,y, = —oo\ x, = 6u; riox-, = round(r — .5u); y-, — e; draw |ti/i|l{ —u, — m} . . hi#|2{0,-l} .. |.75(^,,u;i]|3 .. h>#|4(l,0}.. 5(0,1}; call "b endv(5). opening hook % stroke % closing bulb 183
m rH^-i mm VT 186
'Variant lower case Creek phi"; call charhegin('175, 12, .3mc-px-slant,— Jmcpxslant, ph, pel, 0); hpen; X\ = good,, 1.5u; lft02>2 = round .5u; £3 = .5(r + u)\ rtox.i = round(r — .5u); £5 = 8u; so = x7 = good,, 4.5-; vpen, top6yi = m ; yi = y.\ = e; botyt/j = -00; top7t/s = m + 0 0 ; tA) = ^m; botjt/7 = - d — oo\ draw |u*|l{2(*2 - *,), Ift - l/i> • K#|2{0, -1} . . K#|3{1,0} . |t/*#|4{0,1} . . |ti*#|5{—1,0} .. K#|6{0, -1}; % stroke hpen; draw K#|6 . \w{f\l\ % stern epen; tt>i draw 7. % make the end point round "Variant lower case Greek theta"; call charbegin(' 176, 9, mclhook,—mc(.5(pe, px\ slant + .5pw + .5pu), p/i, 0, 0); X|-- good, 2.5u; call "acntry(0; 1); % opening hook hpen; x2 = x{] 2/2 = 7[yi, «1; *:* = *2 + -4u; t/j = .25[?/,,e]; Xj = 5(z,,x5]; botoy.t = —oo; s5 = good2(r — 1.5u); top0t/r, =/i-f oo; 36 = s.i; JA3 = Vr>] lft()X7~ round 3u; yi = .5[ra,/i|; *8 = r; i/s = tj) = good6 .5[e, m]; :*, = r + 2u; draw K|i . K#|2{0, -1). . |.75(ti*,, w{}\3.. K#|4{1, 0}; % lower left part of bowl cairb darc{\} 5, tt^); % right part of bowl u*> draw 6{— I, O}. . 7(0,— 1} .. 8(.. 9). % loop "Variant lower case Greek omega"; call charbcgin( '177, 14.5, mc(Jpx-slant - .5p\v — .5pu), 0, px, 0, px slant — pu + .5pwi aspect); call "a pistroke; % bar hpen; x\ = good0 3u; lftoX2= round 2u; S;j = 4u; 35 =good2 7.5u; x7= r — 4.5u; rt0:r8 = roun<l(r -- 1.5u); £9 = r — 2.5u; vpen; topGyr = m; <y2 = W — e; bot7f/j = —oo; tjj = yy} j/rj y{) botjj/i = e; draw K|l{2(x<2 - xx), y2 - l/i} • • N#|2{0, -1} .. K#|3{1, 0} .. K#|5{0, 1}; % left bowl draw K*|5{0, -1}. K#|7{1,0} K#|8{0, I}. 9{2(x<) — x8), y} — t&}. % right bowl 187
"7 i A m i / / .- • xT ^ / 4/1 PI I titu Nl/f / U-LLLULt II ill AM^Mti 11 VMJk I / / / / / / / J U V 'II OT71 / / 7 / m / / / / //' ' ' I !
The file italms . mf % This file contains miscellaneous syntbots of math italic fonts. % Math spacing is assumed. % The character codes are '040, '042-'045, '055, and '100. new mc, Ibowl, Jhook, rbowl,rhook,rstcm'} % quantities used in spacing corrections m c = 1/pu; rhook = ;^px -slant + 5pvv + .5pu; Ibowl = .3px slant — .5pvWi -|- pw, rbowl = .7px slant -f- .5p\vii — p u ; Ihook = $px slant — .5p\v — .5pu; rstem = px slant + .5pwi — pu; "Doltcss italic letter i"; call charbegin( '040, 7, t -\- mc Ihook, 1 — mcrhook, px, 0,0); Z| --— .5r -f- 25u; x-2 = .5r -- .25u; call 'a s/cewentry(u, 1); % opening hook call ** b skevvexit(2, r - - u)\ % closing hook hpen; ti;i draw 1. .2. % stem "Straight double quotes"; call charbegin{ '042, 9, 0, 0, ph, 0, phslant +.5pwiii — 2.5pu); new wm\ if u>3 < u^sqrt 2: u*>c) = round uftsqrt 2; else: tz*)Q = u^; fi; X| = 7>i = good()D 3u; :cj = X\ = r — £i; cpen; top09yi = h\ y2 = .5[e, m]; </;* = yi; y.i = 2/2; call * a cdraw{ l, 2, 99, 0); % left stem call * b cdraw(3, 4,99, 0). % right stem "Lower case italic script I"; call diarbcg/n( '043, 6, 0,— nic{.8ph-slant — pu), ph, 0,0); hpen; x{ = good00; rto£2 — round(r — l.5u); x-j = .5r; 1ft 1X4 = round .5u; X"j = r — 2.25u; xo = good0(r+ 2); % (two in a row will connect) V\ = Vi\ = .125/*; ?/2 = .8/ij top()y;{ =/z -foo; t/.f == .5[j/f, t/-,]; boloj/-, = — 00; WJh draw l{10u,/i}.2{0,1}.. ;*{--!, O/; %ri«^l of bowl call * a arc(3, 4, iU|); call'b arc(5, 4, t</|); %left of bowl draw 5{l,0}..6{I0u,/i>. % link 189
/ ■Iff -r.mfVr ■ i-rH-H & 'Mm1 UJJ4JJJ. 190
' Wcicrslrass p"; call char/>cg/n( '044, 11,0, —mcrbowl, px, pd} 0); hpen; x{ = 2.5a; top^ = ra; Iftu^ — round .5u; x;j r= 3u; yj = .5[e, —.5rf]; rt|0x.| = round 5.25n; x*> - 3.571; boloy^ = -d - - oo; call 'a sdvaw(l, 2, 3, 4, 5, wio,w&, — m/(8u)); % flourish *6 —good()2u;^i = 0; x7 — 7U) top()j/7 — round .8[«, m]; wt) draw 5{ —1,0}.. 6{0,1} .. 7{l, 0}; % stem and shoulder x8 = good2(r — 1.521); bot0j& = -00; xv^x7; M) = Vs] calPb darc(7,8, w2); % howl lft jxM = Ifto^io =-- round 4.5u; yio = V\ i = 5e; draw 9{ — 1,0} 10{0,1}; % link cpcn; w:i draw 11. % bulb "Partial differential sign"; call charbeg/n('045, 10, mc-fbowf, — mc(.7ph .s/ant + .5pw/i — pu), ph, 0, 0); % (This is a mirror-reflected number 6, one unit wider.) x i = good2(r — 1.5-u); x2 — good2 1.5u; new k>)o; u*)<) = round -75[u\), Wj]; cpen; top ^ = h — .25e; i f y.\ < .5[m,/i]: new j/,; j/j — .5(m,h]; fi; IftgoZ:* = lftna:.i — round J.5u; xj,\ = yy, w$<j draw 3; % bulb hpen; x>o = good2(zi — -itx); Z-, = x0 = a;l(J = .5(x2o, a^l; t<>Pol/5 = /i + 00; u\) draw 4(0,1} .. 5{ 1, O}; % shoulder botnj/2 — —oo] top0yj -= m -\- 00: t/20 = .5[?/2; ys); 1/7 = J/2 ~ 1/10; Iflo^v = Ift«2.^o; call 'a darc(6, 7, w(J); call ^b darc(6, 2, w2); % bowl new tvr)f)] Wtn — '^lwujtv-i]] % intermediate width used in dare routine x8 = Xf)\ lfto«)Xs = \fto{l/sqrttwo[xu,X7])] y* = \/sqrttwo[y2ut y;]'9 !/-, - U) ~ V* " Vl\ V\ — -5(y-„!/io]; draw |m,#|5{l, 0} . .|ua>c,|9(*7 -- xu, tp - to0} • . K#|l{0,-1} .. |ti>j«|8{xfe — x7,t/7 — y^o} -1^)#|10{ —1,0}. % stroke "Hyphen"; call charbcgf'n( '055, G, 0, 0, px, 0,5px-.s/ant— .5pu); vpen; y, = y2 =^ .5m; if fixwidth = 0: lft7^i = 0; rt7x2 = r — u\ else: lftyXi — 1 . 5 2 1 ; x-> = r - - X\; fi; 1^7 draw 1.. 2. % bar 191
1 -t-H V TT7 / '"///, ////// / r / ' '/• 3 4. ' i'i k r '' 1.3 9' /_.L_ ; / a ■13/ // L.-J- // // 21 \ / 8- mm 12 r «# / .'■■■■/ / i ti5±n¥d±t t-i // i 9f-~f // I / / iin i // /■"■/ / 1 '' UlU LA mttttm V 192
"Dotlcss italic letter j"; call <;/iarfoegin('100, 7.5, 1 -- rnc(pu -\- pdslant), 1 — mc(pe-sfant + 5pwi — 1.5pu), ph}pd,(ph -- pe)-s/an£); open; lft;^| ■■= Iftox^ = round .5u; £;j = 2.5u; x.j = x^ — goodj 4.5u; botj?/! = — M\ xji — y\] bolct/.j = -</ --- oo; bot0y.| = - ^d\ u>i draw 1; % bulb call "aenfcry(u, 5); %opcning hook hpen; draw \w{\5 . . |w,#|4{0, -1} . |iM)#|3{--l, 0} .. 2{0,1}. % stein and tail The file ital ig. mf "Italic ligature ff"; call charbeginC 173, 10,0,0, phtpdtph>shnt + .75pu); epen; IftjXi ~ Ifto^i = round( — .25a); rtja-j = rlo^i = round(.5r -\- I .75a); x5 = .5[xr„ x.,]; afo ^ good ,(.25r -- .5u); o;7 = good|(.25r -f- -oil); x8 — .5\x2f *i\\ botjyi = —.9d; 2/2 = !/»; M? — V<h yr> — Vj = «2 — !fc; topuy5 = A -!- 00; & — ?yb = 1/7 - - 2ft; bot6y7 = — k d; bo< cWj = - -d — oo\ lft;j£n ™ irtoXi-2 = round(.5r -- J.75u); rt;)Xi3 = rto^M = round(/ -f 25u); *n = .5[sig, sm]; a:lG = goodI(.75r —.5u); 2:17 = good,(.75r + .5u); ^i8 r-.5[xi2> ar17]; !/i i~i/i; !/i2— i/2; yn = y.r. yn y-i; yis = m>; 1/10 = 1/5; y,7 =-- 1/7; yis — y8; *<)"Su -- 2.25?*— eps; zjo = tfio +■ 1.75tx -|- eps; topl0#) = m; y.) = yi9; xo\\ draw 1; draw 3: draw 11; draw 13; win draw 9 . . 19; hpen; draw K|4{0,1} \w{)t\ 5(--I, 0}.|wi#|6{x7 -- %, 1/7 — y»} • • |«;,#l7{a:7 - *o, W - - SA>> K#|8{-1, 0} . 2{0, 1}; draw K|14{0f 1} . . K#|15{-1, 0} .. |w,#|16{:r,7 - xUh yxl - y,«} .. |^,#|l7{xl7 — xUu l/n - V\t>} • K#|18{—I, 0} . 12{0, L}. lig 'f: ^ i = ' 174, - f = ' 173, M = 'l75; % bulbs % 0/~ bar % left stem % right stem "Italic ligature fi"; call max(rhook, ph-slant + .5pwi —2pu); call charbegin{ '174, 10, 0, 0, ph, pd, ace); cpen; Iftj^i = Ifto^ = round(- .25u); rt *:r, — rtoX] = rt|X| , ; x-> = .5[3b, x,]; ^i ■--= good,(.25r -- .5u); :r7 -— good,( 25r (- .5u); a;s — .5[x\>, x7]; hot ,y, = —.9c/; y2 — y,; y, - !/«; .V"> - Ui ~ Vi - !/s; <-op(iy5 = A +00; f* - - «b ~ Jtf — y&; botcy? = — :\rf; bot6ys =—d — 00] x\i--xi>— good, .75r; top(ij/, 1 -- m; Xm = xn — 2.25u - - eps; topJ0yt) = ?n; X|<> —: 3?n; ym =-• y«); t/;j draw 1; draw 3; % bulbs tow draw 9.. 19; % bar hpen; draw |tm|4{0,1} . K#|5{ —lf 0} . . |^i#|6{x7 - a*, yz - »} • . I^i#|7{z7 - %, y? - !*} • K#|8{—1, 0} m . 2{0,1}; % left stem call 'a cxil(12,r); % closing hook u>i draw 11.. 12. % right stem 193
in ii''• VM "J, 194
"Italic ligature fl"; call max(rhook, ph-slant + .5pwi —2pu); call charbegin(' 175,10,0,0, ph, pd, ace); epen; lft.iXi = Ift{)^*2 = round(—.25u); rt;j£,j = rto&i = round(.5r + 2u); ==.5[a^lo:.|]; afe = good^^Sr — .5u); x7 = goodj(.25r + .5u); x8 = ,5[x.2> x7]; bot3yi = — .9rf; 2/2 = yi; y* = y*; ift — yj = tji — ys; top6yj = h -f oo; y-> — yfc = jft — y&; bot^y; = — *,</; bot^ys = — d — oo\ *u = *i2= ^orf, .75r; topGyi i = /i ; xy 2*5— 2.25u -- eps; top,()yf) — m; xl9 = in; yi9 = JA)) ti>3 draw 1; draw 3; % bulbs u>io draw 9.. 19; % bar hpcn; draw ji^)|4{0, 1} |a()#|5{— I, 0} . . |^,#|6{x7 — r^, t/,- ~ ^} . |«;i#|7{x7 - *r>, y? - ia>} K#|8{~t, 0} .2(0, 1}; % left stem call 'a exit(12,r); % closing hook w{ draw 11.. 12. % right stem "Italic ligature ffi"; call max(rhook, ph slant + .5pwi — 2pu); call charbegin(' 176, 15, 0, 0,p/j, pd, ace); epen; lft:jXi = lft()X2 = round(—.25u); rt.*x;j = rtox.i — round( \r -f- / 75u); xry — .5[jo,Z|j; 3g — good, 2u; x7 = goodt3u; x8 = .5[x2, x7]; bot;,yi — — .9d; y2 = yx; yj = yu yr> — V.) = Vi - - W, lop0y5 = /i -f oo; y-) — yb = y7 — y^; bot^y? = — $d; botfit/s =-= —d — OO) IftjXi | — IftoXi2 — rounder — 1.75tx); rt iX\j = rt()X|.i = rt4X2i; *\r> = .5[xH5, xM]; x,6 = good, 7u; X|7 = good, 8u; xis = .5[x12, x,7]; yn = yi; y»2 = y*; yn = y.*; y\ i = y-i; yi5 = y>; yio — t&; y(7 = y7; yis = ys; s-ii = Z22 = good,(r -- 2.5u); top0y2i = m; 2*> = aft —2.25u — eps; xm = *2i; top,0yo = m; yo-= yio; W3 draw 1; draw 3; draw 11; draw 13; % bulbs twin draw 9.. 19; % bar hpen; draw K|4{0,1} . |u*,#|5{ — 1, 0} . |u/|*|6{z7 — a*, yj — W5> . . |wi*|7{x7 - - xih y7 — tjt} . |u4)#|8{ - 1,0} .2{0, I}; % left stem draw K|U{0, 1} . K#| 15{-1, 0 } |ti;,#|16{x,7 - x,r>, y,7 - yio} • ki#|17{xl7 —x,6,yl7 —yiH}. .h)#|I8{ —1,0}..12{0,1}; % right stem call 'a exit(22,r); % closing hook w{ draw 21. . 22. % right stem lig '173: M = '176, M = ' 1 77; 195
n\ i inn i mm I IhVililH TFFm luiium l/lflllil h V* Y/iilii )> -J ' ' H.H-H rf-, k* iy//M/# ?/ / 7/7*7 Wi • i ii ii n w < m u«u-UuJJ*i Wi'ill IN In i wrrn tin 'Mm
'Lowercase Creek phi"; call charbeg/n( '036, 11, mc-Ihowl. — inc rbowl, ph, pd, 0); x\ — r — xx\ x>2 — good2 1.5u; x;i = r — x2; hpen; top()j/i = m + 0 0; botoj/2 = - 0 0 ; y, = y2; toPol/1 = h'> l>ot0^5 = —rf; x>\ = 25 = Z\', call "a darc(l, 2, to2); call "bc/arc(l, 3, w2); wu draw 4 .. 5. "Lower case Creek chi"; i f (px -\- pel)-slant > 2pu: call charbegin('037,11, rnc( t .5pu —pd-.s/ant — .Sptv), — mc(px slant 4-.f>pw — l.5pu),px, pd, 0); else: call ch<irbcgin( '037, 1 l,nic(px-slant--.5pw--.5pu), — mc(.5pu — pel slant -\-.5pw)}px}p<l,Q); H; hpen; rci = goodo0; x2 ~- u ; x.j==2.5u; x.i = r — x3; X5 —r —x2; *<> = r — x,; x7 =: good0(r - 2u); *s = r — *i'> V\ ~ Va = 875m; topuy2 = m + 00; botoj/3 = -d — 00; 1/2 - !/i = y-i — 1/-,; !/i ^ 1A>; topoJ/7 = m; boloj/s = ~<*>' draw K| l{0, 1} . K#|2{ I, 0} . |iwj#|3{a;.l - x,, y, - y;J} |u;,*| t{xt - - x:3, y, - y:]} . |ti^)#|5{l,0} . .6(0,1}; % upper left to lower right diagonal u>o draw 7..8. %uppcr right to lower left diagonal "Lower case Greek psi"; call charbegin(' 173, 1 L, mc/hoo!c, — \ mc-px-slant, ph, pd, ^pxsJant); x2== 0OOGf, 2%; xj -- x2 + 25u; s:j = x2 + .8u; call "a 4tkcwcntry(0,1); hpen; Vi = .7[y.,,e|; y* = 25(yi, e]; bot0y, == —00; *-i ■- 6.5u; rtoz.-, = round(r — .5u); y-> = e; draw |u»i|l{—u,-m}. |w,#|2{0, — 1} |.75[it\}, yi/,]|3 .. N#|4{1,0}. .5(0,1}; call'b endv(5); x7 = x8 = .5(r + u); top0j/7 = h\ bototA = — d; u*> draw 7.. 8. "Lower case Greek omega"; caMcharheginC 174, l\tmc pc skint,- ^nicpxslant, px, Q,\px slant); hpen; X\ -~ goody l.3u; IftoXi —- round .5u; xj ~ 3.5u; x.-, =- good2.5r; rtnXj — xUx-,; lftnXf> = 1ft ■>*-,; x7 = r — 2.75u; rtnxs — round(r — .5u); vpcu; topCiy, -— m; y2 — yi — yt> — y* —- e; bot/j/j = —00; y, =■■ good(i.2[c, mj; y? =--- yj; draw K|l{2(x2 - x,), y2 ... <„} .. K#|2{0, -1} . . K#|3{1, 0} .. K#|4{0, [} M~l,O}..|^#|6{0,~l}..|^r#|7{l,O}.|u'(,#|8{0, 1}; % strokes call^a endv(8). % closing bulb % axis of left-right symmetry % left half of bowl % right half of bowl % stem % opening hook % stroke % closing bulb % stem , 185
/ / / LULU L¥4M ihiih m1 IMP' w-rrrryri TTJ tin a / / / / / U-U144 -n-nri-h 196
'Italic ligature ffl"; call imx(rhook, ph-slant -|- .5pw/ — 2pu); call charbegin(' 177, 15,0,0, ph, pJ, ace); open; lftjx, = lft0x.2 = round( — .5a); rt^x.-j = rt0x, —- rounder + 2u); xr, — .5(x(;, x.j]; Xo = good, 2.25tt; x-/ = good, 2.75u; x8 = .5[x2, x?\\ botjyi = ~.9d; t/2 ~ V\ \ Ui = VM V> - V.\ = Uz — Vs] toPo3/> — ,L +°°; 1/3 — 1* = y; — ys; bot^y? = — \d\ bot(iys = — d — oo\ lft:iX| i =: lft0x,2 — round( ' r — 2a); rtjx,, = rt0X| t = round( ±r + 2u); Xi5 — .5(x|(i, xii]; xio = good! 7.25a; x[7— good, 7.75u; X|S = .5[xu, x,7]; yn = yi; 1/1-2 = vi\ vn ~ ys; 1/1 1 = yi; yr> = y>; i/it* = ?*>; yn = 1/7 *2i = x>i=r-good,(r --- 2.5-); top(iy2i = /i; x0 = x0 — 2.25ti — ops; x^ — a>2i; lopjoito ~ m ; yi) — yio; ti/j draw 1; draw 3;drawU;draw 13; u>io draw 9 .. 19; hpcn; draw |iM)|4{0, 1} |u><,#|5{ — 1,0} |u>i#|(>{z7 — *(>, W — J/g} • \v>i*\7{*7 - xt>, y; -»>}.. K#|8{-1, 0} . 2{0, I}; draw |tro|14{0, 1}. |i«,#| !5{ —1,0} . |u/,#|l6{x,7 — xlG,y,7 - y.o} . K#|17{xl7 -xl(i,i/,7 — s/io> . h>#|18{« 1,0}. .12(0,1}; call 'a exit(22, r); z^i draw 21.. 22. yis = v*\ % bulbs % bar % left stem ff/ 'c right stem % closing hook % right stem The file itals. mf % This file contains special loiters and letter combinations, % compatible with the alphabet "itall". % Codes '013, '014, '033 '035 are used. "Dotless italic letter i":, call cbarbcgin[ '0 13, 7, \ — fix\vidth9l — Rx\vidth,px, 0, 0); xj = .5r -|- .25u; x2 = .5r — .25u; call 'a skcwc(\try{u} 1); call "b skewexit(2, r— u); hpcn; W\ draw 1.. 2. % opening hook % closing hook % stem "Dotless italic letter j"; call cliiirbc^in( '0 14, 8,1 — fix v\ i</lh,l — fixiviV/th, px, /)<"/, 0); open; Ift *X| ~ IftoXs = round .5u; x.\ = 2.5a; X4 = X5 = good, .5(r + u); hot.**/) -- — .9</; </2 - ?7i i boti.y.i ^ rf - 00; bot(iyi =- — i</; wi draw 1; % bulb call 'a cntry{ut 5); ^opening hook hpen; draw |tu,|5 . .|w|#|4{0, —1} . . K#|3{ — 1, 0} .. 2(0, 1}. %stcm and tail 197
/ / /1U Tfrmrnn I II ! I ]i r/iiiijiim III Till \ IMlkkl til y /?/ /- •; -f-p'-f—h r'-, ■■■■ / / ""//////// i in nan 198
"Italic German letter ss"; call charbcgin{'033, 9, 0, 0, ph,pd, 0); cpen; 1ft jXj — lft0x2 = round(—.5u); x\ = .5[x2, xj]; x,i = good, 2.75u; x^= good,2.25u; X(5 = .5[x-); x;]; rt,0x7 —round(r— 2.5-); X3 = .6[x<), x-\\ rtioX<) = roun<l(r— 3.521); xio = .5(x(), X|,]; rt2*11 = round(r — u)\ xV2 = *io — u; lfto£i3 = rt,x.| + .5u; bot:iy, .— — .9d; t/i = y2; botGt/.j= -rf — oo\ botctAi = — 3d; yp, -- y-, = yr- y,; topotti =^ + °°; Ms = 2/7 i y« = -6[j/r, &>!; W = -5km]; yio = 5[jA)fyM]; l/i i = -5e; bot(iy12 = —oo; yn = 125e; t^ii draw 1; % bulb hpen; draw |u*)|2{0, -1} . h,#|3{J, 0} .. |tf;i#|4{xr, — xh & - yi} • |t*'i*|5{*r> - x,, Y/i — J/.|>. |u'o#|6{l; o}. |r^o#|7{0, -l). .8{1.5(x<) —*«),#) -- y8} • |u;io#|9{0f —1>. |.5[wi«f tu-2]|10{2(a:io — ar«,), y10 — !*>> - . K#|H{0, -1). . jtuo#|l2{—1, 0}. 13(. .9). % stroke "Italic ligature ae"; call char/>cgm('034, 13, 0, 0, px, 0,0); hpen; rt()Xi = round(r— 1.571); x2 = good, .5r; x3 = x, — .5(r -f 6ti); rt0x5 — r — Mt] Xo = x5; t/i = .5[e, ml; 1/2 = e; top0j/., = m + oo\ bot0yi = - 0 0 : top^y-, = .5e; t/u = «; u\) draw 2{t, O}. . 1{0,L} .. 3{ —1, 0} .. 3{ — 1, O}; % bar and shouKIci call 4a art(3, 2, w\)\ call ^b arc(4, 2, W|); /fright bowl draw 4{ 1, 0} 5(.6); x, = .5[x8, ok)]; x8 — good2 l.5u; », = x2; y, = yy} Y8 =W) = l/-i; call "cdarc(7, 8,^2); call "d darc(7, 9, iuo); cpen; Xiq = Xu = x2; top^io = m + °°; botiyu — —oo; w\ draw 10.. 1 1. % stern % point % left bowl "Italic ligatureoe": call charhcgin('035, 13, 0, 0, px, 0, 0); hpen; rt()X! =-• round(r — 1.5-u); xi — koo(12 5r; % xj = x\ - .5(r -|- G u ); rtox-, ■—r - - .5u; Xo = x^\ Vi = -5[e, mj; y2=- e; top0y, = ?n + oo\ bot0yi = Wi draw 2{l,0}.. 1(0,1}.. 3{-i, 0} .. 3{-l, 0}; call 'a arc(3, 2, 102); call . b arc(4,2, ti>i); draw4{l,0}..5(..6); x? — .5[xs, 3a)\] xh-^ good, 1.5u; #, —- x2; y? = y.\\ y* = IA) = yii call"cdarc(7, 8, U'2); call . d </arc(7, 9, u>2). 00; top^-, = .5e; y0 = e; % bar and shoulder % right bowl % point %lcft bowl 199
* I I I I I I I I I i I I I I I I I ■K ■5 m \ .-'■ \ / \ \ \ s I ••••• /-v / y / \ \ / \ \ ! \ • r "i \ • * —l LI 200
SYMBOL CHARACTER DESBGMS The file symbol mf % The Computer Modern Symbols family of fonts (by D.E.Kruith, 1979). danger— 0; mi — 1; input script; % upper case script alphabet tcxinfo slant, 6pu, 3pu, 2pu, px, 18pa; % (The calling file should give i he rest of thetcxinfo.) new slant; slant = 0; trxy 0; % the non-script character:; are unslinted "Minns sign"; open; if fixwidth — 0: i f pa f- Hpu > ph: call chnrbegin[ '000, 18, 0,0,p/i, ph -- 2pa, 0); else: ca!lcharbcgi'n('000,18, 0,0, 8pu-} -pa,8pu~ pa, 0); fi; else: call c/iarbegin( '000, 9, 0, 0, 3S>pu-\- pa, 3.5pu - pa, 0); ii j •; Ift (0X| ~- round ti; x^ = r -- x\\ y\ --- y^ — o; W[{) draw 1.. 2. % bar "Period raised to axis height"; callc/);irbogm( '00 I, 5, 0, 0, pa + JSpwiii, 0, 0); epen; new win; if w.i < mn sqrl 2: ti>)<)—- round ti^sqrt 2; else: umo -- w:h fi; xj — goodcio -^r; l/i = aJ ^)0 draw i. % dot "Times operator"; call charbe£in( '002,18, 0, 0,t/«(/rUvvo[pa,p/i],l/sqrttvvo[pa, ph -- 2pa], 0); cpen; x~i = l/sqrttwo[.5rtu]\ yi = l/sqrtt\vo[ath]] z5 = x7; Z[ = xA= r — x7\ y\ — y;', y.\ = yyt .%!,!/;*] = a; u>m draw 7.. 3; % upper left t o lower right diagonal draw 5.. /. % lower left 1 o upper right diagonal 201
• 3. * cl ft2 K ""1 ►el 1.--^ 3l\* ♦ • •4 / ... © I--- • b2 2 s _, r 1 d 4 . 6 V ■J 2' 2 ~-,2, V 1 1^ \ 1 V 1 >., _ m ' ~ •. ^y .3 2 / / — f" * ~— 1" — l: '-^r- ..... 1 — r 1 * 1 » 1 1 t t i 1 ! 1 i i l i i 1 j 1 1 1 1 t I L: 2 L • -L--■ i_ — r r L L * 1— ^1 *1 202
Asterisk at the axis", call charbcgfn('003,9,0,0,.5px + pa, .5px — pa, 0); epen; topiyi = round(a -f- -5ra); top^i -- bot|y2 = m; M) = -5[yi, 1/2]J 3) = ' — *«; x\ ^ x2 = o^y, x3 = r — 3,,; xT> — r — xq] x3 X5; % left-right symmetry y.\ — vw 1/5 = u\, Ui - - y> = v\ - - JA); •%*> yr>l = ?A); x.i —^)-=(.5sqrt 3)lfti3.75u; % asterisk will have 60-dogrec angles if m = 7.5ti call 4a cdraw(l,0,i,0) call ^bcdraw(2, 0,1,0) call " c cdraw(3, 0,1,0) call xdcdraw(4, 0, I, 0) call * e cdraw(5, 0, 1,0) call "f cdraw(6, 0, 1,0). % upper arm % lower arm % upper left arm % upper right arm % lower left arm % lower right arm "Reverse, slash"; call ciiarbegin('004, 9, 0,0, ph + pb, />h+- pb — 2pa, 0); cpen; Ift 10^2 == round u; x>i — r — x\\ topl()y2 = /1 + 6; .5[t/i,y2]==a; Wjo draw 1 . . 2. % diagonal "Circle operator"; call charbc£in('005, 9, 0,0, 3 5pti + pa, 3.5pu— pa, 0); cpen; a?s= .5r; 1ft 10% = round u; top,0j/s = round(a + 3.5u); \fc — a; call circle(l, 2, 3, 4, 5, 6,7, 8fW|0). % bowl "Plus or minus sign"; cpen; \ffixwidtl) ■-= 0: if pa -f- Spu > ph: call c/iarbcgin( '006, /8, 0,0, pA, pA — 2pa, 0); top,0t/i = /i; else: call cbarbcgi'n('006,18, 0, 0,8pu ■+ pa, Spu — pa, 6), topl0yi = a + 8u; fi; else: callcharbcg/n( '006, 9, 0, 0, 3.5pu + pa, 3.5pu — pa,0); top(()yi = a --- 3.5u; fi; .5|yi, y2) = a; *i = s2 = .5r; Ift iqx.j = round u; x.\ = r — Xj; t/j = y.i = a ; win draw 1.. 2; % stem draw 3.. 4; % plus bar a* = xy, Xi> = *,; y-, = y^ = y2; draw 5. .6. % minus bar 203
y- K 3- • j □ • " ' n » n _.._ n LT • i i r i i 1 i j f 1 i 1 < i j n L. n n □ — n ■ —■ n • • 4v • •' i 1 I 6i ... I ! ./ \ ■7Y 1 • •■ >, — >KS —- ■^ J _-.. n • i > ; i i i I i f i i » i \ i r f i _L ... r -~ _.-■ ">NxN - - ..--'■ Nx — ,(' \ 3 / \ / t \ \ ; \ -'2 • 1 ; 1 ,: 1 / / / .: / 1 1 61 i 1 • \ V \ / ,?;; F \ \ z >.. \ V / --^ / J n: 1 u » /■*, ■ •N \ r / \ \ , XX N> „-' 1 k : ^ >\ / \_ \ 1 i n , / / — — 1' I \ w f .■■' •.-•■' ^ s Ns r>.. L • f or C —, 4 111 » > » \ \ L. ... "■■-. ■v y \ 3 \ \ b > ( t f 1 // ; 204
"Minus or plus sign"; cpcn; if fixwidth— 0: if pa -f-8pu > ph: call charbegin('007, IS, 0, 0,ph,pb —2pa, 0); topl0j/| = h\ else: call charbegin('007, 18, 0, 0, 8pu-|- pa, 8pu -- pa, 0); lop iol/i —: <* + 8u; fi; else: call charbegin('007, 9, 0,0, 3.5pu-}/><}, 3.5pu -- pa, 0); top,0yi = a + 3.5u; fi; •5[yi,!/2] = a; s, == a>2 = .5r; irt|(,^ = round u; x.\ - r — xy, y-.\ = 2/1 = a; ttfiodrawl..2; % stem draw 3 . . 4* % plus bar Z5 = x3; a<i = x.i; yr> — y§ = 1/iJ draw 5.. 6. % minus bar "Circle-plus operator"; call cbarbeg/n( '010, J8, 0, 0, ph, pli-%2pa, pa-slant— 5pti); cpcn; lft0a:ft = round tz; t& = a; xH = r — x8; top,,^ —/i-f- 00; call rircie( 1, 2, 3, 4, 5, 6,7, 8, a*,); % bowl w{) draw 6. 2; % bar draw 4. .8. % stem "Circle-minus operator"; call charbegin( '011,18, 0, 0, ph, ph — 2pa, pa-slant — -5p<j); open; IftoXtj = round u; U> ~~ a; xH — r - - x^; lop{)yH ~- h-\- 00; call c/rc/o(J, 2, 3, 4, 5, 6, 7, 8, v\}); % bowl u>0 draw 6.. 2. % bar "Circle-times operator"; callcbarbeg/n( '012, 18,0,0, ph, ph —2pa,pa-slant — .5pu); cpcn; lftoJ^— round u; Ui ~ a\ .t« = r -- x^\ topnyfc —/i + 00; call circk{ I, 2, 3, 4, 5, 6, 7, 8, t^); % bowl Wo draw 7.. 3; % upper left to lower right diagonal draw 5 .. 1. % lower left to upper right diagonal "Circle-divide operator"; call charbcgin( '013,18,0, 0, p h , pii —2pa, pnsfa/it — .5pu); cpen; 1^0^; = round u\ !A> = a; x* — r -- a;*,; top0y* —/i-|- 00; call c/rdc( I, 2, 3, 4, 5, 6,7, 8,u:„); % bowl tt>o draw 5.1. % lower left to upper right diagonal "Circle-dot operator"; call <:/iarbcg/n('014,18, 0, 0, p/i,/>/i — 2/>a,pa-slant — .5pu); cpcn; tfto^i = round u; u> — a; a:s = r —j^; top0y8 = h -+- oo; call drc/e(l,2, 3, 4,5,6,7,8,^); % bowl :co = xh; yo = y2; cpcn; new to™; tztyj = t/^sqrt 2; tt*)g draw 0. % dot 205
1 •-■-' i ! t i i i 1 V. 3 • 4 • ._.. 2 [ • » -._. --- i A I % i ) V -— _.__ — — • — / f o • *<* • 5 • 8 * 0 4 » ™ > 3 • \ 2 • - • L r L c 1 L ( i i i i t r r i • i i r i r 1 t 1 i 1 f t r " L 2IL • r -L— L._ L L L u L"4v » 206
"Elementary division operator"; call charbe£in('015,18, 0,0,.5[px, ph], .5[px, ph] — 2pa, 0); cpcn;lftl0xi = roundu; x2 = r — x\\ yi = f/2 = a ; win draw 1 . . 2; % bar new W)o; Woo = w.jsqrt 2; topoow = .5(m,fc]; .5[y*,y.i] = a; z3 = 0:4 = .5r, Utyj draw 3; draw 4. % dots "Intercalation product operator"; call charbegin('0l6, S, 0, 0, px, pd + pb, 0); v p e n ; lTt.^j — u; rl.jrr^ = r — u\ x:i = tc,| = .5r top3yi = m; yi = y2 := y.*J bot6y.| = -d — b; W\ draw 1.2; % bar hpen; ttfj draw 3.. 4. % stem "Bullet"; call cJiarbcgin('017,9, 0, 0,3.5p«-f- pa, 3.5pn— pa, 0); cpen; zs = .5r; lftioZb-" round u; top10y8 = round(a + 3 5u); j/r> = a; call ci'rc/e(l,2, 3, 4, 5, G, 7,8, win); % outer boundary a*> = 2*; ?A> — J/2; cpcn; iyio ddraw i{x2 — xH} y2 — Vh} . 2{0, — 1} .. 3{x.i — x2) y.\ — m} •. 4{ — 1, 0} • • 5{x6 — *i, tAi — yi} .. 6{0,1} . J{xH — x0l uk — »«} . 8{1, 0} . 1 (rr2 — z8, y2 — y^}, 0..0..0..0..0..0..0..0..0. %fill it in "Perpendicular sign or lattice bottom"; cpcn; if fixwidth = 0: if pa + 8pii > ph: call charbegin{ '020, 18, 0, 0, ph, ph — 2pa, 0); topl0t/i — h\ else: call charbcgin('020,18, 0, 0,8pu--f~ pa, 8pu— pa, 0); topmyi == a + 8u; fi; else: call charbegin('020, 9, 0, 0, 3.5pu -|- pa, 3.5pu— pa, 0); top10yi == n -\- 3.5u; fi; •5[yi, mi = a; *i = ^2 = -5r; 1ft 10^3 = round u; x.\ = r — xy, yj = j/j = y2; za?io draw 1.. 2; % stem draw 3.. 4. % bar "Equivalence or congruence sign"; call charbr/rm('021,18,0,0, px -po-f-prt/2-f pa, px — pe + prt/2 — pa, 0); cpen; Ift [0^1 = round u\ x%\ -- x?> = X\\ x2 = x.\ — x{i -= r — x\\ V\ " tt>; yj = y.i — u ; y-> ^ !*>; '/1 — y* — yj — y-> — rouiul(?/i - - e); u;u) draw 1.. 2; % upper bar draw 3.. 4; % middle bar draw 5.. 6. % lower bar 207
l' ! • \ ■, \ ,6' / \\ y ^ '-.„ L-' ■>w. p "w "V * L * _J » — ~ "] j L. >—— *) T) rr\ \ \ ii in rn i «; • .-•3 7 : » r r rr r J _.... _ i j — _J j . ■ I j r rr • _j j J j i--„ \ --" J j _..y J j x\ y J J r^ \ i \ \ 1 ; \ J l'\ \ i / J i • / i)\ ^ . - ' <i <\ ri V •»%,. "> **v. ^ v» k^ D U u u .s^ "-»-, \ ,„--• ^ 1 ^ u J _ J ..--,- ..»-■* "i •> ^ - *yj _ _ J \\ L_p 1 i J LU f _] i---1 ■" z:Ll^l^cj 1 —i _j —i n i J j —-. ^"^^ U _1 xs j j j _...- ,/ m " ■o\ n i • w ( ,\ n :\ sJ 20S
' Reflexive subsc t sign"; call chnrbcgin{ '022, 18,0, 0, ph, ph — 2pa, 0); epen; lft(()X|--- round 2.5u; x2 ~- X\ = r — xi; top,0y2 ==-/*; .5[y2,y*] = y»; y-i — y\ = (goodl() .5[m,h]) — (goodl()a); *i = X5 = .5r; y., = y2; y-, = y.}; undraw 2 .. 4{-l, 0} . J{0, - 1} . 5(1, 0} .. 3; xo = x\\ x7 = x2; Jfo = y;; botl(jjAj = 2a — /i; draw 6 .. 7. "Reflexive superset sign"; call cbarbegin( '023, 18,0,0, ph, ph -- 2pa, 0); epen; lftf)T2 =-- round 2.5w; x<2 — x.\ = r — X|; top,0y2 = fc; .5[i/2, yj] = yi; y2 — yi = (good,0 .5[m,/i]) — (goodU)a); X\ = xr, = .5r; y, = y2; y> = y.j; u>iu d r a w 2..4{l,0}. 1{0, - l> 5{ — !, 0} 3 ; Xq = X[] x7 = x2; ]K\ = \n\ bot|oyb = 2a— h; draw 6 .. 7. "Less than or equal lo sign"; call charbcgin{ '024, 18, 0, 0, ph, ph — 2pa,0); open; lft 10X1 = round 2.511; x2 = x.j = r — X{] Lop,(,y2=-/i; $\\h>U\\ = V\\ Vi — Vi = (goodl0.5[m,/ij) —(goodn)o); W[o draw 2 1 .. I . . 3 ; X\~X[] x^~xi\ V\ = V'j\ bot|0y.i = 2a — h\ draw 4.. 5. "Greater than or equal to sign"; call ch.irbcgirt( '025, 18,0,0, ph, ph -- 2pa, 0); epen; lftt()X2 round 2.5tt; xi = Xj = r — x\\ toPio!/2 — h\ .5[y2, y<] — yu Y : — V\ ™ (goodl0 5[m,/i]) .. (goodl(Ja); wio draw 2.. 1 .. t.. 3; x.j = %\\ xr> = x2; y.\ — y:>; bot10yi — 2a — /i; draw 4.. 5. "Precedes or equals sign"; call charbf>gin( '026, 18,0,0, ph, ph -- 2pa, 0); vpen; lit ioX| -= round 2.5u; x> --—■ X\ =--= r — x\; toPioi/2 =/?; %>> y<] ■"--■ v\; ^ ~ y\~ (g°od 10 •r>(m,//l) -- (g°°d ma); x., = x5 =- :r2; y.| — yi + 6; y-, ^= yj — 6; twm draw (4 )2 ..!{ —t, 0 ) 1{1, 0} .. 3(.. 5); % diagonals xtj — x, ; x7 — x-2; J/G = y?; bot jo2Aj = 2a— A; draw 6 7. % bar • 209 % stroke % bar % stroke % bar % diagonals % bar % diagonals % bar
—*1 • 1 fl 3 • r \\ / / / » "V. L L ^ _..--" ;; U- L L L L- ••— I— • —- L L L L } $ 3'' ^'' .-- -aL.. . *a4 t6« V 1 a •ad ; aio- -■■■ .s r • • i / .Q • H"" — ..V / I" / * / A | J '■ ■ '• . - - - / / / -■' / ££_ / / .' : / .... n / * / / / / -^.^ -i FT / --- 2s • • ] a N *~ *■ _*, — • - -*• -<.--a « 1 i f -- ^ V \ ..-' \ \ \ \ ! / I 210
"Follows or equals sign"; call charbcgin( 4027, 18,0,0, ph, ph — 2pa, 0); vpen; lftio#2= round 2.5u; x<i = rrj = 7 —£i; topl()2/2 = h\ .5(y2, to] = y«i 2/2 — J/i = (goodl0.5(m,/i]) —(goodl0a); z,i = x5 = x2; y.\ = tjz+ b; yr> = 1J3 — b] Ww draw (4. )2 .. 1 {1, 0} . . l{—1, 0 } . 3(.. 5); % diagonals Xq = Xi; x7 = xi\ £te = 2/7; botmy& = 2a — /i; draw 6 . .7. % bar "Similarity sign"; call charbegin(4030, 18, 0,0,.5(px— pe) -f pa, 0,0); vpen; top l0yi = round(a-f- 5(to— e)-|~ops); topLOyi— hot joy2 = round(ra — e); •ft io*3 = round u; y-} = .5(y,,y2]; yj = Vi\ Ui = yi; x.\ — r — xyt x5= — x->\ call 4a zdmw(3, 1,5,2,4, wio, W[o-\- deltaw, 7.5u/(e— to)). % stroke "Approximate equality sign"; call charbegin(4031, 18, 0, 0,l.l(px— pe) + pa, Ll(px— pe) — pa, 0); vpen; toployi = round(a H-I.l(m -- e)+ eps); topl0yi — botioyj = round(m — e); lft io*j = round u; y> = .5[y,, y2]; y, = y2; t/i ^r yi," x.i = r — xyf x5 = — x5; xh X)', x<j x.\] xio £r>; yi — Mb = V2 — y/ = yj — J/S = y 1 — y.) = ys — yio = round l.2(m — e ); call 4a zdraw(3, 1,5,2, 4, W|o,tU[o + delta w, 7.5u/(e— in)); % upper stroke call "bzdraw(8, 6, 10,7,9, W|0,wio + de/taw, 7.5u/(e— m)). % lower stroke "Proper subset sign"; call c/iarbegm( '032, 18, 0, 0,.5[px, ph] + prt/2,.5[px, ph] -f-prt/2 —2pa, 0); epen; lftj()X|= round 2.5u; X2 ='- —x\\ Vi— good u,.5[m,/t]; .5(y2, y*] = V\ = goodl0a; xA = x3 = .5r; yt — y,.; y-j = y3; t^io draw 2.. 4{—1, O}. l{0, -1). .5(1, O}. .3. % stroke "Proper superset sign"; call charbcgin{ 4033, 18, 0, 0,.5|px,pb] + prt/2,.5(px,pii] + prt/2 —2pa, 0); cpen; lft|oz<2 = round 2.5u; xi — x.j —xi; yi = goodu).5[m,/i); .5(y2, y>] = yi = good10a; «.i *s -5r; y.i y2,* y5=:y3; tvw draw 2.. 4{1, 0} . . 1{0, — 1} .. 5{ — 1, 0} .. 3. % stroke "Unequal sign"; call charbcgm('034,l8,0,0, ph + pb, ph + pb -2pa,0); epen; lftioX|= round u\ Xj = x\\ x2 x.\ —X\\ V\ — Vi\ Ui Uu V\ — Ui = round(m — e); .5[y,, ymi\ = , W\o draw I.. 2; % upper bar draw 3.. 4; % lower b a r rt io£r> = round(r — 2u); lft jo^ = round 2u; top10y> = h + 6; b o t jolto = - d — b\ draw 5.. 6. % diagonal 211
-1 - 1 • 1 .-J— 1 » — 1 ! -— L.J r_..L... "— ' P N |- 0 — — 1 —— -— - _. — ■■ — .-. - -4 J v. .y t' ' : N 7 • 4 7 [" 6 • ■ - -•» -— —■ ----- -— _- -a • 1 —i 4 • 4 V 5 • s / V^ ,- - - ___ ■••• L-- L-- -— \ v ,1-' —- ....... ..—- .—- L^ - " --" ...--'■ ^ "\ -r"" \ ...'■' x »V 4 • \ 5
"Dot over equal sign"; can ch<irbcgin{ '035, 18, 0, 0, ph,0, 0); cpc.n; 1ft k)Xi = round u; x.j - x\\ x2 = x.\ - r — X\\ y\ — Vl\ Vi = VM V\ — U\ —:round(m - e); .5[yi,y3] = a; w\q draw 1.. 2; % upper bar draw 3.. 4; % lower bar new tity); if tOj<i^)Sqrt 2: w^ = round iuo sqrt 2; else: t(A)() = it^j; fi; x.5 = .5r; y-, = 5[m,/i); ittjy d r a w 5 . % dot "Precedes Sign"; call ciiarbcgin('036ll8l0l0l.5[pxlph] + prt/2, .5[px, p/i#7 + />rt/2 — 2 pa, 0; vpen; Ift \{)X\ = round 2 5u; x2 = x.j — r - - xi; 1/2 = good 105[m,/i]; .5[t/2, y.,] = y{ = good)()a; xi = Xj = x2; yi = y2 + 6; y-> = Ui — 6; Mm draw (4. . )2 .. l{— 1, 0} . 1 { I, 0} . 3(.. 5 ). % diagonals "Follows sign"; callcharbegi/i( '037, 18, 0, 0, .5|px,ph] + prt/2,.5[pxlph] +prt/2 — 2pa, 0J; vpen; 1ft jqx-2 — round 2.5u; xi — x.j = 7 — zj; y, = good10 .5[m,/i]; .5[y2, y*] = y, = good ma; s.i = *-> = x2\ y.\ = yi + 6; y.-, = y.j — fe; ti;io draw (4. )2 .. I{1, 0} .. 1{—1, 0} .. 3(.. 5). % diagonals "Leftward arrow"; call ch*rhci>in{ '040, 18, 0, 0,.24p/i + .5prt + pa. .24ph + .5prt— pa, 0); cpen; IftioXj — zo = round ti) vl\oXi = round(r — u ): V\ = yi = ifi = yn ~ good,0a; w{() draw 1.. 2; % bar hpe n ; Ifti^s = Xq\ xr, — xh = xH — xi = - - fixwidthfiu, Qu] — cps; x:i — x.\ = x^ = x7; yj — Mb = yi — yi = !/4 — 2/1 = y? - yi = 24/i + eps; lpcn#; t^io + w\ dra w ( 5 . )8 . 3(.. 6); % erase excess at lower left hpen; draw (|tui|5. . )8 . .|tiju|3( ..6); % lower point lpen#; W\{)-\-w\ draw (5. )8..4(..7); % erase excess at upper left hpen; draw (|iui|5 )8 . [u\)\4(. 7 ) . % upper point 223
2 - • —-- ■ — 7 • \ \ \ \ \ N 1 1/ 6 V \ _.>■■' > i 1 1 1 1 1 o 1 I 1 I I 1 *"l "Y 1 till hill III I1 II II 1 1 1 1 1 1 1' II 1 1 1 1 h ii I i i | ii ii i i i i Jill 1 1 1 l; II 1 1 1 1 1 1 1 It II 1 1 1 1 II I 1 I1 II 1 1 1 1 1 1 1 1 * '1 1 1 1 1 ?< \N \ \ _J -2- ii i } i i i 1 | i 1 I i i s s 1 / / & t L_ *> 214
*fo = Xl\ ' Tiighlward arrow"; call charbcgm('041, 18, 0, 0, .24ph + .5prt + pa, .24ph + .5prt — pa, 0); cpen; lftio^i = round it; rtio^i = So = round(r — u); VI = 1/2 = V5 = ys = good,0a; W\{) draw 1.. 2; hpen; rtixs = xo] *r> — *8 — z8 — *\ = fixwiclth['iu, 6u| + <*PSJ z.i = x'i = va — Mi = yi — y.i = y-i — yi = w — yi = .24/i -f cps; rpen#; tuio + w\ draw (5 .. )8.. 3(.. 6); hpcn; draw (|u/j |5 .. )8 .. |u\>|3(.. 6); rpcn#; u;k, -f W] draw (5 .. )8.. 4(.. 7); hpcn; draw (\w{\$ .. )8.. |u*,|4(.. 7). "Upward arrow"; call c/iarbcgin('042, 9, 0,0, ph, ph — 2pa, 0); cpcn; top,0yl = yb = A; -%i, M*] = a; xo = X| = 2:2 = xr} = xH = good1() .5r; u/io draw I. . 2; vpcn; top7«K = mo; Ipen*; Wio draw 0..8; rpcn*; win draw 0..8; 1/5 — to = W8 — yj x= .24/i -f • cps; j/j = y\ = jfc = y?; x* — % = Z| — £j = X4 — xi — xi — x\ = 3u -|- cps; Ipen*; iuio draw (5 .. )8 .. 3(.. 6); vpcn; draw (|u^|5 .. )8 .. \w^\'i{.. 6); rpcn*; w{{) draw (5 .. )8 .. 4(.. 7); vpen; draw (|-«^|5 .. )8 .. |u*>|4(.. 7). % bar % erase excess at lower right % lower point % erase excess at upper right % upper point % stem % clean the top % erase excess at left % left point % erase excess at right % right point "Downward arrow"; call charbegin('043, 9, 0, 0, ph, ph — 2pa, 0); cpcn; top,()y2 = /i; 5[y,; y2] = a; yu = bot,0yi; xq = xi = x2 = *;> =■= a* = goodl0 .5r; u>io draw 1.2; vpcn; bot7r& = M)! lpen#; wio draw 0..8; rpen#; w\o draw 0..8; V5 — VH = yH — V\ = — 24/i — cps; j/j = y, = yg = W; £;j — £fc = £| — zj = Z| — X| = £7 — x.j = 3u + cps; Ipcnt; iwio draw (5 .. )8 .. 3(.. 6); vpen; draw (|u>7|5 .. )8 . . |u\>|3(.. 6); rpcn*; Wiq draw (5 .. )8 .. 4(.. 7); vpen; draw (|t/^|5 .. )8 .. |u*i|4(.. 7). % stem % clean the top % erase excess at left % left point % erase excess at right % right point 215
— l" • "N. '" .--" k k.^ A \ v. • k .-■■""" ' "s. ,.'•" \ \. *) \ !> - ,,'■ \ .>-*"" \ ■-•'"' v -Nk ■v 1 k #1 .8 k 17 • 'I / L 1 ie • ....... - — - L— 7 • _ i/ 6 • L 5> i 2-. * ^ 3° • k •v ,,.■-'' \ ,.-- k \ ■'•""■" /'.& %,\, ^v ■•■'*" e ^v \ ...-- mtfs k k L^ . k - \y \ "•^ k , f - u k (i y • ^ — 1— - -a, 1 a _..._. 2 "ad • a^ i l6v ..__ ► ♦a-f s ._.. 7 '.aa ' a: a.- 1 0 ...-• — ,.• — ■* ( / • 216
"Left-and-right arrow"; call ch*rbegin('044,18,0, 0,.24ph-f .5prt+pa, 24p/i + .5prt — pa, 0); cpcn; irt|(jX2 = a;in = round u; rt 10X1 = xo — round(r— u); yi = Vi = V:> = Vs = good10a; wu) draw I 2; % bar hpen; rt \x& = xo; Ift t£l8 = ickj; x5 — x8 — x8 —x:) = i|j — xl8 — x!8 — ii5 — fix\v/dth(3ii; 6u] -}-cps; X3 = X| = xb = x7; X| j = X|,| = Xio = X17; Us — u> = y\ — m = u\ — y\ = \n — y\ =• -24/1 + e p s ; yu = yr, y\\ = vu yr> = i/.-,; 1/10 = y&; yi? = yz; yis = ys; rpen#; wjo + u>i draw (5. )8..3(..6); % erase excess at lower right hpen; draw (|wi|5 .. )8 . |u\)|3(.. 6); % lower right point rpcn#; w\n-\-W\ dra w ( 5 . )8 . 4(.. 7); % erase excess at upper right hpen; d r a w (|w>i|5 .. )8 . |t^)|4(. 7 ); %upper right point lpcn#; ^io + ^i draw (15. )18. . 13(.l6); % erase excess at lower left hpen; draw (|wi|15 .. )18 . |?A)|13(.. 16); % lower left point lpcn#; w\q | tii| d r a w (15. . )18 .. 14(.. 17); % erase excess at upper left hpen; draw (|u>]|15 . .)18 . . |u^|l4(.. 17). % upper left point "Much less sign"; call charbcgin( '045, 18, 0, 0, .5\px,ph]-\-prt/2,5[px, ph] -f prt/2 —2p/i, 0); cpen; 1ft ioX| = round u\ rt mX-2 = round I I .5u; x* - x2; Ml = good ,0.5[m, h]; .5[y2, y.i] = Wi = good,0a; wio draw 2.. 1 . . 1. .3; % left diagonals rt|(jx5 = round(r — u)\ x^ = xr>; xj —X(=X5—x2; va — vw y-> = yi\ m = y.*; draw 5.. 4.. 4.. 6. % right diagonals "Much greater sign"; call chmrbcgin{'046, 18,0,0, .5[px,p/i] + prt/2, .5[px, ph] \- prt/2 — 2p<i,0); cpen; lft|or2 = round u\ rtu)X|—" round 1 1.5~; x,\ = x2; lfc = good ,05[m, h]; .5[j/2, »] = V\ = good,0a; w\{) draw 2 .. I.. 1. . 3; % left diagonals rt,0x,i = round(r — u)\ Xo = x5; x, — Xi = xr> — x2; y\ = t/,; j/r> — t/2; yt> ~ y.*; draw 5.. 4.. 4.. 6. % right diagonals "Similar or equal sign"; call chat-begi n( ' 047y 18, 0, 0, px — pe + prt/2 -f P*,P* — pe -\- prt/2 — pa,0); vpen; topl0[/| = round(a-|- ( m —e)~\ ops); top,(J?/| -- bot [{)y2 — round(ra— e); Iftioxj = round u; y-j — .5[y,, yj; yj == y2; yi = yiJ s.i = r — x:J; x3 = r — xr>; call 'a zdraw(3,1. 5, 2, 4, tc;io,u;io + de/taw, 7 5tt/(e— m)); % stroke cpen; &> = */7j a — lAi =■ round(m — e); Ift i<)Xo = round u; x7 = r - - x^; t^io draw 6.. 7. % bar 217
• 1 / i • y • / S Vj 6 • ..._ 1— — -.- -.— l — L__ — L._. -— ... ...... L— — ■ - — ~2> • • i. f L-2-' • ..- -— 1 _^_ L_ ..._* - ■■• ----- 1— '" 1 — • — r* •—- — — - -, — • —\. \ —i -.. \ x > • if 6 • X X • M 218
"Double leftward arrow"; callcharbcgin( '050, 18, 0, 0,.24ph + .5prt + .5(px— pe) + pa, .24ph + .5prt + .5(px— pe) — pa, 0); epen; Ift io^i = z<) = round u\ vl^x-i = round(r — u); £n = x\\ X\i - x^\ V5 = Vs = good10a; y, = y2; y,, = y,2; .5[yifyi I] = #>; yi — yi 1-= round(m — e); itflO drawl..2;drawll..l2; % bars h pe n ; 1ft[Xg = Xq\ x5 — xs = x$ — xj = —Rxwidth[3u, 6u] — cps; £3 = x* = xq = X7; V3 — J* = V\ 1 — 1/3 = V\ — l/i = y? — J/,| = 24/i + e p s ; lpcn#; t^o-f wi ddraw (5. . )8 . .3(.. 6), 11.. 1 1; % erase excess at lower left lipcn; draw (|wi|5 ..)8 . .|it\>|3(.. 6); % lower point lpen#; w[0-\-tU[ ddraw (5.. )8..4(..7), 1. . 1; % erase excess at upper left hpen; draw (|u/i|5 .. )8. .|u*)|4(.. 7). % upper point % bars "Double rightward arrow"; call c/iarbegin('051,18,0,0, .24ph + .5prt + .5(px— pe) + pa, .24ph + .5prt -j- 5(px — pc) — pa, 0); epen; lft|ox«2 = round u\ vt\nx\ = *<> — round(r — tt); X| 1 = si; X12 = x2\ lfe = «8 = goodI0a; yi = y2; yn = y\i\ -5[s/i> l/i 1] = 1*>; yi---yn = ronnd(m—e); tcjo draw 1.. 2; draw 11.. 12; hprn; tI\Xh — xq\ x$ — x$ = xh — xj= fixwi<ith\3u, 6tt] -\- c p s ; £3 = X\ = 2*$ = £7; 2/3 — tti = yn — y) = y.| — y\ = 1/7 — S/-i = -24/i + e/;s; rpen#; Wm + Wj ddraw (5. . )8. .3(.. 6), 1 1.. 1 1; % erase excess at lower right hpen; draw (|u;i|5..)8..|ut)|3(..6); % lower point rpen#; tum-f w{ ddraw (5. . )8 . .4(.. 7), 1.. 1; % erase excess at upper right hpen; draw (|u>i|5 . .)8. .|t/*)|4(.. 7). upper point "Double upward arrow"; call charbegin('052, 9,0,0, ph, ph— 2pa,0); epen; top l0yi = yo = h\ .5[y,, yi] — a\ y{\ — y\\ yn = y2; ^) = x-, = X8 = goodl0 . 5r; X\ = s*; ^1 = £12; •5(x|, £j 1] =- £r>; X| — £11 = round 3.5u; u>jo d r a w 1.. 2; d r a w 11.. 12; vpen; top7y& = ybi lpen#; 2u draw 0.. 8; rpcn#; 221 draw 0.. 8; y-> — yn = y» — yj = .24/i + eps; y, = yi = yr, = t/7; *3 — 2fc = 3»2 — ^3 = S'l — £l = *7 — *-l = 3u + ^P^; lpen#; 2u draw (5.. )8..3(..6); vpen; draw (|ti^|5 .. )8.. |ti^|3(.. 6); rpcn#; 2u draw (5.. )8..4(..7); vpen; draw {|t^|5 .. )8 . .|u*>|4(.. 7). % stems % clean the top % erase excess at left % left point % erase excess at right % right point 219
-1-4 72T W i1.1 r \ 8 / .^' 2 1 *7 • / / y rr • \ l 15 y .' 68 -i- 12 |\ • \ > A \ I *# ie • // / 3/ ^J 6 • • 220
'Double downward arrow"; call charbcgin( '053, i),Q,09ph,ph — 2pa, 0); cpen; topmy,> = h\ .5[y,, yz} ~ a; yo „ bot10y,; yi{ xo = x5==a:s= good,,, .5r; x\ = z2; x[{ = x\2] •5[.T[, x\ j] = xr}; X\ — X[[—- round 3.5u; 1^10 draw 1.. 2; draw 1 1.. 12; vpen; bot7yH = yo; lpen#; 2u d r a w 0..8;rpcn#;2ii draw 0.. 8; y.-» — «s = Mb — J/j=— -2'Vi — eps; y,, = y,t — & = #; *\ — ${i = Z\)_ — x.i — x\ — X[ = .\7— x | = 3u -{- eps; lpen#; 2u draw (5. )8 .. 3(. 6); vpen; draw (\wi\5 . . )8 . . |r%|3(. . 6); rpen#; 2u draw (5 . )8..4(..7); vpen; draw (\wj\5 .. )8 . . \u\y\4(.. 7). yw yi'i — ui\ % stems % elenn the top % era.se excess at left % left point % erase excess at right % right point "Double left-and-right arrow"; call c/iarbcgm('054,18, 0, 0, .24ph-|- 5prt + .5(px — pe) + pa, .24ph + 5prt + .5(px -- pc) — pa, 0); cpen; lftio^-2 = ^10 =~ roundu; rlio^i = a$u = round(r - - u); X[\ = x\\ x\2 = xi\ y:> = y* = good,0a; y, = y2; y, i =- yr2; .5[yi, yi i] =y->; y\ — y\ \ —- round(m — e); w\o draw I .. 2; draw 11 . . 1 2; % bars hpen; rtirz* = ar0; lfti*i8 = *io; x-i — zx = Xs — x.\ = x\:i - rri8 = xis - -sin — fix width [3tt, 6u] + e p 5 ; rr;i = x.\ = X{>= x 7 . xi.) = X|.| = X[q = xi7; yj — us = i/ii — kj = yi — y» ~ y; — y.i = -24/i + eps; Wi = ttj; wi i ^yi; yis = y->; yio = yt>; yt7 = y/; y»,s = y&; rpcn#; W\q-\-v>\ ddraw (5. . )8 . . 3(.. 6), 11. . 11; hpen; draw {\wi\5 .. )8. . |u*i|3(.. 6); rpent; wio + w\ ddraw (5. . )8 .. 4(.. 7), 1.. 1; hpen; draw {\w\\5 . )8 . |u*)|4( 7 ) ; lpen#; w{{} + w{ ddraw (15. . )18 .. I 3(. 16), 12 .. 12 hpen; draw (|wi|15 .. )I8 . >.\,|13(. . 16); lpen#; ti;|0|-t^iddraw (15. )18. . 14(.17), 2. . 2; hpen; draw (|u/||l5 .. )I8 . .|m)|l4( . . 17). % erase excess at tower right % lower right point % erase excess at upper right % upper right, point % erase excess at tower left % lower left point °/o erase excess at upper left % upper left point 221
i Cva 1 1 \ 4 '7 / i \ • ._... J • l i j * j r ! :9 '2- • i t 1 i I • f j i 9 r l_j --- "1 / i/ 6 S* ♦ •} f5 i { • 1 12 i -■ t • > I i p. \ j 1 / 1 — — ...... 7 • ••V \ \ V \ 1 * 1/ 6 • . 1 V ,y' # ( 1 1 1 1 1 1 1 1 1 1 1 1 222
"Left shift sign"; call charbegi/)('055, 9, 0,0, ph, .5pd, 0); cpen; Ift 10Xi = 2o = round u\ rt i0x2 = round(r — u); J/i = 2/2 -= 2/5 = 2/b = good,,, ,75/i; wio draw i .. 2; x<j = x-2j botiol/D = —-5d; draw 2.. 9; h p e n ; lftix8 = x&; x-3 — xg = xg —Xj — —3u — eps; Xj = x.| = Xg = x 7 ; w — i*» = yi — mj = y i — yi = y/ — i/» = -2/4/l + */>*; lpen#; tuio + u>i draw (5.. )8 .. 3(. .6); hpen; draw (|u>t|5 .. )8 .. |u\>|3(.. 6); lpen#; ^io + ^i draw (5. . )8.. 4(.. 7); hpen; draw (|u>i|5 .. )8 . |iMo|4(.. 7). % bar % stem % erase excess at lower left % lower point % erase excess aUippcr left % upper point "Right shift sign"; call charbegin('056, 9,0,0,ph, .5pd, 0); cpcn; Iftio22 = round u; rt iqSi — xq = round(r — u); Vi = m = Jfe = Vs = goodl0 .75/i; t^io draw 1.. 2; so = X2] botiotA) = —5d; draw 2.. 9; hpen; rtizs = Xo; Xj — Xs = X8 — X;j —3u -|- epj; X;j = Xj = 2(j = x7 ; V\) — 2Ai = l/i — V3 — y-t— yi = V; — y.i — -24/i + eps; rpcn#; w\q + W\ draw (5 . )8 .. 3(.. 6); hpen; draw (|wi|5 .. )8 . |u\)|3(.. 6); rpen#; Wio ~h Wi draw (5.. )8.. 4(.. 7); hpen; draw (\w[\5 .. )8 . .|w^|4(.. 7). % bar % stem % erase excess at lower right % lower point % erase excess at upper right % upper point "Maps-to relation"; call charfo«gi/i( '057, 18, 0, 0,.24ph + .5prt + pa, .2 lph + .5prt open; Ifliox? = roundu; rt k)Xi = Xo -- round(7 —u); \Ju — V\ = yi —Vi = Vh =goodl0a; W[o draw 1.. 2; hpen; rt(Xs = so; Xj —- X8 = Sfc — X3 = fixwidthfiu, 6u] + eps; X3 — x\ = y* — !* = y\ — yi = y\ - y\ = w — y 1 — 24/* + eps; rpen#; Wjo + l^| draw (5 . )8. . 3( 6); hpen; draw (|w,|5 )8 |u\,|3(. .6); rpen#; W|o + ^i draw (5 . )8.. 4(.. 7); hpen; draw (K|5 )8. | u\)|4(. .7); xo = xin = x2] yo ~ y\] yw = yj; cpen; w\q draw 9.. 10. pa, 0); % bar XB = xl\ % erase excess at lower right % lower point % erase excess at upper right % upper point % stem 223
1 s \ c 3-~J • a4 \ ^.-y • ;j 3 \ \ "a ' \ • /"' * a _..-- 10« -12 » -*4 "^ \- X _./-' \ \ 1* J ; /i / a| • j /I / - 1 1 > 1 31- • V t \ y v .- t ■ t *A / .x-' < / ^. "■- .-■— t i / -^ i — / / / / f L 1 / / / • / • • • 1 3/ 0 ^ - " . -J / / i / ...--' - - 4 • —b -* < ►..._. 1 » — - U — ' ■■6n • '-5% « 224
"l'rime symbol (intended as superscript only)"; call ch<irbcgin{ '060, 4 5, 0; 0, .8ph, 0, 0); new w)8, mjo; w>8" round .5[i^),n;|]; tuj<) = rotuid( /10/rf + 2de/iaw); open; toprt9j/| —round .8/1; rtoozi = r; bot^y* = 0 ; Iftos^ = 0 ; call cdraw(J, 2, 99,98). % diagonal "lnfnity"; call ciiarbegin('061, 18, 0, 0, px, 0, .5px-s/ant —.5pu); new m>8i^)o; wa><) = round .25[tifa, 107]; ttfjs = 2[tuj,u>2]; vpen; t,op«M)y2" ™ + 00; bot<)<,y, = -00; 1/2 = yi; Vi = Ui', t\ = *2) x.i = xx\ y-> = 2/u = J// ="- .%i, IJ2]', lftoX7= round u\ rtox-, = rutind(r -- u); xq — .5(^7, a;.-,]; new ss,mss; % reciprocal slope at center if 74, r= ti>)8: nhss -- ss; ss — —ufm\ else: /n.ss = .75.%-; ss = —6w/m; fi; call * a zdraiv(7,4,6, 1, 5, W)<), tu^ss); % lower right and upper left slrokes vxn draw 5{0,1} .. 2{ — 1, 0} . <i{mss, -1} . 3{ — 1, 0} .. 7{0, 1}. % upper right and lower left strokes "Element sign"; call charbcgin('062,12,0, C, 5[px,ph] + prt/2,.5[px,p/i] + prt/2 -- 2pa, 0); epen; rt|0X| = round(r — n); Ifl 10^;i ~- round u; *5 = T<i = x,; rr2 = X.{ = .5(r + 2u); Vi = V2 = good,()(.5[m, /*7J; y* = JAs = ^i V\ '— Vr>\ •%->, Vil = Ms; ti;io draw 1.. 2{ — 1, 0} .. 3{0, — 1} .. 4{1,0} .. 5; % bowl draw 3. .6. % bar "Nonclement sign"; call c/iarbcgjri('063, 12, 0, 0, ph, ph - 2pa,0); epen; rt 10*1 = round(r -- u); Ift i0a:j= round u; xy = x« = x\; x-2 — xx ~ .5(r f 2u); y, = y2 ^ goodl0(.5[m,/i|); y, = ^ = ft; y., = y->; 5[yi, y,] = <*; ti/io draw 1.. 2{— I, 0} .. 3{0, - 1} .. 4{ I, 0} .. 5; % bowl draw 3.. 6; % bar rt|o£7 = round(r — 2u); Ift|0x8= round 2u; top,0y-/ = h\ .5[y/,y^|= a; draw 7.. 8. % diagonal 2 2 5
a2 • •••■ / 1 1 1 \ i a3 1 ■ * \ 1 1 1 ' I f 8 CT7-1 •••-I /I / v- m ■ b^\ ! , . * M ; / t i i / i l l > \'' / \ a4 / Y ( 2 i '; \ | b3 I • 1 i 1 j ! 1 1 *\ I ■W / , :' . l*5- ..t ' 8 .' u / 3 / 2 • / L / i / / '3j • ^ — -• • ""i •■•• -t- ~.| • 1 i If XI L * 1 1 \ * 1^ i i • □ — —• n r~~ -— □ —- □ --■ □ «.. L 4 1 t 1 i t 1 1 1 i i £ 1 i j i ( t » i t i t ! 3 • 1 \ % _>.* < \ \ \ \ \ ■ ^ \ \ r '* -^ t I / * t t / . 1- 1 / 1 / '
Zmpty set symbol"; call charbo£/n('064, 9,0,0, ph + pb, pb, 0); if fixwidth — 0: new save; save = sqrttwo; new sqrttwo; sqrttwo = sqrt(1.231144l3save); % the constant is 23/,° fi; hpen; i f ii>t > 1.5u: lft2:r2 = round .75u; else: x2 = good,! 1.5u; fi; £| = r — r&i; % axis of left-right symmetry 33 = r — x2\ top0f/| = h -h oo; bot0y2 = —oo; y;J = y2; call " a darr(l, 2, it;-2); call * b dan:(l, 3, w2)i % bowl if fixwidfch = 0: new sqrttwo; sqrttwo — save; ft; cpon; rtl0X7= round(r— 221); Iftjo^H =^ round 2it; topJ()y7 = h + b; bot joys = —6; Wjo draw 7.. 8. % diagonal "Underline"; call chcirbcgin{ '065, 9,0,0,0,0,0); epen; lftioX|= round u; x2 - r — x\; y\ = y2 = 0; wio draw 1 . . 2. % bar "Angle sign"; call charbcgin{ '066,12, 0,0, ph, 0,0); epen; 1ft 10^2 ~ round u\ x\ = x3 = r — xo] top|0yi — h ; boti0y2 = 0 ; y* = y2; WW draw 1.. 2.. 2.. 3. % diagonal and bar "Universal quantifier"; call <:harbcg/7i( '070, 10, 0, 0, pb,0,0); cyan; lft|o£|-= 0; x2 ~ good,,, .5r --• 5[xi, sj]; topjoVi =■■=/i; y< = yi; botmy2 = —o, yi=-y> = good,0m; new aa,bb; Xi^aa^i, rr2); V\ ~ ™\Vi> Vj>]\ x'> — bh\xh *i\\ V> — bb\y.h y2]; tvm draw 1.. 2.. 2.. 3; % diagonals draw 4. .5. % bar "Existential quantifier"; call charbcg/n( '071, LO, 0, 0, ph, 0,0); cpon; Ift k).T| --= round u; rl \{)x2 ™. roun<l(r — u); x.j ~ :c-, -- z2; :T) — x(> - - 25u -- x\ ; topl0yi = /i; boti0y4 = 0; yt — y{ y3 — y0 = .5[yi, yj]; yj — yi; t^io draw 1.. 2 . . 2.. 3.. 3. . 4; % upper bar. stem, lower bar draw 5. .6. % middle bar "Logical NOT"; call charbcgin( '072, 12,0,0, px, 0,0); epen; lftio^i = round u; X2 = xj = r — x\\ V\ = Ui = good,, .5[e, m ]; V2 —1/3 = i.2(m — e); tt>io draw 1.. 2.. 2.. 3. % bar and stem 227
n !"\ ;* ' 2. \ 3 ^ A \ x-° \ ' •■ \ ..' i' i I ll| \ \ \ \ ,l-2\ 20 "\ V- \2 ?4 • \ ie\ '-27 H .V 28 1 • 1 psl i-t2» \ \ ': y\ .—1-54' \ • • 1 i' / I '/ \ V! J « ' , l?\ - •.• t\ 8 • •9; • • •■ 228
"Hebrew letter aleph"; call chnrbcgin{ '073, 11,0, 0, p/],0,0); vpen; lft(,.T|-~ round u; y\ — j [m,/i]; x.\ + xj = z:, -|- Jo = s2 -f x7 = z<> -f x?) — x , + x8 = r; z2 = x., == 2.5u; new aa; a>2 — aa[z|, xH\; tfeo = aa[yi, j/»]; top:>?/-,o = topGy2; bot5t/>o = botf ii/i; rn = 1.5u; topb«o = /i; 1/i™iaj; 2 i == 5u; ?/i H «5 r^ 1/j + !A> = 1/2 + !// = i/i -f- !/s — W) + Wj = h\ t^ddraw 0 0{0; — 1} . . 2{*s — xh ^ — V\) H*s — X[, y* - U\} . 8(0, - - 1} . 9(. 5), (4. .)<>■• 1(0,-1}.. 3(*8 — xi,to-yi}.7{^-xilto-i/,}. . 9{0, —1} .. 9; % long diagonal hpen; tf|<)= 3 5u; new aa; xU) — as\[x\, x$]'t V\o — aa(yi, y«]; new wj<)j uvjo = round .Sfu^wi]; .Til — good,,, 2u; ?yi i = e; Z|-2 —.5(.t, I, xu]; t/i-2 —.%i I, i/i:j1; xij— good, 3.5u; yu = .2e; xi , — good- 2u; bot.-.yi t =0; draw|u\,#|10{i/s— V),x\ — *s} |u4)n|H(0, — 1} .. |5[u\)cif ti^)|12{ 1.5(a;,:) — xn),yu — yn} .. |u/.-,»|13{0, - 1 ) . . 14{—1,0}; % lower left stroke x\r} — 7.75u; new aa; xr, ^ aa[xj, *s]; y\r> = aa[yi, y»]; z,o = .5[x-2i, ^s]; l/m = .5(i/2i, Vzh]', vpen; lft0:r2l = round 7u; y-n = f/i; X20 + 0>2<j = X2\ + X*28 = 3>2'2 + X«27 ~ Xl\ + 0^; ^28 " ^8; WO + !/2<) = UZ I + 1/28 -= t/2«2 + y27 = Ul I + tf25 i W8 = 25 [m, /i|; topr>?/io — top(iy22; a>22 = ^27J x2{) — 7.5u; x-2 j =^ 9.5u; y>o = t/2,j = yo; tf^ddraw 2 0 . 20(0, -I } . .22{s2S -- x>\,*mh — 7M\} . • 28(0, - 1} .. 29(.. 25), (24 .. )20 .. 21 {0, -1} .. 27{a*8 - x2\, tjin - tfci} . • 29(0, — I}.. 29; % short diagonal draw 15(0,1}. 16(0,1}. % link 229
a2 ^ • f V^5 . . • • a|7 T4*« h 12' c \ i V /'" 1 * 14\ ae\ \ 6~k9 ! io* r f i 9> • i 20 1 ; • 1. f 1 8 • 1 1 i ^.-•*' "..:. a V \ \ \ \ 1. \ \ \ L-7v»10 _.-" .-■■ Ort-.-' ..."».. ■ i 1 i 22 \ V ^ -i1 A~ ~*Z> _J ^V*T.- 250
c arc(9,8, w.\)\ Viw --■ -45e; "Upper case Fraktur R."; call charbcgin{ '074, 13, 0, 0, ph, 0, 0); new u>)o; wj<) = round .25[i4), wi]; hpcn; IftoZj = round u; Vi = ^[e, m]; x2 = 2u\ tfr = e Wq draw 1(0, — 1} . 2{1, 0}; %\\ - 2.5u; top0yj = /i + oo; Iftoo^i = round u; z~> = 2u; y5 = £[m,/i]; rt<)<)Zo = round 3.5u; call "a sdraw(3, 4, 5, 6, 2, Wm, ?% —(h — c)/(8u)); x7 = xh'— good, 5.5u; xj-, = m ; y$ = e; call "b arc(3, 7, tui); wi draw 7. .8; x<) = 3.5u; botoyv) — —oo; call zio = jw; yio = 3e; xn = 4u; £{'2 = u; 2/i-i = -35e; X|3 = 2u; new aa; x, xln -f aa(yl2 — yn); yu = yio + aa(xu — x,2); tuo d r a w 9{— 1,0} 10(xi I — x,0,yi i — yio} . - 11; draw 12.. 13; *i-i= 1/14 = -75/i; *ir> = 9.5u; lop<)9yi5 = /i + o; draw 14{0,1}. 15(1,0}; lft jxl0 = U.5ti; yi(> — .6/1; iy,| draw 15. 16; Ift<)c,si7 = lft,,xMJ; yi7 yiG; new aa, hb; rt<j«)Xi8 = aafrt,^, rt jXiu]; yi8 = aa[yis, yi6] *18 ^ *i7 4- bb(yi5 — !/i»); yis = Vi7 f M>(&i6 — X|5); rpen#; w.\ draw 17.. 18; *2<) ■= ^7) !/io = I/21 = -52/i; X'21 = 9u; hpcn; ti*)o d r a w 20 .. 21(1, 0}. 17(x|8 — *i7, yi8 — 1/17} • 1 X22 = 9.25u; yn —- .5e; lft>o^2i = H'ti*2:*; botiy2:j = — x2,j = 10.5u; 1/21 = Ui.W rt^x^ = 12.5u; y25 = e/4; UM draw 21 .22{x22- - r21, y22 — y2l} 23(1, 0}; rpcn#; w.\ draw 24. 25; hpen; ti*)o draw 24.. 25. % point of upper lefl flourish % flourish 8; % upper link % stem % lower link % perpendicular to 12..13 % tail % % top of bowl % diagonal of bowl perpendicular to 15..16 % erase excess % bottom of bowl % lower diagonal % erase excess at lower right point of lower right diagonal 231
fi\ -!-■ -■7- \ \ «\ 5 I—iik-I it :,o( - A- --' \ L— * n n Z] • i | I I I 1 i I i i 1 1 t 1 r 1 i 1 ! 2 n j 3 .1 • 1 Lis 1 • 1 1 j i 1 \ \ t 6 %^ . r ■-■■ • ■ — " .— . 7 . • r * j 4 , m / 232
Upper case Fraktur I"; call diar6egin('075f 1^,0,0, ph, 0,0); % (this letter extended to be same width as the 11) new uxy)] uky) --- round .25[u\j, w\\\ lipen; x\ = 5u; j/j -- good(. .5/t; Iftoo ^2 = round u; iji = .75/t; X., = i|; top<my < = h -\- 00$ ttt,c, draw 1{ —1,0} .. 2{0f I}..3{1,0}; % shoulder x,, =■= i)nt ?/, — .75/i; :C5 -~ l().f>u; l)ott)«)j/;i --- ]fi + 1; rt<ioXo =•= 12.5u; hot<)<M> ~ -75/i-f- -I; draw \u\M)f\:i{Lt0} .. \wit\<i{Gu, ~h} .. |wa)«,#|5{ I, 0} .. 6(0, I}; % upper stroke 1ft \Xy =- round a; 1/7 — goodr> .25/t; a^ "- 7?x; hot.(t/.s -- -- 00; z<) — good , 10.5-u; t& — /i/6; .rM) = good , 8.5?/; ym -- A5h; xu = l/:;qrU\vn[xi2,xui]', Vw =^ l/«/rUivo[ym, y^l; rt«h).ru = round 12.5u; j/u -- .5/i; draw |m,|7{ 1, 0} .. 8{ L, 0} .. 9{0, 1} .. |w,t| 10{0, I} . . r2i(«A.Mi, h»i||11{xi-2 ■-• -Tin, ?7i2 — l/io} • • |u*.)«)#|l2. . 13{0, —I}. % lower stroke "Lattice Lop"; cpen; if (ixwiclth =--- 0: if pa -|- 8pu > p/j: call diarbogin('076,18, 0, 0, ph,pb - 2pa, 0J; top ,„yi --/t; else: call <:/iarbc/jin('076,l8, 0, 0, 8ptJ-f pa, 8pi/~pa, 0); top,nyi = a -{-- 8tt; fi; else: call charbegin('07(>, 9, 0, 0,3.5pn -|~ pa,3 5pu— pa, 0); to|>l0Vi ~ a "|- 3.5u; fi; ■5fi/i 11/21 = a> xi ^ '^ — -5r; irt up..! --- round u; x{ — r — .r{; t/, ~ j/.t •-= 3/1; <t?io draw I 2; % stern draw 3.4. % bar "Zero-width slash to negate a relation"; callc/iar/>cgff)( 700, 18,0,0, ph -\- pb, ph+ pb —2pa, 0); charwd 0 ; chardw 0 ; cpen; vl\t\Z\ — round(r - - 2w); Ul\ux-,-= round 2u; topl()y, — h -|- 6; 5[?y, , ?/2] = a; Wm draw 1 2. % diagonal "Set union .sign"; caildi;irbc«iii('i:}3, I 3, 0, 0, pli,ph - 2pa, 0); cpen; Iftjoxj^ round u; £2 —-■ £1; Xj = r — :r.,; *i =-■- 2:5 — r — X\\ y, ^= Rood,n(.5(m,/i]); .5[i/|,«/.,] = a , y2 ~ y, =-- ;^ jy,, y,]; y-, = y,; call qcirc(3, 6, 2, t^jo); call qdrc(3, 7, 4, W|0); %cup k>io draw 1..2; draw 4..5. % sterns 2 3 3
1 1 1 1 • 1 2 • 1 \ | l « \ -- — - V. t- ... 1 \ i i '-3- • I r ■■"' J 7 ♦ ..•■ ■ • i j. l » i i j 1-4 • / / — 1 2| ♦ 1 1 1 ' 1 • 1 \ 1 1 f 1 1 * 1 1 \ 1 .-••■ '-■■■ * —' ■3-' • —. "Nx, ^ N \ \... . \ t v M r • i r r i i 11 i r | 5 i 1 1 i i • i 1 i- j 1 . 3 - - - - 1 ! * 1 j 1 | 1 f 1 t 1 I i i 1 ■ i 1 2 • - ^ «r 1 L [7 V 1 / / / / / > i i / J i f j A / .^ ^1 ^ N \ r \ \ 234
"Set intersection sign"; call charbegin(' 134, 13, 0, 0, ph, ph — 2pa, 0); open; 1ft u>x\= round u\ Xi = xx\ xA = r — xy} X\ = xj = r — x\\ to —8°<><l|o(.5[m,/i]); .5[y,,?y,j = a; y2 = y, = ?j[yi,y>]; Us = V\\ call qcirc(3, 6,2, ww)'t call <jdrc(3, 7, 4, wio); tf io draw 1.. 2; draw 4.. 5. "Multiset union sign"; call chtxvbcgin(' 135,13, 0, 0, ph, ph ~2pa, 0); cpcn; IftiuXj = round u\ Xi = X\\ Xj = r — xyf x<\ = x$ = r — x\\ Vi —- goo<ll0(.5[m,/i]); .5[y,,y<] = a, y, = y.t = 5(yi,ift]; Us = V\\ cnll<jdrc(3,6, 2, u>io); call qcirc(3, 7, 4, W|o); ti^io draw 1 . 2; draw 4. . 5; Vh — M) ~ .47[yi, y*]; z8 = r — xq = x{ + 1.75tc/n) — eps; *io = *u = *3\ .5[yio, yN)==ya; yN .. yio= 5 — **; draw 8..9; draw 10. . 11. % cap % stems % cup % stems % enclosed plus sign "Lattice infimum (logical AND) sign"; call charbcgin{' 136,13, 0,0, ph, ph —2pa, 0); cpcn; lft|()£i= round u; x-j — r — zy9 x$ — r — x\\ yj= good iu(.5(m,/i]); .5[y,, y,] = a; yr> = yj; Win draw 1.. 3.. 3.. 5. % diagonals "Lattice suprcmum (logical OR) sign"; call cluirbegin( '137, 13, 0, 0, ph, ph —2pa, 0); cpen; Ift io^i = round u\ x^ = r — xy xr> = r — X[\ V\ = goodl0(.5[m,/i]); .5[y,, yA\ = a; y* = yt; u>io draw I.. 3 .. 3 .. 5. diagonals "Left turnstile"; cpcn; if fixwUUh = 0: if pa -|- 8pu > ph: call <;harbegm('140,18, 0, 0, ph, ph —2p;i, 0); topl0yi = /i; else: call cbarbcgin( '140, 18, 0, 0, 8pu + pa, 8pu— pa, 0); topJ()yi ~ a + 8u; fi; else: call charbcgin('140,9, 0, 0,3.5pu-|- pa, 3.5pu — pa, 0); lop|0yj = a -|-3.5u; fi; .5fyi, y^l = a; *i — *> = s.j; lftioX;j— round u; xi = r--zj; y.t — U\= a; t^io draw 1 .. 2; % stem draw 3.. 4. % bar 235
f f —J L_± I I I I I I I I I I 1 I I | • I I I I I I I I I I i I I I I ! I I I I I I I I I I | I I I I » I I I I | I J I h i i*i I i I I I i i i i i i i ■ ♦ • I I I I I I I I I I I I I I M I I I I I I I I I I I I I I I > I I i i i i I i i I i i i i i j i I I I i I I I I I I I I I ii II I I I I I I I II II II i i i i I i \ i I ii I ii lit* ; i .? y in—n—ii m *n—rr ii ii ii ii *iii ii 1 II I! Ih III II II I i II I IH II I I I I 1 n I Li «i|| | 1 Fill • Ii I U \ r f 1 i i i 2I * • i i 1 ~'l 1 -3- -±n r^- ■ — r i \ i i i 2 u 1 ■■■■( ' ■■" 1 if-" r' . -t. 1 v"s 1 \ \ 5 • \ i \ 1 r i i i -ri-^M i I A :\ 1 236
"Right turnstile"; cpcn; if fixwidth = 0: if pa + 8pu> ph: call <;fiarbegin('14l, 18, 0, 0, p/i,pb-2pa, 0); topl()yi = h ; else: call c/iarbegin('141,l.8, 0, 0,8p(j+ P^ %PU " P*t 0); toployi = a + 8w; fi; else: call charbcgm(' 141, 9, 0,0, 3.5pu -|- pa,3.5pu — pa, 0); top1()yi —a + 3.5u; fi; •5[t/i, ?/i] — a; x, — x2 = xi; lftu)x;j = round u\ x.\ = r — xy, yA — y.\ = a ; W[o draw 1.. 2; % stem draw 3.4. <£ bar "Left ,fl/w Jiwxr.keJ",- call c/iarbrg/n(' I 12, 7, 0, 0, p/i-(-pb,p/i-|--pb -- 2pa, 0); cpen; x{=^x>— good l()2.5u; x.j—- xi + 3.75u -f- eps; topioi/i = /i -h 6; 5(y,, y2] = a; yj = y2; W'U) draw I 2. 2. 3. % stem and bar "Right floor bracket"; call chavbcgin(' I 13,7,0, 0, ph -\-pb,pli + pb--2pa,0); cpen; x\ = x2 —- uoodm(r — 2.5a); x< = x\ -- 3.75u— eps; top,0i/i = /i + 6; %i,y2l = a; y:j = y2; Wiu draw 1.. 2.. 2.. 3. % stern and bar "Left ceiling bracket"; call charbeginC 144, 7, 0, 0,ph + pb,p/i+-pb- 2pa, 0); cpen; x\~x>~ good ,0 2.5,; x< = x\-\-3.75u -\- cps; i°Pioi/i= ^ + b> -%i»Vi]—■ *' i/.« ~ yu Wio draw 3. .1 .. 1.. 2. %bar and stem "Right ceiling bracket"; call <:barbcgin( '145, 7, 0, 0, p/z -}- pb, pb -(- pb -- 2pa, Oj; cpen; X| = x2=: good l0(r -- 2.5u); x.* — x\ — 3.75u— eps; top1()yi = h + 6; -5[y,,y2]--= a; W = 1/U u>K) draw 3.. 1.. I .. 2. % bar and stem "Left brace"; call charbcgmC 116, 9, 0, 0, ph ••}• pb,pb-f- pb — 2pa, (pb -|- pb) slant + .5pw - - pu)] hpen; x2 = x.\ =z x-, = Xr, — Rood, 5r; .T| — xr —- x> - z\ — 3?t -f- ep.s; x\ — X7; t<>Po2/i = '* + 6; V\ ~ .5[yi, y7] = .5[y2, ■«>] — %j, y-,] = good(ia; ih — vi = w - - y-i = (wi - wi)/'l; draw|^,#|l{3(x2-o:l),y, - y,} |^,#|2{0, -1}. |^,#|3{0, -I}. I^\)#|4{3(x., — x,), yi .. yj}; % upper stem draw K#|7{3(zb - - x7), »> - 2/7} • |u>i#|6{0, 1} |u;i#|5{0f 1}. . |t^)#|4{3(x.l — zs)t y.\ — yr}). % lower stem 237
b^c N 2 I r / / i 5 i ? r^i. -t- v \{ — / \. 1 f i < 1 j \ \ 1 • 1 1 1 \ h±] - 1 * ' i '■*3 .• i \ > / / V \ i 7 / i / 1 ^j • ' \ i ! i 2 * * r | I i 1 f > i i i i 1 | i 2 L*2 1 •, I » 1 1 i 1 t 1 ! 1 I \ i 1 ! E L • -5" • i > ~~P\ ■ l 6 " -1 • *)\ (? • — -5- • "I i ( ! ! • ■ — i 1 i i j i •J 238
'Might brace"; <allcharbegm('l47, 9, 0, 0, ph -f pb,ph + pb — 2pa, (ph f pb) shint + 5pwi —4p<j); hpcn; £2 = x:j = xr, = afo = coodt .5r; £i — x2 = z-2 --- £| = —3u — ops; 2:1 — £7; top^t/i —/i -f 6; yi = .5[yi, ;y;7 = .5[y2, <A>] ^ •%>, y>] = goodGa; y\ — m-=yj — y.i = (yi — yO/4; draw K#|l.{3(*2 - x{), y2-yi> . |u/i#|2{0,—1} . . |t£>i#|3{09 —1> . K*|'l{3(*-i — *i), y.i - y.j}; % upper stern draw K#|7{3(rt5 - *7), Wi - 1//}. |u>,#|6{0, 1}. |ti/i#|5{0, 1} . K#|4{3(x,, — *-,), y.i — y5}. % lower stem "Loftangle bracket"; rail diarbcgin(' 150, 6, 0, 0, ph -f pb, ph + pb — 2pa, 0); cpen; rtioZi = rouiid(r -- u); Z| — a>j; lft 10^2 -= round /Ixvvidthfu,?u]; *'<>Pio!/i = ^ + 6*> •5[yi,y.j] = y2= good ,0a; wiu draw I 2.. 2.. J. % diagonals "Right angle bracket"; call charbcgin(' 15 1,6, 0, 0,p/i-}-pb, ph + pb —2pa, 0); cpen; rtio(r -- X\) -- round(r — u); £j = xj; lftio(r — :c2) ^-= round /ixwkUh[u, $u]; topl0yi = fc + 6; -5[yi,yj] = y2 = g<>odl0a; wio draw 1. . 2 .. 2 .. 3. % diagonals "Vertical line (absolute value or length)"; call cfiarbcgin('152; 5, 0, 0, pb + pb, ph + pb -- 2pa, 0); cpen; x{ = x2— good |0.5r; topl()yi = h -f 6; .5(yi, y2] = a; itfio draw 1 .. 2. % stem "Double vertical line (norm or cardinality)"; call charbcgin(' 153, 9, 0, 0, ph-\- pb,p/j-f pb — 2pa,0); cpen; :n —*2 = £<**/ m.25r; top,„yi = h + 6; .5[yi, y2] = a; X;j = x.j = r — xt; y.i =tj\] V\ ----- m\ ww draw 1.. 2; draw 3.. 4. % steins "Double left bracket"; call charbeg/n('154,8, 0,0, ph + pb, ph + pb -- 2pa, 0); cpen; x\ = X'2 = good102.5u; £* — x\ = X|-f 4-75u + eps; xr> = £(3 = xj-|- round 3u; topmy, = h + 6; 5[y,, y2] --= a; y* = y^ —- y,; Y / — j/r, = a*; wm draw 3. 1 I 2. 2. 4; % bars and left stem draw 5.. 6. % right stem "Double right bracket"; call diarbc#in('155, 8,0, 0, pb-(- pb, ph + pb -2pa, 0); cpen; X| — x2 = goodl0(r — 2.5u); x:j = x.| = X| — 4.75ti— eps; xj = x^ —Xi — round 3u; topmyi = h + b\ %i> w] = <*; «j = ife = yi; v-i = «& = va; t^io draw 3.. 1.1.. 2.. 2.. 4; % bars and right stem draw 5 .. 6. % left stem 239
M't 8\ / / // _ / 7 7 F/ / / ?! / / / / > f ' ( t . / n 7-4 1 ^ hhh \ M"| , \ \ I v \ r x % \ •- \ \| □ 3 3 3 n d 13 -1 / , \ N / ■ / // , 77 ■•'/ / / t 7 ■ / / f — \ / '• 8.6 r * 1 • ._. . 1 ?,/'! ! i / i i i I ') i l i i ♦ / / i i ! i 1 i .1 " il •) i' "T l"*" I "II —' i 'y i i' i' } i i i i | —1 / T., 1 H "■' /" j / 1 i / 1 f L — — • ij 240
"Radical sign"; callcharbegin{' 160, 15, 0, 0, p/j \- pb} ph -f ph — 2pa, 0); hpcri; x, = goodl()(^u); x2 = r-(■ 1; topmy2 = ^ + -6; •5[yl,y2] = a; !/j = i/3 = !/? = goodfia; yi = y(i — ij\ ; x7 ~1.5[z2,xl]; lftiux7 = lft2x.\\ rt-2X;j = rto^r,; |ftl().T| = lft>x<i; rt2x.i = rtoz<>; xH = x1 — u) new aa\ x8 = aa[xr» x2\\ y* =aa[y>, V&\ hpen; v)z draw 3. .4; % loft diagonal Wiodraw 7.. 4; u*) draw 5.. 6; % sharpen the corners lpcn#; w-i draw 8.. 5; % erase excess at upper left hpen; u\) draw 8.. 5; % serif rpen#; w-2 draw I . . 2; % era.se excess al lower right hpen; W[o draw 1 . . 2. % right diagonal "Sharp symbol (number sign or hash mark)"; call charbegin( ' 16 I, 15, 0, 0, ph,ph — 2pa, 0); cpen; lft k)*i = round u; x.j = x\; x2 = xt == r — x\\ l/i = !/2l Wj = S/iJ y\ " V.\ = round(m — e), 5{y\} y.«] = a; W[u draw I 2; % upper bar draw 3.. 4; % lower bar X-, — lu — x\\ z$ + 2u = x-i\ xr> — x.-, = x,s — X7; 7\, -- x-; — fixwidth\09 —3u]; V.") = !/7i Mj = IM', topl0iAj = h\ .5[y-„ JA»1 = a; draw 5.. 6; % left diagonal draw 7..8. % right diagonal "Nabla or backwards-difference operator"; call c/iarhegin('162,15,0, 0, p/z, 0,0); hpen; rtox-2 = round(r — u); lft \x.\ = round it; top0y^= h; top ,yi = /* ; hot ty-j = — o] u, = W5i xo — x2 r=r, s, — xr>; lft ,*-, = lft0:ch; x, = x2; x.j= xt; vpen; top<sy, --= h\ j/j . y,; ?jaj draw 1 3; %l>ar line Ipen#; tuj draw 5. .4; % erase excess at upper left hpen; undraw 5.. 4; % left diagonal rpen#; w<\ draw 6. .2; v>) draw 6.. 2; % erase excess at right hpen; wo draw 6.. 2; % right diagonal ?/? = y\\ lftox7~ lft \X\\ W[) d r a w 2 .. 7 . 7 .. 6. % sharpen upper left corner 241
8 9 • • • j 5 i | ( I: L o i ■ n * \ i i j i 1 1 I 3 • • • — F > i i i ._» 1 ( r i j I i i A— > • D U n n n D n n n n n 1 1 TIT f ?) T) '2- 1 * \ Li i i i [ i j ! 1 r i i 1 l 1"~ • -.-.. ,*.. — - •— -• -1 L4J • I I 1 1 i 1 i 1 I 1 ! 1 f 242
"Integral sign"; call charbegin( '163, 9, 0, 0, ph, pd, 0); hpen; rt2xi = rto£2 = round(r — u); J/i = y2; lft.2.T<j--lft().T8= round u; y$ = t/c>; open; bot2j/o — — .9d; ys -- y? = V\ — V\\ hpen; Xi = r — 2.5ti; X7 = 2.5u; top()y:i./z ; bot0i/7 = —d; x5 — £<**/, .5r; tfi = .5[y.), y7]; a:., = x5 + .5u; y.j = 1/3 + .3(y, — y7); xo = x5 — .5u; yr> = w> - -3(y.i .. y?); c.pen; IU2 draw 1; draw 9; hpcn; draw |ti*,|2{0, 1 } K*|3{ —1, 0 } |75[u>o, Wil|4{r,s-*.,, Mi -- y.,} |w, #|5. |.75[tf*), wi]|6{xo~x,liAi-yi}..|tiA)#|7{-ll0}. 8{0,1}. "Square set union sign (Scott bib)"; call charbeg/'/i(' 164, 13,0,0, p/i,ph — 2pa, 0); cpcn; IftioXi— round u; x-i — %\\ X\ = x-> = r — X\\ V\ '-=■-■ good,0(.5[m,/i]); .5[VhltA = <K V* = V-\'> ^ — V\'> w\i) draw i .. 2.. 2.. 4.. 4.. 5. "Square set intersection sign (Scott gib)"; callcharbcgin('l65,l3, 0, 0, ph9ph -- 2pa, 0); cpcn; Ift jo^i = round u; xi — xj; a;,.--: i5 = r — xj; y2 = goodl0(.5[?n,/i]); .5[yh ?/2] = a; y2 = yu y, = 1/1; itfio draw 1..2..2..4..4..5. "Square reflexive subset sign"; call <;harbc£i/](' 766, 78, 0, 0, ph, pb - 2pa, 0); cpcn; lft|()XG-- round 2.5u; £i'X.v= xi = r z*,; lft io^-i = *<>; toPjoI/2 = /i; 5Il/2, yj] = V\; V2 ■■ t/i=Mgood... .5[m,/i|) —(gooilma); *'i — as; !/-i ■ y*; 1/5 = y*; ti>iu draw 2.. 4.. 4.. 5.. 5.. 3; Ms = \t!> bot jo?/b = 2a — /i; draw 6.. 7. % upper bulb % lower bulb % stem % stroke % stroke % slroke % bar 24i
a: b' ^ - )'■ ■;■•-, • 7 [ ^•••il i a. ^ .••a3«B^ -• 2.. 4* «*>.. f^! \\ b3 \/*^ X 4 ' .it7 » ai 3-f / l 'bB; \ bl / o) n / / ^--'" .'-'' \'\ ~g\ 9 1 l-"5 —. i 1 < , i U2L • ; I I 1 • 2 L i 1 ' D r | I I 1 : i □OJ_ J-- 6^ • \"~4 • -J > • i L2L- L.7U "1 ♦ • / / 2 V \ \ .'" ^ - 1 - ■ *j • • 3 s| r • i 1 1 1 1 | i i i j i i i .'8 n H 244
' jcction sign"; call chHvbcgin{ '170, 8, 0, 0, ph, pd, 0); hpen; x{ ~ x.\ = .5r; rt()x-2 = rti:f:j -=round(r — 1 5u); lfU)X-} — 1ft iXo — round 1.5u; top0l/i = fc -f- oo; botoy.i = — d — oo; V2 = Vj =*= -125|yi, j/.i]; jr, = yo = .12%,, y{\; KJk) 1(1,0} .2(0, -1}; draw 4{—1, 0} .5(0, 1}; cpcn; W\ draw 3; draw 6; Xy = X\\ — X*>\ X<) — 0;| 2 ~ ^2i ^8 = xlO = ^l i" 2/s ™ A [i/i» s/-il; s/io = ' (i/i, !/i]; call - a srfra*v(l, 7, 8, 9, 10, w{ — deltnw, wih —(h + d)/(36u)); call - b s<irr.w(8,ll,10,l2,4,w,— dcltawtu\h-(h-\ d)/{'Mu)). % upper link % lower link % bulbs 0* 2 upper stroke % lower stroke "Dagger mark"; call char/>egin(' 17 |, 8, 0, 0, p/i, pd, 0); cpen; X| = x>i = £3 == S| == goodj(.5r); IftjX;, — round tt; x^ — x± — x^ — x-,; lop,j/i — /i; bot(iyi = —d\ yz — y-> = M» = good,m; j/j = c; Wi draw 1; draw 5; draw 6; lipcn; draw |iui| 1 |u>o|2; draw \w{)\2.. |(round .5[wo, w\]) — «ps#|3 . |u*j|4; vpen; draw ju;i|5. |i<*)|2; draw \iu\ |6 \iuo\2. % bulbs % top stem % bottom stem % bars "Double dagger mark"; call charbcgin{ '172, 8, 0, 0, ph, pd, 0); cpcn; x\ = £2 -- x* = x<j — X7 = x« --— good^.Sr); 1ft 1 x\ — round u; x-> — x> = x-2— x.\\ xq = x.^; xio = 255; *-°Pil/i = ^ boti2/:i — -%i, y8] — top,y(>; bot,y^ = — rf; t/2 = yi = y> ~g°o(ji -5(?yii j/.il; !/? -- y> ^ i/i« — good i .5(^3, y&]; tui <lraw I; draw 3; draw 4; draw 5; draw 6; draw 8; draw 9; draw 10;% bulbs hpen; draw |w, |l |wju|2; draw \w\ |3 |?4)|2; draw |t£>i|6.. |i^)|7; draw |u;||8 . |u;o|7; % stems vpen; draw |u;| |4 |wo|2; draw |u;i|5. |u\)|2; draw |u;||9 |t^)|7; draw \w\\ 10 . . |u>o|7. % bars "Paragraph mark"; call charbcgin{' 173,11, 0, 0, ph, pd, 0); cpen; top,(,y, ~- h\ l)otmiA» — - d\ y.\ —- y,- = yo = J/i; ys ---: in., y* ~ y-» — k«<><i io %i > »*]; lft mx2 = round u; y; =■■- 5[ylf y,\\, x{ — x} — .5r; x.i = Xr> --= *u ----- good l0 5(r -f 2u); x7 = x8 = xfi 4- 27/.; to = r — «; i(;u, ddraw 4.. J{ -1,0}. .2(0, -1} . . 3{ I, 0} . 5, 4 4 .. 4 .. 5 .. 5; % filled bowl draw 6. .4. 4. .9; % left stem and upper serif draw 7. .8. % right stem 245.
< 1 . \ \ 9 * d2 /•■'■' / / i \ a': • ; 1 a3 1 r 1. a. 1 • * I \ f X 2 \ rrr '""— f —WxJ • ix iv • i 1 v 1 t ! b3 j • j ^f i V k 1 \ Y 1 ©-''' • ^* • -■' i: • k 1 / / \ J / 1 t V i ] J • \ / \ • / k r * \ v r' a3 • 4 • ^ S.2 • / i i 1 • L ..j i V. L-l L 1-. ^3- • iP 4— • L V ^..- L 1 2 • • ^_<- **\.x 7 • ? ^ X l" 13 \ > * 1 • t 1 f 246
"At sign"; call charbegin( '174,14, 0, 0, ph, 0, 0); hpen; x{ = x8 = x10 = 5r; x2 — good, 4u; x3 = x.\ = xr> = r — x2; Ifto^j = round tz; x 7=xu = X|2 = 7— xc>; xp, = f^fa;, £7]; top0ys = h + oo; bot0yio = —<*>; W) = yio; yi = goodo .8[ym, y»]; yi = yj = yt» = good(i .2[yio, ys]; y? = %io, ys]; yn = goodli i[yio, &]; yi2--■%!<>, i*l; yi = .%2, yi]; y. = jh/7, yol; call - a darc(l, 2,?z;i); % left part of inner bowl call" b <larc(lf 3, tuft); % right part of inner bowl draw |tui|4.. K#|5{0, -1} . K#|6{ I, 0} . 7{0, 1}; % stem and link call "carc(8, 7, wq); % right part of outer bowl call "d dare(8, 9, W[))\ % left part of outer bowl iuy) draw 10{ 1,0} . 11( . 12). % point "Copyright symbol"; call ch<irbc.gin{' 175,18, 0, 0, ph, pci, 0); new up; up = .5((/i— m) —d); % amount to raise baseline of lowercase c cpen; rt;JX| = round(r — 6u); if topj(topjtop0e 4- 2) > .9[e, m]: top:ly\ = .9[<;, m] 4" "PJ else: y\ = top,top(i* f- 2 4 up; fi; w;,i draw I; % bulb hpen; rt0z2 = rtjz,; yi = yi; x* = x-> = .5(r 4 u); top0y.j = m 4- oo 4- up; u*> draw 2{0,1} . . 3{—1, 0}; % shoulder if xi>i > 1.5u: lft-2X.-i = round(5.75u); else: x.\ = good2 6.5u; fi; yi = y>; bot0y> = — oo 4 up; call * a darc(3, 4, W2); % stroke if wq = w{: xfc=x2; x? -- xr>= xj — x,,; 177 = .5(y:j, y5]; new aa; x^ = aa[x.-„ x7]; ya == (sqrt(i — aaaa))fy/, y>]; else: lftnXo = rt0x2; 2A> = -5c — I --(- up; x 1 = x<>; w~e + up; fi; ti^) draw 5{1, 0} . . 6(. . 7); % point cpen; topiny,s= h +00; bot|0yN = —d — 00; lft i()£i(> --roundu\ rt 10X12 = round(r — u); call circ/c(ll, 12, 13, 14, 15, 16, 17,18, wU)). % enclosing cirlc 247
ad \ \ 6 a "v. n P1" 5*3 • a4 ^ Uri. i ^•a< • 3- a6» i i i 1 1 1 i "V. !x.w • *3L • __-'• [4 v. J al \ 4- i *9 •^ t • br: Lu. • .al ,-• /* / ,* i © 1 # t ~i i i |_i [_ :i 1 j L 1 T Ud3 / • • 1—\ •as -X-, • s >* ~-<i: ""•v. X NA j\ si i • v .1" io ^... v.> fc / ■< \ 248
"Sterling sign"; call c/iarbegm(' 176, 12, 0, 0, ph, 0, 0); hpen; x\ = 7.5u; top,^ = h -f- oo\ rtoZ; = H^ar.j = round(r — i.5u); !/2 = I/J = .75/i; y< = y-> = .5/i; ar.j = 3u — cps\ Xj = 7u + ops; 2fo = x7 ^goodjSu; j/b = .75[^s, y,j; y/ = .25|y8, yL]; bot0t& = ~oo\ x8 — 2.5u; lftoaj — round u; y> = . IA; v\} draw 1{1, 0} . 2{0, -1}; % link cpen; w2 draw 3; % bulb call "a arc(l,6, i^i); % shoulder hpen; u>i draw 6.. 7; % stem tub draw 4 5; % bar call ** b arc(8, 7, t/;,); call " c arc(8, 0, xx\))\ % loop toPi i2/io — round .2/i; bot| cj/12 = —°°\ X\ I = .5[xH, Xi:j] — It; t/| 1 = W)J rto^i;) = round(r — u); yu -- .2/i; call ^d zdraw(9, 10, 11,12,13, w\ Xl wj, —{xn — s8 — 4u)/(.2/i)). % arm "Dollar sign"; call ch<irbcgin{ '177,10, 0, 0, ph + pb, pb, ph slant — .5pu); hpen; top0yi= /i + 00; botoft = ^00; x.\ -— good 1 q .5r; yj = .52/i; 1ft 1 1Z2 = round u; £1 --= r — 2:2; if cics = 0: x{ = «5 = z3; »>, = .5[ys, y;,]; y; = .5[yi, yj); else: if ufo = ti*): Z| = a:-> = Xj; yr, = .5[yr>, y3]; y; = .5[y,, yj); else: x{ -|- .5u — x?> — .5u = x,j; t& = /i/4 — 1; y, = .8/1 + 1; fi; fi; y8 = ite; !/.) = l/7; q>en; Ift.jzs = Iftosfc; rt j*,, == rt0z7; x*s = xi\ T\ = %\\ w.i draw 8; % lower bull) draw 9; % upper bulb hpen; ?a> draw 6{0, --1} . 5{ I, 0}; % lower left stroke draw 7{0, 1} . . 1{ —1, 0}; % upper right stroke call * a sdraw( I, 2, 3, 4, 5, w{ j, w<)} -h/(5Qu)); % middle stroke cpen; xn) = xX\ = xy} topl0ym = h -|- 6; bot,oyM = —b\ u;io draw 10.. 11. % stem 249 .
250
iiput syroext; % possible characters '067, '077, '156, '157, '167 The file script.mf % This script alphabet is based on traditional Chancery style, except % that descenders arc eliminated, and the letters I, J, Q, T have been % modified to accord with modern practice suitable for use with % mathematics. All the letters are drawn with a single pen, whose % dimensions are pw by pwv, rotated to the angle whose tangent is 2. new aa, bb, aan, bbb, spa, .spb, spc; % variables to specify the spen aa = (sqrt 1.25)(pwv pixels \- blacker)) bb = (sqrt 1.25)[pw-pixels + blacker)] aaa = l/aa/aa; bbb = l/bb/bb; spen(aaa -f 4bbb, Aaaa — 4bbb, 4aaa + bbbt 0, 0, 0, 0); no penresct; new cor, corr; % commonly used spacing corrections cor = ph-slant/pu\ if cor > 1: corr = 1; else: corr = cor ; fi; "Script A"; spen; callcharbcgin(*A, 12,0,0, ph, 0,phslant — (3.75 — mi)pu); x\ = 7.25u; yx = h; Xr) = 4.5u; 1/2 = 59/i; xj = 5u; t/, = .27/i; x, = 3.25u; y., = 0; x5 = 2u; ir, = .07/i; 2<j = 8ti; i^j =r .35/i; z7 = lOu; 3/7 = 0; *8 = 3tx; y« = .35/i; draw l{3(x2 — xi), y2 — y\) .. 2{x:) — 3>2) V3 — ife}. - 3{x3 — x2, Vi — Vi) 4( — If °} • • 5(x5 — 3.|, 3(ife — yi)}; % left diagonal draw 1{0, 1} .. 6{x7 — xfc, 1.5(t/7 — Mi)} • 7{1.5(*7 — xo), j/7 — yB>; % right diagonal draw 8..6. % bar 251
a • \ / y *■> a i' ■■ / /MlIM/h 252
"Script B"; spcn; call charbegin("B, 12, micorr, —.5m/cor, ph, 0, mi[.5pii slant — pu, 0]); %i = 3u; j/i = .95/i; x2 = 3.5u; t/2 = A8h] S3 = 3u; 2/j = 0; x.i = 1.75u; y.i = .9/i; x5 = 5.5u; y, = ^; S6 = 8.25tz; % = .74/i; x7 = (sqrt .5)[a>2, *r>]; VJ = (s<lrt 5)[l*> tel; x8 = 10u; us = .3/i; xg = 6.5u; yg = 0; draw l{2(a>2 — *i), W — Vi} •• 2{0, — 1} .. 3{2(x;j — x2), yj — yi}] % stem draw 4{*s - a:,, 3(|fc - y{)} . 5{ I, 0} .. 6{0, -1} .. T{*2 — xq, xji — !Ai} .. 2{ — 1, 0}; % upper bowl draw 7{ t, 0} .. 8{0, —1} .. 9{ —1, 0} .. 3. % lower bowl "Script C"; spen; call charbeg/n("C, 10.5, .5mi-cor, —.2m\cor, ph, 0, n\i[phslant — 2.25pu, .8 ph slant — 1.25pu]); xi = 7.25tt; t/t = .84/i; x2 = 5.5u; y2 =/i; 2:3 = 2u; yj = .52/i; o?4 = 5.5u; y.t = 0: X5 = 8.5u; y.5 = .21/i; draw 1{*2 - x{, 4(y2 - y{)} .. 2{-l, 0} . 3{0, -1} .. 4{1, 0} .. 5{x5 — xA, 4(y5 — y.,)}. % bowl "Script D"; spen; call charbcgi/7("D, 12, micorr, —.6niicor, ph, 0, rni[.6phsiant — pu, 0]); X[ = 3u; %j[ = .95/i; x2 = 3.5u; y2 = .48/i; X3 = 3u; Ui = 0: x.j = l.75u; y,| = .9/i; ar5 = 5.5u; 3/5 = fc; zq = 10u; y& = .55/i; draw 1{2(X2 - *,), xn - yj} .. 2{0, -1} .. 3{2(z3 - x2), yi - \n}\ % stem draw 4{z5 - xh 3(y$ - I/-i)} • • 5{1, 0} .. 6{0, -1} .. 3{-l, 0}. % bowl 25 3
I MI 'HP/I lli I I/!' Tm 254
"Script E"; spen; call charbegin(*E, 10.5, .2micor,—.2micor,p/i,0, mi[ph slant— l.5pu,.8phslant—5pu]); ii = 8u; j/i = .84h; x>2 = 5.5u; y2 = h; x3 = 2.75u; ya = .84/i; 14 = 6tt; y-i = .56h; *5 = 2u; ys = .3/i; xu = 5.5u; ifc = 0; x7 = 8.5u; 1/7 = .12/i; draw l{a>2 — xl( 4(y2 — y»)} .. 2{—1,0} .. 3{0, -1). . 4{1,0>; % upper bowl draw 4{—1,0}.. 5{0, —1}.. 6{1,0} .. 7{a* — *s. 3(irt — S*»)> • % lower bowl "Script F"; spen; call charbegin(~F, 11, micorr, mi(l — .5cor), ph, 0, mi[phslant— pu, .5phsiant + pu]); xi = 1.75u; yi = .86/1; X2 = 9u; y2 = h; x^ = 6.5u; $fc = .59h; x.j = 6.5u; y4 = .27/i; X5 = 4.25u; yj = 0; so = 3u; yo = .07/i; X7 = 5u; y7 = .52/i; x8 = 8u; yg = .52/i; draw I{x2 — xlf 5(y2 — yi)> • • 2{1,0}; % shoulder draw 2{—1,0}..3{0, -1). .4(0, -1). .5{—1,0). . 6{x8 — X5,3(ya — ys)}; % stem draw 7..8. % bar "Script G"; spen; call charbegin( *G, 11.5,0, mi(-.75cor + .5corr), ph, 0, mi(.75phs/ant — 1.5pu,0]); X! = 7.5u; y, = .86/1; *2 = 5.5u; t/2 = /*; x3 = 2.5u; ya = .66/1; x4 = 5.5u; y4 = .23/i; zs = 9u; ys = .63/i; xo = 9.5u; yo = .23A; «7 — 5.5«; yr = 0; xg = 2u; ys = 15A; draw l{xa —xh4(y2— y,)} . 2{—1, 0). .3{0, -1). :4{1,0}..5{0,1}; % upper bowl draw 5{2(x8-x5),yo — V5}..6{0,-l}..7{—1,0}.. 8{x8-X7f3(y8-y;)}. % tail 255
MM Warn rn v 1 / i^i ^ 256
'Script H"; spen; call charbcgin(^ H, 12, micorr, 0, ph, 0, ph slant— (2 — mi)pu)\ X[ = 1.5it; yi = fc; 2:2 = 5u; y2 = .4/i; *3 = 3u; y3 = 0; x.i — 9u; y.\ = It; x3 = 8.5u; 1/5 = .4/i; X(i = J0u; ys = 0; x7 = 3u; 1/7 = .45/i; x$ = 9ti; ys = .45/i; draw 1{5(X2 - xi), yi-y{}.. 2(0, -1} .. 3{—1, 0}; draw 4{2(x-> —xj), y5 — y.i} .. 5(0,-1} .. 6{3(^— x5), j/g — y-,}; draw 7{7ti— x7,. 15/i — 2/7} . .8{xs — 7u,y& — .15/i}. "Script I"; spen; call charbegin( ^1,9, 0,0, ph, 0, phslant— (1 —mi)pu); x{ = 4.5u; yi = 95/i; ^2 = 5u; t/2 = -52/i; Xj = 4.5u; y* = .05/i; x^ = 2u; y4 = h; Xo = 7u; yj = /t; x& = 2u; ife = 0; x-( = 7u; yz = ®i, draw l(2(x2 - xi)f t/2 - yi> . 2(0, -1} .. 3{2(x3 - x2), y3 - y*}; draw 4{x{ — x,u 3{y{ — V\)} . . 1{ 1,0} . 5(x5 — x{t 3(ys — yt)}; draw 6{x:j — a*, 3(y3 — 2A>)} . . 3(1, 0} .. 7(x7 — x3, 3(yz — y3)}. "Script J";spen; call charbcgin(^ J, 10,0,—.5/ni-cor, ph, 0, mi[ph*s/ant — pu,.5phs/a/it]); xi = 6.5u; yi = .95/ij X2 = 7u; yz = 52/i; s3 = 4u; y3 = 0; z.{= 1.521; y4 = .I8/1; £5 = 4u; 3/5 = /i; xe = 8u; y<s = h\ draw l{2(z2 —si),^ —vi}. 2(0,-1}.. 3{- 1,0}.. 4(xt - x3, 3(y., - y,)}; % *lem and tail draw 5{x!-a:5l3(y,- yj)} 1(1,0} Gfo - xh 3(tt» - yi)>. % serif 257 % left vstcm % right stem % bar % stem % upper serif % lower serif
"Script K";spcn; call charbeginf "K, 13,0,0, ph, 0, phslant— (3 —mi)pu)\ Xi = 1.75u; y{ = h; a>2 = 3.5ti; y2 = 31/i; x3 = 2u; t/j = 0; x,j = 9u; J/4 = /i, X5 = 6.5ti; ys = 82/i; x*j = 4.25u; new aa; ^ = aa [x2, xr,]; y^ = aajy2, t/5]; x7 =^ llti; y; = 0; draw iWvi-Zilte-yrt.nOt-iy.^i-l.Qy, draw 4{—1,0}.. 5{a>2 — «s, 1/2 — ys}. • 2; draw 6{x7 — xo, 1.25(t/7 — ia>)} .. 7{ 1.25(x7 — x^). y/ - t^> "Script Lw; spen; call charbcgin^L, 13,0,0, ph, 0,0); X| = 3.75u; t/i = /i; x2 = 2.5u; j/2 = .77/i; x3 = 3.25u; i/j = .26/i; x.i = 2w; y, = 0; X5 = 6u; t/5 = 0; xg = llu; ya = 0; draw 1{—1,0}..2{xj —x2,y;, —y^} 3{x:j —x2,i/) —t/2}..4{—60u,—h}; % stem draw 4{30u,/i}..5{30u, -/*; . .6{30u,/i}. % bar "Script M"; spen; call charbegin(*M, 15,0,0, ph, 0,0); X| = 3.5tz; yi = /i; x2 = 5.5ti; y2 = 27Ai; x;J = 3.25u; yj = 0; x,| = 2u; y.| = .07/i; x5 = 9.25u; y5 = .15/i; *o = 9w; iaj = -95/i; x7 = 13u; y? = 0; draw l{2(x.2-x,),y2 —y,}..2{0, -1). . 3{-l,0}..4{x, — »3P3(iM —tti)>; draw I{x5 — *,, l.25(jfc - yi)} .. 5{ 1.25(x5 — x(), y-, - y»}; draw 5{4u, a; .. 6{—4u, /*;,• draw 6{x7 — x^l.Sfy,— y>)} • 7{3(x; -- x*,),y7 — t*>}. % stem % upper diagonal % lower diagonal % first diagonal % second diagonal % third diagonal % fourth diagonal 259
UJ mwF / / A/ /.'// / / ,4-+ hfi! uMm ILWOI/ y mm 260
"Script N"; spen; call charbegin( " N, 13,0,0,p/i, 0, ph slant— (1 —mi)pu)] x{ = 3.5u; yi = h\ x2 = 5.5,; y2 = .21h\ xj = 3.25u; 2/3 = 0; ^ = 221; y, = .07/i; a:r, = llu; 2/5 = 0; Xg = llu; y<$ = h ; draw 1{2(*2 -*i), ife — l/i> . 2{0,—1>. . 3{—lf0> . .4{s., —S3,3(y, —y3)}; % left stem draw l{x5—aj|f2(y.5--j/l)}. 5(2(2:5 — si),y*> —yi}; % diagonal draw 5{—6ti,/i}..6{6u;/i>. % right stem "Script O"; spen; call charbegin(*0,13, 25micor, — .75/ni-cor, p/i, 0, mi[.75ph-s/ant —pu,0|); a:, = 8u; yi = .94/i; x-2 = 6.5u; yi = h; xj= 2u; yj= .46/i; x., = 6.5u; y,| = 0; zr> = llu; 1/5 = .38/i; X(>, = 8u; yr> = 88/1; *7 = 6 5u; 2/7 = .83/i; draw l{2>2-^,2(y2-yt)}..2{-l,0}..3{0,-l}..4{l;0}..5{0,l}.. 6{-l, 0} .. 7{x7 — a*, 4(y7 - 2&)}. % bowl "Script P'; spen; call charbegin("P, 11, 0, —.5m/cor,ph, 0, jni[.8p/is/an£— pur3phslant]); x{ = 3u; yi = .97/i; X2 = 3.5u; 2/2 = .4/1; £3 == 2u; yj = 0; 2,1 = 1.5u; y., = .95/i; 2:5 = 5.5u; y5 = h ; *o = 9u; yb = .7/i; draw l{2(x2-xi)tV2-iM}..2{0t -1}. . 3{—1,0}; draw 4{s5- *4,4(tft-y4)}..5{l,0}..6{0, -1). . 2{—1,0}. % stem % bowl 261
14444*^- il 11 h i -'11 i ' I/Ml />..)//I/ \ > m WJil JUL 262
''Script Q"; spen; call charbegin{* Q, 15, 0, 0, ph, 0,0); x{ = 8u; y, = .95/i; 7>i - 6.5u; t/2 = fc; x3 = 2u; t/3 = .53h; X\ = 6.5u; t/.i == .15/i; x5 = llu; tfe = .47/i; xb = 8u; tfe = -88/i; 0:7 = 6.5u; y/ = .84/i; x8 = 2.5u; t& = 0; xcj = 7.75u; yj) = 0; zU) = L3u; yio = 0; draw i{*2 - xi, 2(y2 - y{)} . 2{-l, 0} .. 3{0, -1} .. 4{1, 0} .. 5{0,1} . . 6{-1,0}..7{z7-2*, 4(yz-<*)}; draw 5{0;— 1} .. 8{-l20u,— h}; draw 8{60u, h} .9{60u, -h} I0{60u, A/. % howl % link % bar "Script It"; spen; call charbcgin^R, 14, 0,0, ph, 0,0); zi = 3u; yi = .97/i; xi - 3.5u; y2 == .4/i; x3 = 2u; y,^= 0; x.\ = 1.5,; y, = .95/i; j.5 = 5.5u; y5 = h\ As = 9u; yrj = .7/i; x7 = 4.25u; y/ = .4/t; y8 = .O6/1; xe) = 10.5u; 1/9 = 0; (so - ^s)/(yo - ys) = <2{xH—x7)/{ys — yz); x[0 = 12u; yl0 = .O8/1; draw l{2(x.2-x,),y,-yl}.2{0,-l}..3{-L,0}; draw 4{x-,-x1;4(y-)-yl)}..5{l>0}..6{0,-l}..2{-l, O}; draw 7. .8{x8 - x1}y^ — y7}.9{ 1, 0} . 10{xlo — ^j,3(yi0 — yg)}. "Script S"; spen; call charbegin(^ S, 10, 0,—mi(cor — .75corr), ph, 0, mi[phsiant — 1.75pu, 0]); xi — 7.25u; yi = .8/1; % x8 will be defined shortly % stem % bowl % diagonal Xi = 5u; yi = /i; 13 = 2u; yj = .82/i; 1.1 = 5«; y.\ - A8h; *.-, = 8u; yj = .2/i; K5 = 5u; jaj = 0; X7 = 2u; 1/7 = .I8/1; draw l{*2-*il4(y2-y,)}..2{-l>0}..3{0,-l}..4{32u>- 6{-l,0}..7{x7-Ife)3(y7-ya)}. -h). •5{0,- -1} % stroke 263
264
"Script T"; spen; call charbegin(^ T, 13, .Smicor^mi.phj 0, phslant-j- (4mi —l)pu); xi = 2u; yi = M\ x>i = 6.5u; 1/2 = -95/i; xj = llu; y3 = h; x\ = 6u; y4 = .44/i; x5 = 7.5u; Y5 = 0; draw l{6u,/i}..2{60u, -h}. . 3{6u, h}; draw 2{2(x4-z2),y4-^}..4{0, -1). .5(1, O}. "Script U"; spen; call charbcgin^V, 13, .Smicor, 0, pht 0, phslant— (3.5 —mi)pu); xi = 1.5u; yx = .93/i; *2~ 3u; y2 = fy x3 = 4u; y] = .74/i; x4 = 3.5u; y.t = .35/i; *5 = 6u; yj = 0; xe = 8.5u; t& = 33/i; X7 = 8.5u; j/7 = .95/i; x8 = lOu; j/3 = 0; xq = llu; yy = .09/i; draw 1{^2 — *i, 3(y2 — yi)} 2{1,0} 3{x4 — x3) y4 — y3} .. 4{x4 — x3, y4 — to}. . 5{1,0}..6{0, l}..7; % stroke and stem draw 6{0, -1). .8(1,0}.. 9{x9 - x8, 4(y^ - «,)}. % point "Script V"; spen; call charbegin(" V, 12, .8micor,0, ph,0, phslant— (1.5 — jrn)pu); Xj = 1.5u; yx = .95h; x2 = 3.521 ; yi = h; *3 = 7u; y3 = 0; x4 = lOu; y4 = .59/i; x-> = 9.5u; y5 = .97/*: draw 1 (x2 - x,, 2(y2 - Vi)} .. 2{ 1,0} .. 3{0, -1}; draw 3{3(x4 — x3), yx — t/3} .. 4(0,1} .. 5{2(x5 — x4), ys—y*}- % bar % stem % left diagonal % right diagonal 265
'in m m TTT\ u ■■'/ 7 / v 11 in \u^, / / / / j } * i ) . ,• i' i / / / -J i J J T 1 7 r p^Yl / im IM t tttth ttfm i / / / >-■- 'M / / / / mm MM --I ). / / / /,? / /j////^ //>(///://F< Z(MM v^/iVy M ' A 7 r 266
"Script W"; spen; call charbcgin^W, 15,.8micor, 0, ph, 0, ph slant— (1.5 — m/)pu); X\ = 1.5u; xj[ = .95/i; x2 = 3.5u; t/2 = /i; *j = 7u; 2/3 = 0; x.\ = 8.75tx; y.| = .97/i; x5 = llu; y5 = 0; xq = 13u; tAi = .59fc; x7 = 12.5u; V7 — .96/i; draw l{*2-zh2(to — yt)}.2{l, O}. 3(0,-1}; draw 3(x7 — x3, t/y — j/j}. 4{2(x.i — x5), V\ - y$}; draw 4(2(x-, - x.,), </> - t/,} 5(0, -1}; draw 5{3(xci — x:>)} y$ — 2/:>} . .6(0,1} . 7(2(x7 —X(5), y7 - y&}. "Script X"; spen; call charbcgin(~X} 13, 0,0,ph,0,ph s/anfc — (2 — 1.5m/)pu); x, = l.5u; yi = .95/i; x2 = 2.5u; U2 = /i; jcy =5.5u; y.\ = .45/i; s.i = 2.5u; t/i=0; zs — 10m; yi = /&; xr, = lOtx; Mi = 0; x7 = llu; j/7 = .05/i; x8=4u; ys~A5fi] z$ = 7u; 2/i) = -45/i; draw l(x2 —a:,,3(t/2-2/,)}..2(1, O}. .3(0,-1}..4(-l.,0}; % loft stroke draw 5(-1,0}.. 3(0,—1}.. 6(1,0}.. 7(x7-xo,3(t/7 — ^)}; % right stroke draw 8.. 9. % bar "Script Y";spen; call charbcgin("Y, 11.5, .8micor,—.Hnii-cor,ph, 0, mi[pb slant —putApb-slant]); z\ = 2u; j/i = .95/i; x2 = 3.5u; j/2 = /k x3 = 5u; 2/j = .53/i; x4 = 721; ifo = .33/i; zr} = 9.5u; i/5 = .97/t; zu = 9.5u; 2/G = -37/i; x7 = 6.5u; y7 = 0; xa = 4u* j& = . l/i* draw l(i - *,, 3(7//- l/i)} , - 2{ 1, 0} . 3(0, -1} . 4( 1, 0} .. 5(0,1}; % stroke draw 5.. 6(0, — 1} ..7{ —1,0} . .8{xs - x7, 3(t/8 — 2/7)}- % stem and tail % first diagonal % second diagonal % third diagonal % fourth diagonal 267
I I J_J-1-Jlj__I I / 4-77 IT MUM / 268
*'3cript z."7" spen; call charbegin(" Z, 13,0,0, ph, 0, phslant — (2 — /ni)pu); X] = 1.75u; yi = .9/i; #2 = 6u; t/2 = -95/i; £j = iOu; y* = h\ x.x = f).5u; y.i = .5/i; £5 = 2u; y> = 0; '4> = 1u; tM = .05h; x7 = llu; t/7 = Ah) xH = 4.25,; ys = 5/t; x<) = 8.5u; tfy = .5h\ draw l{6u, h } .2{60uf-hi .3{6ufh>; % uPPer bar draw 3{x{ — x:h 2{y.\ — y-»* A{x5 — xh y-> - tfc}.. 5{s* — s,|, 2(y5 — yi)}; % diagonal draw 5{6u, h} . 6{60u, — /i} .. 7{6u,/i}; % lower bar draw 8. .9. % middle bar 269
270
MATHEX CHARACTERDESIGNS The filcmathex. mf % The Computer Modern Math-Extension family of fonts (by D. E. Knuth, 1979). danger = 0; new pt; % one virtual point p t = typcsizc/10] % assumes 10 point specifications % The following subroutines break up the large characters on an Alphatype CRS, % assuming that lOpi equals 10 points. subroutine eighteen : if mode - 2: crsbreak —9ptcf; fi. subroutine twentyfour: if mode = 2: crsbreak (ph + pb —12pt)cf; fi. subroutine thirty: if mode = 2: crsbreak (ph + pb — I2pt)cf; crsbreak (ph + pb — 18pt)-cf; fi. input mat hd 1; % the large delimiters input mathop; % the large operators input mexext; % nonstandard characters (any of the codes % 4017, 4037, 40555'057, 4077, ' 104~'105,'140-'J57, M67, 4176, 4177) texinfo slant, 6pu,3pa,2pu, px, I8pu,2pu, prt; % (The calling tile should supply the remaining texinfo.) The file mathd 1 . mf % Left parentheses (left-right symmetric with right ones) charlist '000, '020, '022, '040, '060, 0; subroutine b/g/p(var code, var units, var minpsy var maxps, var height, var depth): call charbegin(cocic, units, 0, 0, height, depth, 0); new taut) W-iui W-18 = round minps; w jej = round maxps; hpen; x\ = x-j = good/18(r — u ); top.18t/i = round pixels-height] bot^w =1 — round pixels-depth] p* - 5[yi,t/jj; 1ft 49X2 = round u; Ito = Vi", V\ = Wf *o = *i = *i + 1.875( units — 2)n; draw (0. . )|ia»J1 .. |ti>49#|2{0,— 1} .. |w48|3(.. 4). % stroke 271
m m III \*k 1 rrh * mu\ 1 1 >*• / 1 1 1 1 LLL M nTPVittm Mil / 1 1 I 1 I I 1 I' ^l 1 1 11 1 1 It / 1 1 \ 1 1 1 1 1 r 1 2 F • '1 K 1 [ t: j M- i i -U &3 h xi b ' i 272
"12 point left parenthesis"; call biglp{'Q00,7)wo,w{)Q)[2pt). "18 point left parenthesis"; call b/g/p('020, 9,wl0, bold, 0, I8pt); call eighteen. "24 point left parenthesis"; call biglp( '022, 11, ti/|0 + .2de]tatv, bold + dcltaw,ph + pb, 24pt— ph — pb); call twenty/bur. "30 point left parenthesis"; call big/p('040,11.5, w{{) +Adcltaw, bold + 2deJtaw, ph + pb, 30pt - ph — pb); call thirty. subroutine biglp: . free up METRFONT's memory new Wj8, tono; ^08 = round(u/io + .6de/taw); t«t)o = round(bold + 3dcJtaw); "Extensible left parenthesis- top"; call charbcgin{ '060, 12, 0, 0, 0,18pt, 0); varchar '060, 0, ' 100, '102; % extensible left parenthesis hpen; x{ = good<.)8(r — u); top08j/j = 0; lftooafc = round u; xji = round(.5 — 18ptp/xcJs); xo = x, + 1.875(10u); ^ = yu draw (0. . )|tiA)8|i |u*j<>#|2{0, -1). % upper part of stroke "Extensible left parenthesis- bottom"; call cbarbcgin{ '100, 12, 0, 0,0,18pt, 0); hpen; x.\ = good98(r — u); bot<)82/3 =- round(.5 -- 18pt-pixe/s); lfto<jX'2 = round u; 3/2 = 0; x.x = .t.j + 1.875( lOu); j/, = s^; draw |u*)9#|2{0» —1} • |wJ8|3(.. 4). % lower part of stroke "Extensible left parenthesis extension module"; call cbarbcgin{ '102, 12,0,0,0,6pt, 0); varchar 0, 0, 0, '102; % left parenthesis extension modules only hpen; lftcjgXi = round u; j/i = 0 ; £2 = x\] Ui = round(.5 --- 6pt*pt'xe/s); UV)9 draw 1.. 2. % middle part of stroke 273
I III r M 1 X. 1 1 1 1 1 1 1 \\]r\\\\\ h U-LL1 1 r^ 1 1 1 1 1 1 II UN LLLlxWHJ rrrrft tnTn 1 hN vi II II 1 Ml II n,r V 1 1 11 n \M 11 1 1 1 *H j ; J u 274
^5 Right parentheses (left-right symmetric with left ones) charlist '001, '021, '023, '041, '061, 0; subroutine bigrp(var code, var units, var mi/ips, var maxps, var height, var depth): call charbcgin(code} units, 0, 0, height, depth, 0); new mis, w.\<y, w.\$ = round nu'/ips; tajo = round maxps; hpen; X\ = xy} r — x{ = good i8(r — u); top.|Syi = round pixels-height] bot ihJ/j = I— round pixels-depth] yi = .5[xj\, 2/3]; If t,i<j(r — £>) — roundu; 2A) — !/i i yj — W> xo = x.\ — x{ — 1.875( units — 2)u] draw (0.. )|u>.w| 1. . |m,9#|2{0, -1) . [w,8|3(..4). % stroke "12 point right parenthesis"; call bigrp{ '00 I, 7,^, w{) 0,12pt). "18 point right parenthesis"; call bigrp{'021, 9, w{(), bold, 0, 18pt); call eighteen. "24 point right parenthesis"; call bigrp('023, 11, W10-+-. 2 de/taw, bold + deltaw, ph-{- pb, 24pt — ph — pb); call twenty four. "30 point right parenthesis"; call bigrp( '041, 11.5, w{o + .4de/taw, bold + 2dellaw,ph -+- pb, 30pi — ph— pb); call thirty. subroutine bigrp: . free up METAFONT's memory new ii*j8, 1^9; u*)H — round(wio -+- 6deUaw); uxw = round(boJd -(- 3de/taw); "Extensible right parenthesis-top"; call charbegin( 06 1,12, 0, 0, 0,l8pt, 0); varchar '061, 0, '10 1, '103; % extensible right pnrcnthesis hpen; r — x{ = goodcJS(r -- u); top,)8{/| = 0; lft9o(r— x2) =.round U] t/2 = round(.5 -- i8pt pixels)] xo = xx — 1.875(10u); » = Vi; draw(0..)|tM)8|l . . |ttt)9#|2{0, - 1 ). % upper part of stroke "Extensible right parenthesis-bottom"; call charbcgm('IOI,l2,0,0, 0, i8pl, 0); hpen; r — xj = good98(r -- ti); bot<)st/j = round(.5 — 18pt pixels)] lft<)o(^ — 2*2)™ round u; y2 = 0; x.x = *j~ 1.875(10ti); u\ = !/*; draw |tiAW#|2{0,~l}. . [i^)8|3(..4). % lower part of stroke 275
1 h ffl M iffl uu I] n *} T» r I V (I 1 h Jl & =rr-l^, n t\ j ffi I N rl rj 1 r\ I* » i 1 1 1 i ■•■ I '•■'.' » r r r 4 ; V i '*- r— t x\ ff. . fr,^:.-*) 276 —-■ • I k pv L r 1 r F i 1 i 1 4 -1 | ■** «-. 7}
"Extensible right parenthesis extensi n module"; call charbegin(' 103, 12, 0, 0,0,6pt, 0); varchar 0, 0, 0, '103; % right parenthesis extension modules only hpen; lft<)o(r -- x\) = round u; J/t = 0; &i - Si; Ml - round(.5 — Optpixels); Utyj draw 1..2. % middle part of stroke % Left brackets (left-right symmetric with right ones) charlist '002, '024, '042, '062, 0; subroutine b/gJb(var code, var units, var psizc, var height, var depth): call charbcgin(codct units, 0, 0, height, depth, 0); new W|<>; w<\\)— round psizc] cpen; X[ = x\ = good w(r —.75u); z2—-£;* = good m(2.5u); top ,<)!/!= round pixels height; hot io!/j = I — round pixels depth] y\ w.\<) draw 1.. 2. .2. .3. .3. .4. "12 point left bracket"; call big/b('002,6,w,(),0,12pt). "24 point left bracket"; call big/b('024,7,ti;io + 2dcltaivf ph -f- pb, 24pt — ph — pb); call twenty four. "30 point left bracket"; call big]b('042, 7.5, W| - .8dc/ta\v, ph + pb, 30pt — ph — pb); call thirty. subroutine biglb: % free METflFONT's memory now uv)9; uv)t) round(tui - - .ddcltaw)) "Extensible left bracket top"; call cJi,irbc£in('062,8,0,0,0,18p<;, 0); varchar '062, 0, '064, '066; cpen; x\ = good<m(r — .75u); top00?/i=0; x2— good,, 2.5u; yi = tj\\ *i = xi\ !/j = round(.5 — I8ptprxe/s); Win draw 1.. 2.. 2.. 3. "Extensible left bracket-bottom"; <:a1! charbogin{ '0CM, 8, 0, 0, 0,1Spt, 0); varchar 0, 0, '064, '066; cpen; x.\ = goodcM)(r — .75u); bot<,<)t/t *i ="= good<m2.5u; yj = yi; #2 = ^; t/2 = 0; tiA)() draw 2.. 3.. 3.. 4. 277 i/>; m = vw % stroke % extensible left bracket % upper part of stroke % extensible left floor bracket = round(.5 — 18plpixc/.s); % lower part of stroke
\v \ h rrrii nl„' ■ ?■ ■ | rl [I 1 1 1 f 1 1 1 i 1 "T r 1 I 1 161 n r K 1 ULU.-U2LU M rl r 1 N N M E **i 1 J N k 1 F J rl 278 jal 1 ¥ 1 irl [4 -1 1 tl if 1 H Id w 1 M ! 1 MlM1 N rl el
"Extensible left bracket-extension module"; call charbegin{ '066,8, 0,0, 0,6pt, 0); varchar '062, 0, 0, 4066; cpcn; X\ = gootlgg 2.5u; y\ = 0; x*i = Z[\ y-i = round(.5 — 6pt-pixe/s); tUQQ draw 1.. 2. % extensible left ceiling bracket tt£ % middle part of stroke % Right brackets (left-right symmetric with left ones) charlist'003, 4025, 4043, 4063, 0; subroutine bigrb(var code, var units, var psizc, var height, vnr depth): call charbeginlcodc, units, 0y 0y height, depth, 0); new mio; w<w = round psize; cpcn; x{ — xx\ r — xx = good 10(r — .75u); x2 = £:*; r — x2 — good ,0(2.5u); top joJ/i— round pixels-height; bot ioj/j-■= 1 -- round pixels depth; yx = y2; !/3 = !/ti ti;,i<) draw 1..2..2..3..3..4. - % stroke "12 point right bracket"; call />igrb('003,6, wu),0,12pt). "24 point right bracket"; f.allb/grb('025,7,iy,o-|-.2rle/Liw, ph + pb, 24pt — ph - pb); call twentyfour. "30 point right bracket"; call bigrb('043,7.5,u/| — .8de]iaw,ph-f pft, 30pt —ph — pb); call thirty. subroutine bigrb: . n e w ux)o; um)^ — round(tui — .6de/tavv); "Extensible right bracket-top"; call charbcgin{ '063, 8,0,0,0,18pfc, 0); varchar 4063, 0, 4065, 4067; cpen; r — x{ = good90(r — J5u); top90yi = 0; r — x2 = goodew 25w; !/2 = V\; x3 = *i\ 1/3 = round(.5 — ISpt-pixels); tuna draw I..2..2..3. % free METRFONT's memory % extensible right bracket % upper part of stroke "Extensible right bracket—bottom"; call charbegin['065, 8, 0y 0y 0y 18pt, 0); varchar 0, 0, '065/067; cpcn; r — x.\ = good<M)(r — .75u); bot<)<>yi = round(.5 r — x.) = goodc)92.5u; yj yA\ *2 ^3; !/2 = 0; i/*)9 draw 2.. 3.. 3.. 4. % extensible right floor bracket - ISptpixels); % lower part of stroke 279
1 1 1 in ?J \\ s [J (J bj 1 1 9 f?:,gipn"*a 7^ u fci ml> • V * "J t 1 * 1 2] 280
Extensible right bracket-extension module"; call ch<irbcgin{ '067, 8, 0,0;0;6pfc, 0); varchar '063, 0, 0, '067; % extensible right ceiling bracket cpen; r — x\ — good9<j 2.5u; y{ — 0; %2 - xti Vi - round(.5 — dpt-pixcls)] W[){) draw 1..2. % middle part of stroke % Left floor brackets (left-right symmetric with right ones) charlist '004, '026, '044, '064, 0; subroutine big/fb(var code, var units, var psize, var height, var depth): call charbcgin(code, units, 0, 0, height, depth, 0); new wye)] w jo = round psize; cpen; x.\ = good.^r — .75u); x2 = x:i — good in(2.5u); t0P \vW. - round pixels height; bot.jny* = 1— round pixels-depth] U\ w.[i) draw 2 .. 3 .. 3 .. 4. "12 point left floor bracket"; call biglfb( '004, 7,wHh 0, 12pfc). "24 point left floor bracket"; call bigirb( '026, 8, ivH) + 2dc/tavv,ph + pb, 24pt - ph— pb); call twentyfour. "30 point left floor bracket"; call biglfb('044,8.5,^ — .Sdeltaw, ph-{-pbt30pt — ph -- pb)] call thirty. subroutine biglfb: . % free up METRFONT's memory % Right floor brackets (left-right symmetric with left ones) charlist '005, '027, '045, '065, 0; subroutine bigrfb{v<\r code, var units, var psize, var height, var depth): call churbeginfaodc, units, 0, 0, height, depth, 0); new w.\$\ W|Q—- round psize; cpen; r — x\ = good^0(r — .75u); xi — xyy r — x;j = good 10(2.5u); top.10y2= round pixels height] hot loy.j — 1 — round pixels-depth] Ui — V\'i win draw 2.. 3.. 3.. 4. % stroke "12 point right floor bracket"; call b/grfb('005, 7, w]{))0,l2pt). "24 point right floor bracket"; call bigrfb('027,8,^10 + .2de/taw, p/j + pb, 24pt — ph — pb); call twenty four. = y-w % stroke 281
B li LLl 11 i R H s r^r^rrh 1 U r-rta w S tf4 1 f I ? • i ! i » i i \ i i n 9 282 F - |[ 1 i 1 ; i ! f h Jl r V !>' K [ i v ¥ U 1 k If K jl—H j J d 1 i 1 i si ■ j 9 <te si [j M r3
"30 point right floor bracket"; call bigrfb('045, 8.5, wi — .8deltaw, ph -fpb,30pt — ph - pb); call thirty. subroutine bigrfb: . % free METRFONT's memory % Left ceiling brackets (left-right symmetric with right ones) charlist '006, '030, '046, '066, 0; subroutine b/gicb(varcode, var units, var psize, var height, var depth): call charbeginfcodc, units, 0, 0, height, depth, 0); new w.\q] w iq = round psize; epen; X\= good ,0(r —.75u); x2 = x.\ = good4i,(2.5u); top ltjj/i= round p/xo/s hc/ght; bot loy.j = 1 — round pixels-depth, \j\ w.\i) draw 1 . . 2. . 2. . 3. "12 point left ceiling bracket"; call bigkh( '006, 7,w,0, 0, 12pt). "24 point left ceiling bracket"; call biglcb('Q3Qt8tWH) + .2deftatv,ph + pb,24pt -- ph — pb); call twenty four. "30 point left ceiling bracket"; call bigicb('046,8.5;t/>, — .SdelUw, ph + pb,30pt — ph -- pZ?;,- call thirty. subroutine biglcb: . % free METAFONT's memory % Right ceiling brackets (left-right symmetric with left ones) charlist '007, '031., '047, '007, 0; subroutinebigrcb(var code, var units, var psize, var height, var depth): call charbegin(code,units, 0, 0, height, depth, 0); new w |<>; w 19-— round psize; epen; r — x{ = good l0(r —,75u); xz = xy> r — x^ = good l9(2.5u); t°P4!)yi = round pixels-height; bot ioyj = 1 — round pixels-depth; y\ = y^) w.m draw 1.. 2 . . 2 .. 3. % stroke "12 point right ceiling bracket"; call bigrcb{ '007, 7, w[{), 0, Vlpt). "24 point right ceiling bracket"; call bigrcb( '03 1,8, w{u-\- .2dcitavv, ph + pb, 24pt — ph— p b ); call twenty/bur. "30 point right ceiling bracket"; call bigrcb('047,8.5, wi — .8dc/taw, ph + pb, 30pt— ph — pb); call thirty. % stroke 283
1 1 1 1 1 1 1 1 1 1 '•ft 1 III) I 1 1 1 1 l» I 1111111 i>7n i 'm 11111/ /Mil 1 1 1 1 -I 1 1 1 1 M I''21! 1 3 1 1 1 1 1 I * 1 1 1 1 1 1 Mil I.1 /I INI 1 1 11 1 1 1 i L^rn MWm ' i i i i 11 '2 ii ii i * • 1 ii i ii 1 Ml ■ i i i i > ii ii i ii ; II 1 1 1 11 1 1 1 1 1 * 1II 1 1 1 i II > M ■ ill I > II 1 1 1 1 1 ' 1 1 1 1 II 1 1 I 1 1 i 1 1 1 1 1 Mill1 U 1 M II i i i i i ■ ii 11 i 11 H l 111111J .111II iJL e 284
subroutine bigrcb: % free up METRF ONT's memory % Left braces (left-right symmetric with right ones) charlist '010, '032, '050, '070, 0; subroutine big/br(var code, var units, vnr minps, var /naxps,var height,var depth): call charbegin(co<ic, units, 0, 0, height, depth, 0); newtu /X) t/;jo; itf.is — round minps; W|<):= round maxps; hpen; £2 = z3 — *s = afc = g o o d w(.5r); X| — z«2 = £2 — £| = .5(units — 3)u + eps; Zi = X7; top toi/J = round height-pixels; bot 19 y? = 1 — round pixels depth; V\ = MVh V'\ = goo<l(i(.5(yi, y7]); !/i - - «2 = t/j — y-i — u\ ~ Vi = (yi - - yi)/4; draw Ks#|l{3(*2 - *,), ifc - - !/i} • K«>#|2{0, -1} |w,0#|3{0, -I}. . |-^.|8#|/I{3(x.i —x.)),t/i -- j/j}; % upper stem draw |ti7|S*|7{3(x€i - X7>, Mi - yj} >H)#|6{0,1} .|m,o#|r>{0,1} . . |^|S#|4{3(a:1 — x^), yt — ^>}. % lower stem "12 point left brace"; callbig/br( '0 10, 9, v\hW[t 0, I2pt). "2-1 point left brace"; call biglbr( 4032, ll, W|0--|-.2dc/tavv, bold -\-deltaw, ph + p*, 24pt —ph— pb); call twentyfour. "30 point left brace"; callbig/br( 4050, ll.5, win-|--.4dc/taiv, *<?/</ + 2deltnw) ph + pb,30pt— p/* — pb); call thirty. subroutine biglbr: . % free up METRFONT's memory new taig, u*>o; ^>s = roim<l(ti;io + .Oc/e/taw); tUfjg = round( bold + 4deltaw); "Extensible left brace-top"; call charbegin( 4070, 12, 0, 0, 0, 9pfc, 0); varchar 4070, 4074, 4072, 4076; % extensible left brace hpen; xi = X\\ = good00(.5r); x\— xi = 4.5u + cps; topmy\ = 0; rji = .%,, yA\] y* =■ roun<l(.5 — 9pt pixels); draw |w*w#|l{3(x2 -- *i), Vi ~ V\) |uv,<,#|2{0, — 1} . . 3{0, — I}. % top of upper stem "Extensible left brace bottom"; call charbcgin( 4072, 12, 0, 0? 0,9pt, 0); varchar 4070, 0, 4073, 4076; % top left, bottom right combination hpen; Xi\ = xr>— good<H)(.5r); X7 — a^ —4.5u + ePs'> V5 = 0; t/fj = .5|j/5, t/7|; bot<)«)?;7 =-- roun<l(.5 — Spt pixels); draw|tiA)8#|7{3(x6 — x7)/ tjb - Vi) K9#|6{0,1}. . 5{0,1}. % bottom of lower stem 285
Illllllllllll 1 1 1 1 1 lil 1 1 1 1 1 yjztH pu i^ In ft ^ 286
'Extensible left brace-middle"; call charbcgin( 074, 12, 0, 0, 0,l8pt, 0); varchar 0, 0, 0, '066; % left bracket extension modules only hpen; a>2 = % = xj = x5 = good00(.5r); X3 — X) = 4.5- + cps; m = goodfi.25; y> = goodG(.5 — 18pfcpixeis); y, = goodG(.5[t/2, W*]); w> = -5(^, y 1]; yj — yi = y<i — y>; draw |^<)*|2..|tiA)o#|3{0,—1}.. |^.)8#|4{3(x.| — x;i), y.\ — y.j}; % bottom of upper stem draw K9#|6..|tiA)<)#|5{0ll}. . |w)8*|4{3(z.| — X5), yt{ .. y*}. % top of lower stem "Extensible braces—extension module"; call charbcgin{ '07f>, 12, 0,0, 0, 3pt, 0); varchar 0, 0, 0, '076; % brace extension modules only hpen; X\ = x2 = g°°<W-5r); yi^O; xji = round(.5 — 3pipixc/s); ww draw 1.. 2. % middle part of stroke % Right braces (left-right symmetric with left ones) charlist 'Oil, '033, '051, '077, 0; subroutine bigrhr(var code, var units, var minps, var inaxps, var height, var depth): call c/iarbegiJrj(codc, units, 0, 0, height, depth, 0); new u>.i8, W49; tfcis = round minps; w.m— round mnxps; hpen; #2 = £3 = £5 = 3n = good io(-5r); xi — xi = X2 — x.\ = —.5(uniis — 3)u-|- eps; Zi = 2:7; t0P mVi = round beigbtpixe/s; hot 192/7 = 1— round pixels depth] V\ = .5[y.i, yr>] = good(i(.5|y,; y?]); yi — yz = yj — yi = yn — y/ = (yi — y 0/4; draw |w,8#|l{3(*2 —xi)fy2 - ^ • ki<>#|2{0, — 1} . . |mlo#|3{0, — 1} . . |wi8#|4{3(*i — *j), yi — y*}; % upper stem draw |u;.i8#|7{3(ato - *7), ja> - Vi) • K<>#|6{0,1} . K<)#|5{0,1} . . |t<;i8#|4{3(a;.| — x-,), y, — y>}. % lower stem 4412 point right brace"; call bigrbr('011, 9, tc*),ti>i, 0, 12pt). "24 point right brace"; call bigrbr{ '033,11, ww + .2deltaw, bold -f dc/taw, pb + pb, 24pt— ph — pb); call twenty four. "30 point right brace"; call bigrbr( 4051, 11.5, w\o + .4de/tavv, bold + 2dcitavv, ph + pb, 30pt — ph— pb); call thirty. subroutine bigrbr: % free up ME fRFONT's memory 287
1111111111*1 LLLL1 M ri rrrri> iTTl 1 1 1 r 'I 1 1 1 1 1 II ' Mill ; 'II III 1 ' I 1 1 1 1 ] I / / 1 1 1 1 1 1 1 1 1 / ,'j I 1 1 1 | 1 i • Mill 11- ,i 1IIIIII u rr \ N \ 1 N v. \ \ ^1* <--1 u f 1 r i \ 1 i | 6 i * J i f l"* I I I I I 288
new ttf)8)u?o<); ik.w =~-': round(t/;|o {- .OicJtavv); utyj--round( bold | 4de/tavv); "Extensibleright brace top"; call c/iarbcgm('071,12,0, 0, 0, Opt, 0); varchar '071, '075, '073, '076; ^extensible right brace hpcn; xi = x.i -- good<)«)(.5r); x\ - - x-i = — 4.5u -{- cps; top0,,j/i = 0; 2/2 = 5[i/i, y.\]; yj = round(.5 — Opt pixels); draw |itv,s#| t{3(x2 — x,), y2 - y,} . |iwu«)#|2{0l — 1} . . 3{0, - 1 ) . % top of upper stem "Extensible right brace-bottom"; callc/iarbcfiin( '073, 12,0, 0, 0, Opt, 0); varchar '07 1, 0, '072, '076; % top right, bottom left combination hpcn; x$ = Xj = good,^ 5r); xj — X(\ = —4.5a + eps] M> = 0; jAi = •%>> Vi\\ '>otn«)?/7 " round(.5 — Opt pixels); draw |uv)8#|7{3(x(j — x7), y^ — y7} • |w*)9*|6{0f 1} . . 5(0,1}. % bottom of lower stem "Extensible right brace- middle"; call charbegin{ '075, 1 2, 0, 0, 0, 18pt, 0); varchar 0, 0, 0, '067; % right bracket extension modules only hpcn; xi — r« = x:i = x-> ---- goo<lf,cj(.5r); x.\ — X\ — - 4 rm -[- eps; Vi = good(i .25; tAi = goodu(.5 - - 18ptp/xe/s); yx ^ good(i(.5[//2, I/ul); yj = %2, yi]; y/ —y/ = y.i—-a,; draw |t(A)g#|2 .. |u^,#|3{0, — 1} . . h'*)8#|4{3(z,i — £3), y.\ — yj}; % bottom of upper stem draw |tttj«)#|r>..|ti*j«,#|5{0>l}.. h^.)8*|4{3(x,| — Xj), y.\ — 7/5}. % top of lower stem % Left angle brackets (left-right symmetric with right ones) charlist '01 2, '034, '052; subroutine big In b( var code, var units, varps/zc, var height, var depth): callcharbc£in(codc, units, 0, 0, hcighl,dcpthf 0); new w\i)} w u) —roundp.s/zc; cpen; x\ = Xj= good \<)(r — u); lft.io^ = round u; toP/iotf! = round pixels-height; bot.^y.j = 1— round pixels depth] m = good/|0(.5[y,,j/j]); mi9 drawl..2..2..3. % stroke "12 point left angle bracket"; call biglab{ '0 12, 7, W\nt 0, 12pt). "24 point left angle bracket"; call biglab{'034, I I, W\ — deltawtpl\ + pb} 24pt —ph— pb); call twentyfour. 289
, , , i i j i i i i .*n 7 111'1 '1 II N 1 I I 1 1 1 1 Mill ■" / 1 1 II INI II1/III II 1111*111 •/ 11111 .iiiMii 1 § ; i J il it a l I i pun i M 1 II 1 I 1 i ill Ha 290
"30 point left angle bracket"; call big/ab('052,1 1.5, w, - .Hdcltaw9ph + pb,30pt — ph — pb); call thirty. subroutine biglab: % free up METFlFONT's memory % Right angle brackets (left-right symmetric with left ones) charlist 4013, 4035, 4053; subroutine b/grab(varco(/c,var units, var ps/zc, var height, var depth): call charbeg/n^odo.tm/Ls, 0y 0y bright,depth, 0); new ie/,in; w ^ = round psize) cpen; £» — xj; r — Z|=--goodm(r -- u); lftj«>(r -- Xi)-' round u; top jnj/|—: round pixels height) hot n,i/j = 1— round pixels-depth; !/2 = Rood ,,,(.5(1/1,^1]); wi*j drawl . 2.. 2.. 3. % stroke 441% point right angle bracket"; call bigrab('013, 7, w\ih 0, I2pt). "24 point right angle bracket"; call bigrab( t)35, 1 1, W\ — c/eitaw, ph -f pb,24pl— ph -- pb); call twcutyfour. "30 point right angle bracket"; call b/grab('053, 1 1.5, w{ - .8cle/(aw,ph f pb,30pt - ph —pb); call thirty. subroutine bigrab: % Free METAFONT's memory % Vertical lines new tLXyt)) WW -- roun<l(t^io -[- .2<7c/lavv); "Extensible vertical line extension module"; chnrlist 4014, 0; call charbcg/n( 40 14, 6, 0, 0, 0, fipt, 0); varchnr 0, 0, 0, '014; % extensible vcrticnl line hpen; X\ = X/ = good<m .5r; y\ -- 0; \ji — round(.5 — 6pt pixels)) ttX).) draw I . .2. % stem "Extensible double vertical line extension module"; chnrlist '015, 0; call charbeg//i( 4015, LO, 0, 0, 0, lipt, 0); varchar 0, 0, 0, 4015; % extensible double vertical line hpen; X\ - Xi - goodt)<).3r; X\ = x.\ — r — x\\ V\~y\ = 0; u-2 = V\ — round(.5 - Gpt pixels)) t^M) draw 1. .2; draw 3. .4. stems 291
363 ^ A 7\l i /, p K \ ei fU ["f'l 1 171 IM7TT1111 1 riTTTl '7 1 1 1 1 1 1 I' 1 1 1 1 1 1 1 1 1 11 1 1 1 II 1 1 II II V 'II 1 II 1 1 1 II1 1 II 1 1 IIIWIIIIIIIIIIIIIIIIII i u\ 1II11 L 1111111111111 I l fl WhJJ tttlw/rttttttttti 1 1 1 II 1 , 1 II II 1 1 1 1 1 1 1 i i i i i i * j i i i i i i i i i i 1 1 11 ! i tf 11 i i i i i i i i i i 1 i i 11 1 1 / 1 I 1 1 1 1 1 1 I 1 1 I 1 1 1 / / l/./l 11 1 11.1 111 1 U 1 1 11
rj Slashes diarlist'016, '036, '054; subroutine l>igshsh(var code, var units, var psizc, var height, var depth): call charbe£in(codc, units, 0, 0, height, depth, 0); new w.\f)'t w jy = round psizc; lipcn; rt,|»)X| = round(r — u); H'titjar^ = round n; 1°P 19I/1 — round pixels-height; h o t i^ ~-1 — round pixels depth] wig draw 1.2. % diagonal "12 point stash"; cal\bigsk}s!i('0)G,\0 4, towj- .'2dclt,iw, 0, 12pt) "24 point slash"; callbigslash('036, 18.8, wio-f- doltiiwt ph-\~ pbt24pt — ph -- pb;; call twenty four. "30 point slash"; callbi£.s/ash('054,23, wm + l.fSdcila^ph-f pb, 30pt — ph- pb); call thirty. % l'hr big.sfa.shsubroutine is used also to makecxtrabold stashes "Mack triangle"; call ciiarbcgiii( 170, 9, 0, 0, G.25pt, 0,0); hpen; X[ = x2 — goo<l()u; :r* --= r — sj; yj = good(i3 I25ptpixcfs; !/i - Ui -^ l/.i — ?/2 = (*;* — xi)/(sqrt 3); w{) ddraw 1 .. 3, 2 .. 3. % (ill in the triangle "Arrow lor errata lists"; call di;tr/)fgi«( 1 71, 27.2, 0; 0, pi. |- pb, pd f pb, 0); vpen; x>> —- good().05r; rt-,o;i --- x{) -- round(r — a); ?Aj — yi ------ Vi — T/i ^= Vh — V\ i -^ Vvi = goodloa; new myy, u>,<> -- 2w-,, top<myu — k \-b) I>oI<v.)1/h — —d —6; z?i = 0; X|2 = .lr; x^ = .2r; zM = .55r; draw |u*|I 1.. 12 .. |n*#|12 .. |ti*o#|13 .. 13.. 14.. |ta)<)#| 14 .. |u*;#|2 ..2.1; % main arrow hpen; rtiXH — .r0; *-> —■ *s == ^ ■— :r* =■-■ 3n •[- r;ps; z.j — X-\ — 'A\ = *7j y.j — m> = i/i — y* — y-i — j/i =-~:!// — yi = .24/* + ^p^; rpen#; ?/;-, -f- tuA draw (5 . . )8 .. 3(.. 6); % erase excels at lower ri^ht hpen; draw (|ti>j|5.. )8 .. |t^,|3(. . 6); % lower point rpen#; «;-, | u>.j draw (!).. )8 .. 4(.. 7); % erase excels at. upper right hpen; draw (|titt|5 .. )8 .. |u<)|4(.. 7). % upper point 293
t>63 1 fa 1 \**\[ ^J M II riii 1 WII z 1 m y ■ i i 11 [ i i 1 1 1 III*! 1 I I I 1 \*r4 \ r ■ k»\J n ff *> TT\ A\ A 1
% Parts for extensible horizontal brakes to match vertical ones new ruicht, txX)8, tugg; ruleht - .5[pwi/, pwiii] + 4(pwii — p w i); u*)8 — round(ty|o + .Qdeltaw)] UA)<) = round( bold -f* 4dcJtaw); % "Extensible downwards brace- left"; call charbegin(' 172,4.5pt/pu, 0, 0, ruleht,0,0); v p e n ; lftysXi = 0 ; x2 = r + I; botooj/2 =0; yi = y2 — 4.5ti— eps; draw |ua)8#|1{z2 — x{, 3(y2 — yj)} .. |tt*)<)#|2{ 1,0 }. "Extensible downwards brace-right/4; call chcirbegin{' 173, 4.5pfc/pu, 0,0, ruleht, 0, 0); vpen; rt<)8Zi =r + 1; z-2 = 0; botcji)y2— 0; ~Ui~ 4.5u — eps; draw|tiA)8#|l{^ — xh3(y2 — y,)}. |ru)9#|2{ —1, O}. "Extensible upwards brace-left.44; call charbegin( M74, 4.5pt/pii, 0, 0, ruleht,0,0); vpen; lftcXsX| = 0; Xi - r + 1 ; bot.,oy2= 0; yi = y2 + 4.5u -j- eps; draw It/*)**)!{*2 — :r,,3(y2 -- yi)} . |u*jo#|2{lf0}. "Extensible upwards brace right"; call charbcg/n( 175, 4.5pt/pu, 0, 0, ruleht,0, 0); vpen; rtgsZi = r -\- 1 ; x2 = 0; botyc,y2 =0; y\ = y2 + 4.5ti + eps; draw |w>)8*|l{^ — *i, 3(y2 — y,)} ju^w,#|2{ —1,0>. % height of extension rule corresponds to rule height % point % point % point point The file mathop. mf % Square union signs charlist' 106, 4107; subroutine bigsqun(varcodc, var units, var size, var depth): call charbcgin(code, units, 0, 0,0,depth, 0); new w.\<y, mjo = round size; epen; lft mXi = round u; rr2 —£|j x.l = x^ - r — X\; top,wyi = 0; bot.|oy2 = 1 — round depth pixels; 1/2 y<\\ yr> v\; size draw 2.. 4; draw 1.. 2; draw 4..5. % bar % stems 4412 point square union sign"; call bigsqun( '106,15, wi, lOpfc), 295
1 1 1 i r 1 1 11 1 1 1 \\\\\\\m\ Ml' /I 1 r n j * i i i i M i i i i i i * 11 i i i i I 1 1 t 1 1 i /Mill —i 1 I LLd tl: L-( ; i r » > 4 • J 1 I i I 1 s y 7 / / i T" r T | si l2 Hi L'5VJ ' 1 rl 1 K • -1 1 1 1 II 1 II II II II f li m M m rl Pi 1 1 f H ^tiku^ai^ «todita 1 1 j 1 1 1 li.--" d «wji MM WiiTlllTl hv^H III/ , 11 1 1 1 1 1 1 1 1 h \\\ /■ / V\ 296
"18 point square union sign"; call bigsqunC 107, 20, wj + do/taw, I4pt); call eighteen. subroutine bigsqun : . % free up METAFONT's memory % Contoiir integral signs charlist M10, Mil; subroutine bigoint(var code, var units, var keyps, var maxps, var dotps, var height, var depth, var kerncorr): call charbegin(code, units, 0, 0, height, depth, kerncorr); new W'is>w 19; w.\h = round maxps; w.\<) = round dotps; hpen; rt wX{ = rt0z2 -- round(r — u ); y{ = y2 = J/j— 75w,l9; lft |<)Z9 = lft()X8 — round u; y* = W) = Vi + .75mio; £j r — 3u; a:; = 3u; top0yj = round pixels height; botoj/7 = 1 — round pixels depth; 25 = good l8.5r; ^ = .5[j/j, j/7]; x.x — xs + .3(r — 10u); y, = y-, + .3(y;, — t^); 3s = Xj — .3(r — lOu); yb = !/5 — -3(y, — yz); cpcn; to.i<j draw l; % upper bulb draw 9; % lower bulb hpcn; draw N|2{0, 1} . K#|3{— I, 0} . . \keyps\4{x« -- xA% y(i — y,} |u/,8#|5 . |/ceyps|6{zfe — s.,, Mi — yi}-|tn,#|7{—1,0}..8{0,1>; % stem £10 = good0.75r; x5 = I>[z\0, x{{}; yu, = yu = y$; tuo draw 10{0,i} . . 11{0, — 1} . J0{0, I }. % bowl "12 point contour integral sign"; call higointC 110, 12, ti; 1,102, bold, I0pt/9,10pt,3.5pu). "24 point contour integral sign"; call bigoint( Mil, 18, m^ bold + 2dcitaw,tai, ph -f pb —§pt, 24pt — ph -- pb — $pt,8pu); call twentyfour. subroutine bigoint: . % free up METAFONT\s memory % Circle-dot operators chartist.'112, 113; subroutine bigodot(var code, var units, var size, vardotsize, var depth): call chnrbcgin(code, units, 0, 0, 0, depth, 0); new W\\); to.to*— round size; cpcn; lft.|()£(s = round u; top V)yH = 0; Xi = r — .T(>; l>ot io2/.| = 1 -round depth pixels; call circlc(l, 2,3, 4,5, 6,7,8, size); % circle X9 = .5[xg, ^2]; Vn = .5[y8, yi]; dotsizc draw 9. % dot 4412 point circle-dot operator"; call bigodot('112,20,wh bold + 4de/taw,10pt). 297
R«yjii H fflw* 298
18 point circle-dot operator"; call bigodot{'113, 27.2, w:i + deltaw, bold + 6dc/taw, 14pt); call eigh teen. subroutine higodot: . free METflFONT's memory % Circle-plus operators charlist '114, '115; subroutine bigoplus(var code, var units, var size, var depth): call charbegin(code, units, 0, 0, 0, depth, 0); new w.\c)', w,\<) = round size; cpen; Ift \ux<\— round u; top [0ys~ 0; a>2 = r — x^; bot mt/-i call circle{\, 2, 3, 4,5,6,7,8, size); W/\<) draw 2..6; draw 4..8. "12 point circle-plus operator"; call *bigoplu$('ll4> 20> tflhlOpt). "18 point circle-plus operator"; call bigophis('115,27.2, w:i + deltaw, 14pt); call eighteen. subroutine bigoplus: . free up METflFONT's memory % Circle-times operators charlist '116, '117; subroutine bigotimes(var code, var units, var size, var depth): call charhcgin[code, units, 0, 0,0, depth, 0); new u/.iq; taw— round size; cpen; lft.m^—- round u, top ,0t& = 0; x2 = r — xu; bot ioS/i call circ/e(l, 2, 3, 4, 5,6,7,8,size); w,\t) draw 1 . . 5; draw 3.. 7. "12 point circle-times operator"; call bigotimes{'116, 20, w{,l0pt). "18 point circle-times operator"; call higotimesC117» 27-2' w* + de/taw,i4pt); call eighteen. subroutine bigotimes: . free up METRFONT's memory 1 -round depth pixels; % circle % plus 1-round depth pixels', % circle % times 200
Vl'v^Ol I il L-L-I A l|JIII(ll|lli1llr>cki|l 20 slTrTTrT iTn-Y-i-.- *i 2A ■ v ' I 1 1 1 1 1 1 1 r i*- \ x VM r i- ^ Ll \ sLLI 1 1 II 111 II 11 II i^kj a2 b2 5*/ Al.^J.^ ,JL^ 300
botGj/20 = bot ,8y2 ti fh — Vu X8 — X2H) % Summation signs charlist '120, M30; subroutine b/gsum(varcodc, var an/fs, varmi/ips, varm;ixp.s,var serif, vnr depth): call charbcgin(code, units, 0, 0, 0, depth, 0); new ti; ih, mii>; w.i8= round minps-aspect; w j<)~ round maxps aspect, hpen; Ifto&iis — round u; rtox^s = r — u : x«27 = good0(i>28 — (r — 2u)/ll); new ss: ss = I Aaspectserif u -{• eps; if ss + Wu > .25depth pixels: new ss; ss ~.25dcpth-pixels — tx*> + eps; fi; vpen; top.wy2 i = top(iyi = 0; y2-> = [fc t; un = i/2o; i/28 = v-27 — ss; b o * io2/-l =r-" bot(jt/i) —- I — round(dcpt/i-p/xe/s); toPalAi = top my ,; yz = !A>; Ms = !/7 + SSJ *2 I = 3520 " X.\ = ^J ^2r> = X-tf — Xr> = £?; call 'a arm(26,27,28); call "b arm(6; 7,8); ?/;i.s draw 24. . 25; w ^ draw 4. 5; if ucs-- 0: draw 5.. 8; tu,\H draw 25.. 28; else: i f Wu y£ w.\: draw |iU|<)|5 |tx^>|8; draw |?i;.|S|25.. 1^128; else: draw 5. 8; w.\h draw 25.. 28; fi; fi; new w.w, w,\<y, w \h = round winps, w |i> = round maxps; hpen; irt,|82| = ltt.\\)Xu — Ifto^i; *> = Zi; tfm .5[x0, x,,]; X|(i =-round(?x + j1, (r -- 2?i)); 1ft i<)*r2 = lFt0^ir>; •ft i<)»)«i = ^k>; rt «)35?)n = rt'i8^i i; rtW£|:i = rtisZHl }/lo = -SlvD.t/ul; j/| i =yl(i--= .5[yi,?j*)]; yr2 = yr>; yu = yi i = yi; new aa,bb; Ift i«xr, =-aa[lft i*X|,xk>J; yr> = aa\y\, yio]; lfl,sx,r, = bfa[»), x,,]; y,r> = bb[jA), tjii]; % upper diagonal 15; % erase excess at upper left corner 15; % sharpen upper left corner . 1 1; 10; 11; % upper arm and serif % lower armandseriT % thicken bars of arms % thicken bars of arms % thicken lower serif % thicken upper serif % thicken bars of arms w.\\) draw 13. . 12; lpcn#; tu.-io draw I . hpen; w.\$ draw 1. . rpen#; u>.|c) draw IO. Ipcn#; mio draw 9.. hpen; w.\u draw 9.. draw 14.. 11. % erase excess at right % erase excess at left % lower diagonal % sharpen middle corner "12 point summation sign"; call bigsum('120, 19, w\otm,ucs,l0pt). "18 point summation sign"; call bigsum('130, 26, W\o + deltaw, bold + Adeltaw, 1.8 *ucs,14pt); call eighteen. subroutine bigsxim: % free up METAFONT's memory 301
Mi N in If J 1 1 bb \ \\ 1 p* ii I Til i M*n [_l_p 1111111 p [ill r i r 1 I J F 1 I J r 1 y \ [ J f 1 I j Wr" A t 1 r j tet 9 14 ±3> &dt.*z*S 302
to Product signs charlist '121, '131; subroutine higprod(var code, var units, var minps, var maxps, var serif, var ss, var depth): call charbegin(code, units, 0, 0,0, depth, 0); new w.\Sj ttf/to; WMs^ round minps; w^j = round maxps; epen; Ift.iH^i = round u; X;) — x\ = rouiuI(scrif ti+ eps); top.,8yi =0; U3 - Vi — ss; y,0 = y,; x2 = il^lki'^]]; V2 = Mj/iiih/i.iflll; bot.isj^j = 1 — roundfdeptii-pixe/s); i/b + yi = M> + 2/2 = y-i + m\ m = *i; xs = ^2; ** = ^; 39 = 210; X4 + X9 = x5-f x8 = Z0 + X7; y.t = ia>; m> = y&; Mi = w> Ha = yi; !/i2 = vi> yw\ = yy, yi i = yi; y»5 = mj; yic = m>; Y17 = 1/7; y\n = yn; yi<> = m>; y2o = yio; r = £11 -f**l s X\2 +X-2 = £|:i + X\ = X!.|+ X.| = X\$ + £5 = W48 ddraw 1(1, 0} .. 2.. 3(0,-1} .. 4(0, —1} .. 5 . .6{—1, 0}, 10 .10 .. 10{0, —1} .. 9(0, —1} . . 8 .. 7(1, 0}; % left stem and serifs ddraw 11{—1,0}. . 12.. 13(0,—1}..14(0,-1}..15..16(1, 0}, 20.. 20..20(0,-1}..19(0,-1}..18..17(—1,0}; % right stem and serifs draw 10.. 20. % bar "12 point product sign"; call bigprod( '121, 17, wio, bold + deltaw, ucs, s, lOpt). "18 point product, sign"; call bigprod( '131, 23, wU) + deltaw, bold +5dc/taw, 1.8 * ucs, 1.8s, 14pt); call eighteen. subroutine bigprod: . % free up METfiFONT's memory 303
n 1 1 "T T"l § N ~i '4 lL 1 11 • « L W LI n i' 11111 n 111in 11 M 11111111 y 111r11 1 1 1 '* 1 1 m 1 ■ 1 M MINIMI. 1 1 1 M 1 11 L 1 • I • 1 1 1 ;5h * 1 r 1 t J FA 1*1 n 4 :• J |] I 1 1 1 1 1 1 1 1 ': * ■} ■ l 2 • L I ft r" r 1 l. i i »1 H ■j * » j j 304
, o Integral signs charlist' 122, ' 132; subroutine bigin£(var code, var units, var keyps, var maxps, , var dotps, var height, var depth, var kerncorr): call charbcgin(code, units, 0, 0, height, depth, kerncorr); new wis, w-\<h W'i8 = round maxps; i^u) = round dotps; hpen; rt ,9xi = rt0^ = round(r — u); V\ = xji — yj — .75w4<); Iftio^x) = lfto^H = round u; «s = W) = !/? + -75u/,|c); Xj = r — 3u; z7 = 3u; toPol/j^ round pixels height; bot()y7 = l— round pixels-depth] x:> = good,,, .5r; y-, _ .5[t/j, y?]; x.i = 2:5 + .3(r -- lOu); i/, = 1/3-f 3(y.j — yz); zo = xs — .3(r — 10u); y* = y-, — .3(yj — yz); epen; xi7.|o draw I; % upper bulb draw 9; % lower bulb hpen; draw |tt*)|2{0f 1} |u\)#|3{ — 1, 0} . |Jccyps|4{x<i — x.h y^ — y,} . |w.,8#|5 .. \keyps\G{xe .. x i, yb - Vi} |u*,#|7{-l, 0} .. 8{0,1}. % stem "12 point integral sign"; call bigint{ M22, 12, W\tw2t bold, iOpt/9,10pt,3.5pu). "24 point, integral sign"; call bigint('132, 18, w2, bold + 2dcltaw, w:h ph + pb —oPfc' 24pt — ph — pb— |jpt,8pu); call twentyfour. subroutine bigint: . % free up METflFONT's memory % Set union signs charlist' 123, ' 133; subroutine b/gun(var code, var units, var size, var depth): call charbcgin(code, units, 0, 0, 0, depth, 0); new w.\i)m, w |<) = round size; cpen; 1ft 19X1= round u; x-i - x\\ x.j = r — xyt x<\ - £5 = r — Xi; toPi<jyi = 0; bot4oy3 = 1 — round depth pixels] call qcirc(3, 6, 2, size); call qcirc(3, 7, 4, size); size draw 1.. 2; draw 4.. 5. "12 point set union sign"; call bigun( M23, 15, wh10pt). "18 point set union sign"; call bigun( '133, 20,u>j + dc/taw,14pt); call eighteen. subroutine bigun: . % free up METAFONT's memory % cup % stems 305
\-r A T v\H \-L / 1 1 1 1 1 M 1 K UJ vl ri N H H H IK i " -flffftft^ Nt m E"' 1* 1 FM [ 1 Itlllllllllrll 1 \ 1 i 1 1 i 1 1 1 1 i r- I 1 El it j i i i i i i 1 ft if- fi r ri ll M 1J ri bl Id h\ N^gg 1 1 I 1 1 1 1 1 1 1 1 1 1 1 1 1 r 1 1 1 [ 1 1 II 1 1 1 1 1 1 II 1 1 f 1 1 M A HI 1 M Pi ^-j L—^ yi I 1 1 . fN r 1 f t*i ? w pi 1 ' ' ,1 Sp ' if 306
% Set intersection signs chartist ' 124, '134; subroutine bigin(var code, var units, var size, var depth): call charbegin(code, units, 0, 0, 0, depth, 0); new w,\c)\ tt/4«j = round size; cpen; Ift^gXi = round u; x>i = x\\ X3 = r — X3; x\ = X5 = r — Xi; t°P49yj = 0; bot.ioVi = 1 — round depth-pixels; 1/2 = vi = §[vi,t/j]; #> = 1/1; call qcirc(3,6, 2, size); call qcirc(3, 7; 4, size); size draw 1. .2; draw 4. .5. "12 point set intersection sign"; call bigin('124,15,t0|ylOpt). "18 point set intersection sign"; call bigin( '134,20, wj + c/citaw, 14pi); call eighteen. subroutine bigin: . % free up METAFONT's memory % Multiset union signs chartist 125, 135; subroutine bigrnim(var code, var units, var size, var depth): call charbcgin(code, units, 0, 0, 0, depth, 0); new W\$; w.\o = round size; cpen; Ift.tyXi = round u; x% = x\\ X3 = r — X3; x4 = X5 top ,9yi = 0; bot.joyj = 1 — round depth-pixels; Vi = Vi = 3 ll/i, l/3l; Vr> = Vi\ call qcirc(3, 6, 2, size); call qcirc(3, 7, 4, size); size draw 1.. 2; draw 4.. 5; 1/8 = Us — -47ll/ii yj]; *8 = r — 2*j = X\ + 1.75sizc — eps; *io = *i I = x:); .5[yi0, yi 1] = y&; y\ 1 — yio = *j — *&; draw 8.. 9; draw 10.. 11. "12 point multiset union sign"; call bigmuii('125,15,1^, lOpt). "18 point multiset union sign"; call bigmun('135, 20, w-j deltaw, 14pfc); call eighteen. subroutine bigmun: . % free up METAFONT's memory % cap % stems r — x\\ % cup % stems % enclosed plus sign 307
Mil 1 11 13 4 1 1 1 IIIHIIImIIIIIII —m 1 II 1 1 I I 1 1 1 LI 1 r \ 1 1 II 1 1 1 1 *^1 LLA VI II 1 II 1 ml t j 1 1 \ \ 1 1 1 1 1 1 1 1 I 1 1 / J \ \ 308
% Lattice infimum (logical AND) signs charlist '126, '136; subroutine big/i)eet(var code, var units, var size, var depth): call charbegin(code, units, 0, 0, 0, depth, 0); new Ww] w.\€) = round size; cpen; lft^oxj = round u; £3 = r — xyf x$ = r — x\\ t°P49!/i = 0; bot 192/3 = 1— round depth-pixels — o; s/5 = yi; size draw 1.. 3; draw 3.. 5. % diagonals "12 point lattice meet sign"; call bigmeet('126, 15, W|,10pt). "18 point lattice meet sign"; call bigmcetC 136, 20, w3 + deitaw, 14pt); call eighteen. subroutine bigmeet: . free up METftFONT's memory % Lattice supremum (logical OR) signs charlist '127, '137; subroutine bigjoin(var code, var units, var size, var depth): call charbegin(code, units, 0, 0, 0, depth, 0); new 1049; w.\$ = round size; epen; Ift^o^i = round u; X3 = r — xy, x$ = r — xyt top49j/3 = o; bot49yi = 1 — round depth-pixels; ys = 1/1; size draw 1.. 3; draw 3.. 5. % diagonals "12 point lattice join sign"; call bi&/oii)('127,15, u/i,10pt). "18 point lattice join sign"; call bigjoin( '137,20, m -f dcltaw, I4pt); call eighteen. subroutine bigjoin: . free up METftFONT's memory 309
310
<v. /j Square root signs charlist 4160, M61, M62, M63, M64, 0; subroutine bigrooi(var code, var units, var height, var depth): call charbegin(code, units, 0, 0, height, depth, 0); hpen; X\ = goodl0(^r); x% = r + 1 ; botjot/i = 1 — round depth-pixels; topl()«2 = 0; V3 = V5 = V7 = goodG(.5[t/lly2]); y.\ = W> = V\\ x7 = 1.5[^2f Xi]; lft10x7 = lft2x;j; rt2X;j = rt()x5; IftioXi = lft2x4; rt.2x4 = rt0a%; x8 = xt— u ; new aa; x8 = <ia[x5, x.2]; *y& = aaftfc, y2]; hpen; tt>2 draw 3.. 4; % left diagonal Wio draw 7.. 4; ti*) draw 5.. 6; % sharpen the corners lpcn#; ti>2 draw 8.. 5; % erase excess at upper left hpen; undraw 8.. 5; % serif rpen#; w2 draw 1..2; % erase excess at lower right hpen; W{o draw 1.. 2. % right diagonal 4412 point radical sign"; call bigroot( 160, 18,0,12pt). "18 point radical sign"; call bigroot( M61, 18,0,18pt); call eighteen. "24 point radical sign"; call bigroot(' 162, 18, ph + pb, 24pt — ph — pb); call twentyfour. "30 point radical sign"; call bigroot(' 163,18, ph -f- pb, 30pt— ph — pb); call thirty. subroutine bigroot: free up METfiFONT's memory 311
lilt ""■" 7. •if ^"-" / \ d 19 3 3? 1 o T*ttl 312
"Extensible radical sign-bottom"; call charbegznC 164,19,0, 0,0,18pt, 0); varchar ' 166, 0, '164, '166; % extensible radical sign hpen; x{ = x2 = goodm(r — 6u); y± = 0; botioj/i = round(.5 — 18pfcpixe/s); «3 = V5 = w = goodK(.l[y2, t/i]); y\ = ite = yu x7 = 3u; 1ft 10X7 = lft2X3; rt2X3 = rtoxs; lftio^i = lft2X4; rt2^4 = rto^o; xg = xi — u\ new aa\ x& = aa[x5,x2]; 1/8= aa[t£,/i + &); hpen; ti>2 draw 3.. 4; % left diagonal wio draw 7.. 4; tub draw 5.. 6; % sharpen the corners lpen#; t^ draw 8.. 5; % erase excess at upper left hpen; Wq draw 8.. 5; % serif rpen#; ti>2 draw 1 . .2; % erase excess at lower right hpen; ww draw 1..2. % right diagonal "Extensible radical sign-top"; call charbegin('166, 19, 0, 0, 0, 6pt, 0); cpen; x{ = x^ = goodl0(r — 6ti); x3 = r + 1 t/i = yj = 0; t/2 = round(.5 — 6ptpixeis); ttflO draw 3.. 1.. 1.. 2. % link and stem "Extensible radical sign-extension module"; call charbegin( '165, 19, 0, 0, 0, 6pt, 0); cpen; xk = xx = goodl0(r — 6u); y{ =0; y2 = round(.5 — 6ptpixeis); toio draw 1.. 2. % stem The file mexext . mf % Extrabold slashes charlist '017, '037; "12 point extrabold slash"; call bigs/ash('017,10.4, bold +&deltaw,0t I2pt). "24 point extrabold slash"; call bigslash{ '037,18.8, bold + lOde/taw, ph + pb, 24pt call twentyfour. ph — pb); 313
h. ^4™ i sum m 314
% Left pretzels (left-right symmetric with respect to right ones) "Extensible left pretzel-extension module"; call charbegin{'056,17, 0, 0, 0, rfpt, 0); varchar '144, 0, '146, '056; % the left pretzel hpen; Xys = goodmu; X3 = X[2 = 3.5u; X2 = good106u; x\ - x4 = xq = 8.521; zn = £5 = good,, llu; xi = 13.5u; x& = xw = good1016u; yi = 10 = «s = yu = 0; 1/4 = — ^-p'-pi™'*; 1/7 = Ye -f^pt-pixefa; y2 = Vtt = .5[ift, yi2]i !/5 = M* = Vi2 —1/14 = round(.5 —^ptpixeis); xg = llu; y& = — $pt pixels; X\o = 6u; y10 = yi2 + fgP* -pixels] wto draw 1{sg — 27, Ms —1/7} •• 2{0, — 1}; % right of upper left strand rpen#; u ddraw 3.. 4,1.. 4; % erase part covered by upper middle strand hpen; ww draw 4{xA — x^ty{ — yj} .. 5{0,— 1}; % left of lower right strand lpen#; u ddraw 6.. 7,6 .. 4; % erase part covered by lower middle strand hpen; wio draw 3.. 4; % left of upper middle strand draw 6.. 7{x7 — 26,1/7 — !*>} . .8(0,1}; % right of lower middle/upper right strand draw 1..9; % right of upper middle strand rpcn#; u ddraw 4{x4 — x[0, y4 — yio} 11{0,1}, 9.. 11; % erase part covered by upper right strand hpen; w\u draw 10.. 4{x/t — Xio, Y4— Vio}.- H{0,1}; % left of upper right/lower middle strand lpen#; u ddraw 2(0, -1). . 6{xg — xt,ya — yi}, 2.. 10; % erase part covered by lower left strand hpen; w10 draw 12{x3 — x,,, t/3 — y4} . . 13{0,1}. .3{zio — xyi, yio — Vn}\ % left of lower left/upper left strand draw 2(0,—1}.. 6{xg— xittfy — y\}\ % right of lower left strand draw 7{x7 —X9, j/7 —yj}.. 14{0, -1). % right of upper middle/lower right strand "Extensible left pretzel-top"; call charbcgin{' 144,17, 0,0,0, ^pt, 0); hpen; x\ = 3.521; y{ = y5 = y$ = y& = round(.5 — 29Qpt pixels); X2 = good10w; y2 = i[iA,yi]; 3:3 = -5[xi,x2]; t/J W goode ° ; X4 = 6u; Y4 = ys + $pt pixels; x$ = 8.5u; x& = x7 = llu; x& = good10 16u; Wio draw l{x4 — s5,yi —i/5} . 2{0,1} .. 3(1,0} .. 4{x5 — x.l,y$ — y4}.-5; % end piece draw 5{x5 —x.j,y4 — y^} . .6(0,—1}; % bottom of twist draw 4{x5 —X4,y.i —yj}-- 7(1,0}.. 8(0, -1). % top of twist 315
jfflJfjMilfll IH 11 \m\\ 11 \*&A \\\\%\ 316
''Extensible left pretzel-bottom"; call charbegin{' 146,17,0, 0,0,^pt, 0); hpen; x{ = 3.5u; y{ = y5 = ja> = y* = 0; *2 = good10u; y2 = i(Mi, yi]; x3 = .5[xi,x2]; yj t/7 good6(5 — 2gpt pixels); x4 = 6u; y4 = ys — ^ptpixels; xr> = 8.5u; xe = X7 = llu; xg = good10 16u; w[0 draw l{x4 — x5, y4 — y5}. 2{0, —1} .. 3{1,0} . . 4{x5 — x4, Y5 — V\} •. 5; % end piece draw 5{x5 — x4,y4 — y$} ..6{0,1}; % top of twist draw 4{x5 — x4,y4 — ys} .. 7(1, 0} . .8(0,1}. % bottom of twist % Right pretzels (left-right symmetric with respect to left ones) "Extensible right pretzel-extension module"; call charbcgin{ '057,17, 0,0, 0, f pfc, 0); varchar '145, 0, '147, '057; % the right pretzel hpen; r — X\3 = good10u; r — X3 = r — xi2 = 3.5u; r — x-2 = goodH)6u; x{ = x4 = x<j = r — 8.5u; Xj j = xs = r — good10 llu; r — x-j = 13.5u; xg = xi4 = r — good,, 16ti; Vi =yj == t/8 = yn = 0; V4 = —2g-pt-pixeta; y7 = yti + ^ptpixeis; 1/2 = Vi3 = .5[tft, yi2]; V5 = Vq = Vi2 = Vi<\ = round(.5 — ^pptpixels); r —xg = llu; t£ = — ffiptpixels; r — xjo = 6u; yio = yj2 + ^|ptpixeis; tuio draw l{xe — £7,y& — t/7} .. 2{0, -1); % left of upper right strand lpen*; u ddraw 3..4,1..4; % erase part covered by upper middle strand hpen; w\o draw 4{x4 — X3, y4 — y*} .. 5{0, — 1}; % right of lower left strand rpen*; u ddraw 6.. 7,6.. 4; % erase part covered by lower middle strand hpen; undraw 3.. 4; % right of upper middle strand draw 6.. 7{x7 — x(>, yj — yfc}. 8{0,1}; % left of lower middle/upper left strand draw 1. .9; % left of upper middle strand Ipen*; u ddraw 4{x4 — x10,y4 —yio} . 11(0,1}, 9.. 11; % erase part covered by upper left strand hpen; u>io draw 10.. 4{x4 — xio, y4—yio} .. 11(0,1}; % right of upper left/lower middle strand rpen#; u ddraw 2(0,— 1} . 6{xo — x{ty$ — yx}, 2.. 10; % erase part covered by lower right strand hpen; ww draw 12{x3 — x4,y3 — y4} . . 13{0,1}.. 3{xto —Z12, yio — 1/12}; % right of lower right/upper right strand draw 2(0,—1}. .6{x9 — X|,yk) — yi}; % left of lower right strand draw 7{x7 — xg, y/— yg} . . 14{0, -1). % left of upper middle/lower left strand 317
r «. - £ - ^ SS it lJ .* • 2 ""f i l~ § 318
"Extensible right pretzel-top"; call charbegin('145,17, 0,0, 0,^pt, 0); hpen; r — x\ - 3.5u; yi = 3/5 = ye = y$ = round(.5 — ^pt-pixels)) r—x2 = good10u; jfc = \[y3,Vi]; x3 = .5[xi,x2]; V3 = yi = good60; r — x4 = 6u; y4 = ife + £§pt-pixels; r — x5 = 8.5u; r — zfc = r — x<r = llu; r — xg = good,0 16u; u>io draw l{x4 — xr>, y\ — yr>} . • 2{0,1} .. 3{—1,0}... 4{x5 — x4,i& — 2/4} • • 5; % end piece draw 5{x5 — x4, y4 — t&} .. 6{0, -1); % bottom of twist draw 4{x5 —x4,y4 —ys}..7{—1, O}. .8(0, -1). % top of twist "Extensible right pretzel-bottom"; call charbegin( '147, 17, 0; 0,0, &pt, 0); hpen; r — x{ = 3.5tz; y{ = y5 = j/q = y& = 0; r — x2 = goodl0u; t/2 = \[y,u y{); *3 = .5[x!, X2]; V3 = Uj = good6(.5 — f pt-pixels); r — x4 = 6u; y4= tfc — £§pt pixels; r — xs = 8.5u; r — XQ = r — X7 = llu; r — Xg = good10 16u; ^10 draw l{x4 —x5,y4 —y>}..2{0,-~l}. .3{—1,0}.. 4{x5 —x4, Y5 —1/4}.-5; draw 5{x5 — x4, y4 — y,} .. 6{0,1}; draw 4{x5—x4,y4 —y5}..7{-l,0}..8{0,1}. % Circumscribed circles subroutine bigcirc/e(var code, var units, var depth, var asp): call charbegin(code, units, 0, 0, 0, depth, 0); new aa; aa = .5 sqrt(rr + depth-depth-pixels-pixels/asp/asp); xs = 5r; yi = — .5 round depth pixels; xi = good10(x8 + aa); ys = goodl0(y2 + aspaa); call circle(l, 2, 3, 4,5,6, 7,8, w10). % bowl new sqrtsave; sqrtsave = sqrttwo; "Ellipse for floating-point mod operator"; new sqrttwo; sqrttwo = 1.3195; call bigcircle( '140, 29, 5pt, .5). "Circle to enclose two digits"; call bigcircle( '141,19,7.5pt, 1). "Circle to enclose an exponent of 2"; new sqrttwo; sqrttwo = sqrtsave; call bigcircle( '142, 9,6pt, 1). % end piece % top of twist % bottom of twist 319
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ' L-UJ-f-U | I I 1 1 ; 1 171 I 1 I 1 1 M' i \ \\\\y /I \ W 1 m \\\ 1 1 III 1.5 It I 1 1 1 1 M 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 24 # 4 320
"Large G for user manuals"; call charbcgin{' 176, 35, 0,0, ph, 0,0); % The depth of this character has been intentionally set to zero. new 1U)7j 1^98, W09I wqi = round(i.5pwpixeis + blacker); 1^98 = round(3pwiv pixels + blacker); wJG = round(3pwv pixels -f blacker); cpcn; rtyyXj = rty8») = rounder); lft99^3 = round r/14; X2 = X\ = ^fr; top07t/2 = h + 2o; bot97t/3 — 1 —round(l2pt pixels— 20); yj = y^; yb = -6(2/2, yj; yi = good0^[y2,tt3]; xq = «i; tA) = good07 ^[t/2, y*]; x7 = Xij top97i/7 = /i; If t97x8 = lftos^i; tfc = Vii hpen; w^-j ddraw 1..7,8..7; Ipen*; vx)7 ddraw (6 . )1.2{—1, 0}, (6..)8..2{-l,0}; cpen; tuj7 draw (6. .)! . .2{—1,0}; «i5 = ^; yis = 5[yi, yj]; call hcirc(2, 14, 15,16, 17,ua)7); call ** a darc{2} 3,1099); crsbreak .5[y2,y*]; yn =yio = yi3 = M^yn]; lfto7Xn = IftgsXgJ 1^97^12 = rt07^l3 = vt^7k)\ yyi = YJ + 2oj t^7 draw 4(1,0}.. 11.. 9(0,1}; £20 = ^h; V2o = t&; &iv = zl2; U2i = Wt ddraw 20.. 11,21.. 13; ddraw 13.. 12, ll{0,-l}..12{2(x12-a:ll))yl2-yn}; 2/22 = yis = y2o; wm = y27 = y2o — 23; y23 = y26 = ilm ih/22, mm]1; x-n = Z20 — ^r; xi\ - #20; xn = \\x>i^ £[a>22, X24]]; *25 = 3*1 + r/14; 327 = *2i; ^2G = 4[*21, i[*27, «25)]; minvr 0; minvs 0; ddraw 22(1,0} .23. .24(0,-1},25(-l, 0}.. 26. .27(0,—1}; minvr 0.5; minvs 0.5. % upper serif % erase spurious part % upper right stroke % reinforce main stroke % main stroke % lower right stroke % stem % spur % lower serif 321
3 4 17 16 322
' Dangerous bend sign"; call charbegin( '177, 25, 0,0, ph + pb, 0,0); % The depth of this character has been intentionally set to zero. % The actual depth is llpt, as desired in the user manuals. minvr 0; minvs 0; cpen; x\ = goodl0(.5r— u) = r — x2; % left-right symmetry; topioyi =>* + &; yi = tfi; x3 = x, ; X.\ = X2'f x5 = T — X$\ 2fe = T — Xj] Ofc = T — X9,4 Xq = T — X20J xq = a* — 2u; xH = u; lftJ03o = 0; y> = goodl()(^(/i + 6)); jfc = yy = jj|(fc + 6); ^ = w= fi(h + 6); W) = Ul0 = 0; l/ii + Vo = Vn + y 8 = 1/13 + W = Vu + 1* = yis + vr, = Via + y<\ = y i 7 + Mi = 0; ^11 — &Q = x,2 — x8 = X13 — x7 = X|4 — 2fc = X|5 — x5 = XlO —X.\ = x,7 — £3 = x,8-x2 = X|9 — X\ = 0; 1/18 = yio = V2i = I/22; bot 10I/21 = 1 — round(llpt-pixeJs) x2i = r —2>22 = goodl0(.5r —8u); tyj = y 1 = .5[ifcf mb); tyjo draw I.. 2; draw 21.. 22; draw 1. .3; draw 19.. 17; draw 2.. 4; draw 18.. 16; rpcn*; draw |l|5{—1,0} . . |2u|6(x8 — x0,yk — 3*}; draw |1|15{—1,0}. . |2u|l4(xl2 — x\.\lyX2 — yl4}; lpen#; draw |1|5{J, 0} . . |2u|7{*j — x7)yj—Vr}; draw 11115(1,0}. . |2u|13(xn - xl3, yn - yn}; cpcn; w\o draw 5{ —1,0} .. 6(2* — afc,t/g — ito} . . 8{afc - a*, ifc - Ms) .. 0(0,-1}; draw 5(l,0}..7(x«j — X7,tA)—1/7}. . 9(xn-x7,^-y7}.. 20(0,-1}; draw 15(—1,0}.. 14(x!2 — xM,t/i2 — yu} .. 12{*i2 —Xm.1/12 —yu} . . 0(0,1}; draw 15(l,0}..13(xi 1 — xt3,yu — yt3}«. ll(xi { - «i3lyii-vi:i}..20{0fl>; new 1099; wen = round(boid + 4de/taw); x3, = f -x38 = x5 —4u; x32 = x.14 = x38; X35 =x37 =x3,; X33 = f — X30 = gOOdcftixs + 5v)j yji = #(* + 6); M2 = ftp* + 6); ito = #(>> + *); y31 + !/38 = Vl2 + y J 7 = V.I3 + !/30 = t/34 + 1/J5 = 0; vpen; 1099 draw 31.. 32; draw 38.. 37; cpcn; tc*j9 draw 32(x32—x3!,vm—Wi} •• 33(0, —1} . 34(x35 —xJ4,3/j5 —y3,1}..35(x35— X3 4. yj5 — Vm} 37(X3« — X37. V3S — V\l}\ crsbreak 0; minvr .5; minvs .5. % top-bottom symmetry % top of signpost % ground level % left edge of signpost % right edge of signpost % erase hidden left edge % erase hidden right edge % upper left edge of sign % upper right edge of sign % lower left edge of sign % lower right edge of sign i/34 = $(>*+ <0; % upper bar % lower bar 36(0,-1}. % the dangerous bend 323
01234567 r | * 1 V 1 0 ( 1 ° 8 1 H 1 P 1 X i 1 h P X A | * \j / l ) 1 9 A I 1 Q Y a i q 1 y e 1 n - * n * 2 ■ ■ B J R Z b J r z A 1 i •• B i + 3 • 1 C K s I c k B 1 ff B | J m» s 00 1 4 < D L T M d 1 t 1 fi n | ^ OB % - 5 E % ' m £, & • 6 > E M u 1 e m u 1 fl F N v - f 11 V 1 ffi T 1 A o 1 <E t / | 7 1 t 1 • G 0 W | — 8 0 w ffl 1 Mathematics booke and journals do not look as beautiful as they used to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the flrat edition of iEsop's (Euvres is naive about the efficient preparation of flawleae souffles. This is a sample of the font when the resolution is 200 dote per inch and 3.6 dots per "point". 324
The file cmriO. mf "Computer Modern Roman 10 point"; ph = gp; px=4f; pe=§g; pd = $; Pb=§g; PO = 5^i ps = l; pa = .5(ph — pd); pw = 4; Pwi = W> Pwii = S; Pwiii = 3§; pwiv = §g; pwv — §§; aspect = 1.0; pu = $; Jcs= 1.075; ucs = 1.7; SC = 0; is = 0; slant = 0; sqrttwo = sqrt 2; /ixwidth = 0; haifd = 0; varg = 0; Jowast = 0; Jigs = 1. input cmbase; ca\\ font begin; input roman; end \js 9 n 1 T\ / \ .' \ / \ //I L U ^ I \ \ 1 \ N 6 \ • > \ |c2 d ^ U-' 4 ^ 1 i i i 1 i i 1 i i i i / 2 1 a' • i .,--" k° / v, '. ■-■•" * • \ 1 i 4 • 8 • 14 • 5* ■^. 1 5 d ^8 / J 1 * / ' 325
0 12 3 4 5 6 7 r ♦ V » 1 0 ( l 0 l 8 l 0 H P X 1 A * / ! ) 1 0 A I Q Y a 1 h P X q y e n - n • 2 B J R Z b • J r z A i - A i + 3 • B J m m oo i 4 < n % ^ « % ■ 5 — £ * m £ ft 6 > T 1 * I • 1 (E 1 1 / 7 t C | D | E | F | G K | L | M | N S I e k • ff T M d 1 t £ o U , V , W | ] e m a 11 - f n V ffl — 8 o ■w ffl Mmthemmiicibooki and journali do not look ai beautiful ai they uied to. It ii not that their mathematical content ii uniatiifactory, rather that the old and well developed tradition! of typeietting have become too expensive. Fortunately, it now appeari that mathematiei itielf can be uied to lolve thir problem, in ipite of the fact that the flrit edition of £top'i (Euvrei ii naive about the efficient preparation of flawlen louflWi. Thir ii a lample of the font when the reiolutionii 200 dotr per inch and 3.6 dotr per Vint-. 326
The file cmr9 . mf "Computer Modern Roman 9 point"; P b = $> po= fa ps= $, pa = .5(ph — pd); P w =&', Pwi = %> P wii =§§;Pwiii = §§5 p wiv =$}; pwv = §£; aspect = 1.0; pu = ^; Jcs = 1.05; tics = 1.65; s c = 0; is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; halfd =0; varg = 0; lowast = 0; Ugs = 1 . input cmbase; call font begin ; input roman; end 327
0 12 3 4 5 6 7 I- Q * 0 | ( 0 8 1 ° H 1 P X 1 i h P X A * M ! ) 1 9 A I Q Y a i 4 7 e n A H • a • B J R Z b J r z A i B i + 3 • t C K S ( I C k a ff B J m oo i 4 < D L T « d 1 t fi n « * <B % m 5 - E M U ) e m n 11 E # » 1 £ * • • > F N V - f 1 n ▼ ffi T A 1 ■ 1 CE 1 / | 7 r G o w | — • 1 1 0 W a . Mathematici books andjoornali do not look ai beautiful a ■ they uaed to. Itii not that their mathematical content ii unsatiifactory, rather that the old and well developed traditioni of typesetting have become too expensive. Fortunately, it now appear! that mathematici itielf can be need to lolvethii problem, in ipite of the fact that the fint edition of £iop'i GEuvrei ii naive about the efficient preparation of flawlen loufflei. This ii 8 lample of the font when the reiohltion il 200 dotr per inch and 3.6 dotl per 'point*. 328
The file cmr8.mf "Computer Modern Roman 8 point"; ph = 2j)P; px = -^; pe=%; pd = $; pfa = $; p° = &; p« = il; Pa = -5(ph — Pd); p^ = 4; pw = 1; p^h = §; p™" = S; pwiv = §£; pwv = §g; aspect = 1.0; pu = ^; ics = 1.03; ucs = 1.56; sc = 0; Is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0; varg = 0; lowast = 0 ; ligs = 1 . input cmbase; call fontbegin; input roman; end r 3 l-.,: > ~] n li i 2 Q \ \ \ * (A * \ t? N dj 4* • I * i u • 11 • \2* ' -. \ J 8 1 li r 5 1 3 2 9
0 12 3 4 5 6 7 I- Q # ( 0 8 0 II P X 1 i h P z A * V 1 ) 1 9 A I Q Y a i q Y e n m H • ? B J R Z b J r z A i B 1 8 i c K 8 1 1 c k 1 ff 8 J - m oo - 4 < D L T n ^ a % - 5 - E M U ■ i i d 1 t fl c m u fl E • J£ ft • > r N V f n IB T <E f 1 / | 7 f G O W — I w ■ ' 1 Mathcmaticibooki 8nd journal! do not look ai beautiful at they uved to. It li not that their mathematical content ii uniatlifactary, rather that the old and well developed tradition! of typesetting have become too expensive. Fortunately, it now appears that mathematics itielf can be ured to iolve thii problem, in iplte of the fact that the flrit edition of >£top'f (Euvrea ii naTve about the efficient preparation of flawien iouflUi. Thin in aiampke of the font when the reiolution in 300 dotn per inch and 8.6 doti per "point*. 330
The file cmr7. mf "Computer Modern Roman 7 point"; P* = W; P* = ^J pe = i; pd = $; P*>=4f{; po = &; ps=$; pa = .5(ph — pd); Pw=f: pwi=§i;pwii= ty;pwiii = §g; Piwv = Mi P^v = §§; aspect = 1.0; p u = $;}cs = .97; ucs -- 1.44; SC = 0; Is = 0; slant = 0; sqrttwo = sqrt2; fixwidth = 0; halfd = 0; varg = 0; lowast = 0; Hgs = l. input cmbase; call fontbegin; input roman; end 331
0 12 3 4 5 6 7 n + 0 111 I a I I . I . I r I 8 0 1 « l a A , 1 t B J 1 1 C K < D L i E » l > » l 1 O 0 1 p X • h P X Q a 4 R Z J r i 8 ( e k ■ ff T • ) fl U 1 m V 8 - f a V HI — 8 0 w III Mathematics booki Journal! at beautiful ai they uied ii not that tat It mathematical !• aotatlf factory, ratktr the well developed tradition! of typesetting haw become ejepemtve. Fortunately, it now • that mathematics Itself can be used to solve this Impltt of the fact that tht fttet edition of £top's GCuvres Is natve about the tfllcUnt 8 aw less souffles. This Is . sample of the font whtn the resolution Is 200 dote per Inch and 5.0 dote per • point". 332
The file cmr6. mf "Computer Modern Roman 6 point"; ph = 1$; px=ij|;pe = {jj|;p d =ig; Pb=^; P<> = ^; ps=S; Pa = .5(ph - pd); pw=|r; pwi = $; pvWi=2£; pwiii = §§; pwiv = $;pwv = $; aspect = 1.0; Pu = M;]c5 = -89; u<* = 1.43; sc = 0;is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; ha/fd = 0 ; varg = 0 ; lowast = 0 ; 1 i g s = 1. input cmbase; call fontbegin; input roman; end t // \ M N J>2 •■ U1 £3 ■t ii / ra: ^ ^ 14 & lb 3 3 3
6 I ODD '020 '030 '040 '050 '060 '070 '100 '110 '120 .130 '140 '150 '160 '170 r ♦ • - f ( | t A ♦ • ' I ) 1 e o - • • • i A 1 & - A » + 1 ■ 1 • m oo • 4 n • ^ • % 1 s r • m JL ft • • T • • CC • / T • 0 H ■ k • s t A Q a 1 * J ^1 9 J R Z • J 1 r i ~ 8 c k ■ W ~ L T 4 1 t 1 1—J £ M U • ■) a 1 > ff a * m t — t • 1 w fl Matkaaaatica kttkt aad jtaraalt 4m aat teak at kaaattfaJ at tkay atad It. II U atl tkat Ikalr natktmatlcaJ ctataal It aaaatia- fact try, nlkar tkal tka tld mmd wall dtrvatapad tradlttaat mi typtttttlaf aava kaaaaat lat aapamahra. Ftrtaaataljr, It atw appaart tkat aatkaaaatiaa It Mat caa ka atad ta tahrt tkit praMata, la taltt af tka fact tkat tka feat aalitlaa af £ata't (Zavraa to aafva akamt tka aOrfaat praparattaa af fawteat aaaSaa. Tkta to a aanala at tka ttat akai tka ratalatlaa It lit datt pat lack aad t.t data par "palat". 334
The file cmr5. mf "Computer Modern Roman 5 point"; ph=W; Px=$; pe-i; pd = £; Pb=^J Po=^J Ps=l; pa = -5(ph — pd); pw = &; p w ' =M;pwii = i§; pwii> = §8; pwiv = $; p w v = $}; aspect= 1.0; pu = ^;lcs = .84; ucs = 1.32; so = 0; is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; haifd =0; varg = 0; lowast = 0 ; Ugs — 1. input cmbase; call fontbegin; input roman; end 414 335
0 12 3 4 5 6 7 1 r 1 * V » 1 # ( 2 l 8 l H l P l X • l h P Z A | • / • | ) 1 • A I Q : Y a I 4 Y e n 1 m • a B J 1 8 Z b J r z A i w A i a • c K T [ e k ■ ff 8 J - m 00 i 4 < D L U II % -• m % m 5 = E M V 1 1 £ 1 0 m £ A 6 > F N W - d e f 1 t fl m n fl n V IB T | A 1 • 1 <E fl / 1 7 9 • 1 G 1 0 1 — S 0 •w m Bfathematlei booki and Journal, do not look ai beautiful ai they vied to. It ii not that their mathematical content ii uniatlifaetory, rather that the old and well developed tradition! of typesetting have become too txptnrivt. Fortunately, it now appears that mathtmaticr Itself can be used to rolvt thir problem, in rpitt of the fact that the flrit edition of flop's (Envres is naTve about the effldent preparation of flawless lonffiti. Thli li a sample of the font when the resolution Is200 dotr per inch and 3.6 dotr per 'point". ■ » 336
The file cmbiO. mf "Computer Modern Bold Roman 10 point"; p* = W; p*=W; pe = S; p<* = $; pb = g; po = £; ps = gg; pa = .5(ph - pd)\ Pw =if;pwi =^§;pwii =§;Pwiii = §g; pwiv = $',pwv = j$; aspect = 1.0; pu= $}; Ics = .85; ucs = 1.5; sc = 0; Is = 0; slant = 0; sqrttwo = 1.375; fixwidth = 0; halfd = 0; varg = 0; lowast = 0; ligs = 1. input cmbase; call fontbegin; input roman; end 337
0 12 3 4 5 6 7 r • | # | ( 1 0 l S t l H P | X 1 i h P z A • V s ! ' ) 1 a A I Q Y a i \q • \\ Y 8 n m | m * 1 B J a z b J F : ■■! i; A i - B i + 3 ; c K 8 | I I • k i n B J - a 00 i 4 < D L T * d 1 t fl n % ^ 01 % m 5 - E If U 1 ] • m u II £ 0 m M. ft • 6 > F N V - f n v 1 m T 1 A 1 • 1 (E 1 t / 7 | ? | a l 0 I w 1 — f ft w 1 m Mathcmatlei bookr • nd Journ41| do not look a their mathematleal content U u^iatlifaetory, tradlttoni of typaiattlag have become too exp mathetnatlci HieH eon be uied to lolve thir p: edition of JEiop'i GEuvrei it naive about the Thii !■ a iample of the font when the reiolutl "point". beautiful ai they uied to. 11 li not that rather that the old and well developed wive. Fortunatelyp it now • ppearr that >blem9 in ipite of the fact that the fir it ffleient preparation o f flawlen louflMi. >nli 200 dotr per inch and J.6 dotr per 338
The file cmb9. mf "Computer Modern Bold Roman 9 point"; p* = W; p* = W; Pe = &; Pd = %> pb=if; po = ^) ps=$; pa = .5(ph - pd); pw = $; pwi = §; pwii = $; pwiii = $; pwiv = ^|; pwv = $}; a s p e c t = 1.0; pu = L$£; lcs = M) ucs = 1.46; SC = 0; Is = 0; slant = 0; sqrttwo = 1.375; fixwidth = 0; halfd = 0; varg = 0; lowast = 0; ligs = 1 . input cmbase; call fontbegin; input roman; end 339
0 r * • V * # ( • 1 • 0 B P X « k 1 > 1 X 1 A • M ! ) 1 « A 1 Q Y a i * 1 1 ' 2 e n - M a • 2 B J R Z b J ' 1 1 ■ 3 A 1 •• ■ » + S • • a K B 1 [ c k ■ W 4 ■ j - m oo • 4 < D IL T d 1 t 1 5 n '■ - - % 9 5 - E If U 1 0 - ■ 1 6 z ■i m M. A • • > F N V - f ■ •y fli 7 T i 1 ■ 1 <E f / | 7 r a O W — 1 • w fl kfatkamattca baaka • md jaaraalt do not look aa btaatifal ai thy aead to. It ii not tkattkait matkamaticalcaataatiiaaaatkfaetary, rather that tkaald • md mii davakpad tradttiaaa of typaaattiag bava bacama too axpaaafva. Fartanataly, it aaw appaara tkat matbtmatica ttraV caabaaaad to aalvatkia probkm, in aplta of tka fact tkat tka Irat • ditimn of £aap'a(E*vraa ia aalva • bomt tkt afficiaat praparatlaa of lawlaaa aaaflMa. Tkii ia • aampla of tka font wkaa tka raaalatiaa la 211 dotr par iack aad S.I dotr par'palat*. 340
The file cmb8.mf "Computer Modern Bold Roman 8 point"; P*>=i; P° = '&'> Ps = i§; 'pa = .5(ph—pd); p^ = ££; pw = M; Pwii = 1; pwii = §; pwiv = ^;pwv =3$; aspect = 1.0; Pu = i^;^cs = -82; ucs = 1.41; sc = 0; Is = 0; slant = 0; sqrttwo = 1.375; fixwidth = 0; halfd = 0 ; v a r g = 0; lowast = 0 ; ligs = 1 . input cmbase; call fontbegin; input roman; end — r i >2U \ /a \ * t 1 /5 > • // / / \h t> i j \ \ \s " k A -\ i m \ vc2 4r \ dj! y ) / / - w» ^10 A • /I ^ 1 12< ^1 » » » akl 1*1 1 a • 14 IB T 341
0 12 3 4 5 6 7 r * v L * 1 r 1 0 8 1 0 1 H 1 P 1 X 1 i b P X A * w / t ) 1 9 A 1 I Q Y a • j 4 Y e n - 0% n * 2 • B J R Z b • J r 2 A i •• a i + 3 i c K s I c k s ff B J mr * 00 1 A < D L T U d I t a n % «* OB % • 5 == E M U } e m u fl "^ 1 • m £ & • 6 > F N V ~ t ; D V ffl ~H A • 1 (E 1 9 / 7 • G O W — g o w 1 //? Mathematics books and journals do not look as beautiful as they used to. It is not that their ma tbema tical content is uosa tiefactory, rathertha t the old and well developed traditions of typesetting bave become too expensive. Fortunately, it now appears tbat matbemstics itself can be used to solve this problem, in spite of the fact tba t tbe first edition of hop's GZuvres is naive about tbe efficient preparation of Sawless souffles. This is a sample of tbe font wben the resolution is 200 dots per inch and 3.6 dots per "point". 342
Tile file cms 10. mf "Computer Modern Slanted Roman 10 point"; ph='l$; px-flp; pe = i; pd = gg; pfa = l; p° = i&; ps = ^; p* = -5(p^ — Pd); pw = ^j pwi = $; pwii = '§; pwiii = jjg; pwiv = |;pwv =^§;aspect = 1.0; pu =$}; Jcs = 1.075; ucs = 1.7; SC = 0; Is = 0; slant = .15; sqrttwo = sqrt 2; fixwidth = 0; halfd =0; varg = 0; lowast = 0; ligs = 1 . input cm base; call fontbegin; input roman; end 343
0 12 3 4 5 6 7 r ♦ V * 0 ( 0 8 0 H P X 4 1 b P X A * «/ / ! ; i 9 A I Q Y a i 4 K e n M » * 2 ; B J R Z b • J T 2 A i B t + 3 » c K S I c k s W B J ♦ IB OO 5 4 < D L T « d i 1 a n •* ee % 5 = £ M U i e m a a r > «r £: A 6 > F N V - f B ffl r 1 <E 1 f / 7 « I G 0 W | — g 0 W ffl Mathematics books and journals do not look as beautiful as they used to. It is wof that their mathematical content is unsatisfactory, rather tbat the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the Arst edition of Esop's (Euvres is naive about the efficient preparation of flawless soufRis. This is a sample of the font when the resolution \s 200 dots per inch and 3.6 dots per "point". 344
The filecms9. mf "Computer Modern Slanted Roman 9 point"; ph=*£; px = ^; pe=%; pd = %; pb = j; po = ^'^ ps = J$; pa = .5{ph — pd); P* = &; Pw* = §i) pwii = 1; pwiii = $J; p w i v = §§; p w v = |$; aspect = 1.0; pu - ^fg*-; lcs = 1.05; ucs = 1.65; sc = 0; Is = 0; slant = .15; sqrttwo = sqrt 2; Rxwidth = 0; halfd = 0; varg = 0; lowast = 0 ; ligs = 1 . input cm base; call fontbegin; input roman; end 345
01234567 r • « 0 | ( 0 8 1 0 H P X 1 t h P X A * V t ) I 9 A I Q Y a i 4 y e n - A • • a : B J R Z b i f X A i - B i + 3 » C K 8 I c k a \ E B I - m oo 9 4 < D L T « d 1 t fi n % ^ OB % - 5 - E M U / e m u ff r # - ^: a • 6 > F N V - f n V ffi r A • i (E I / | 7 f G O W — f © w ffl Mathematica boolca and journala do not look aa beautiful mb they uaed to. It it not that their mathematical content if unaatif factory, rmtber that the old and wel/ developed trmditionw of typeaettinf have become too expenaive. Fortunately, it now wpptMiu that mathematica rtaetf can be uaed to folve thia problem, in apite ot the fact that the firat edition ot JEaop'n <Eu vrea if naive about the efficient prepmrmtion ot flawleaa aouflMe. ThtM i* a aample ot the font when the reaofution U 200 dota per inch and 3.6 dotB per "point0. 346
The file cms8.mf "Computer Modern Slanted Roman 8 point"; Ph = 2*p; px=-$; pe = $; pd = %; Pb = $; po = j^; pa = Jg; pa = 5(ph — pd); pw = &; Pwi=3v> p^'i==l; pw^' = 1; P^iv = §&; P*^ = §8; aspect = 1.0; pU=^; jcs = 1.03; ucs — 1.56; sc = 0; Is = 0; slant = .15; sqrttwo = sqrt 2; fixwidth = 0; haifd = 0; varg = 0; Iowast = 0; ligs = 1. input cmbase; call fontbegin] input roman; end 347
0 12 3 4 5 6 7 r • " * * 1 ( 9 8 0 H P X 1 0 h P X A * 1 «* y / ) 1 0 A I 9 V i i q Y e n - # 2 : B J R Z b J r A I - fi / + 3 i O K s I c k 8 17 B J - as CD J 4 < D L T m d 1 t n n % - « % - 5 = E M U / e m U a r 4 - jE A • f > r /v V - r n a r A 1 • 1 <E $ 1 / | 7 f G 0 W — g 0 A MathematJc^ book8 and journal* do not look a* beautiful at they used to. It Jr /jo/ thmt their mathematical content Jr unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, Jt now appears that mathematics Itself can be used to aaive this problem, in spite of the fact that the first edition of JEsop'sGZuvres Jr naive about the efficient preperotion of /lawless souMis. This Is • sample of the font when the resolution Jrr 300 dotr per inch end 3.6 dotS per "point". 348
The file cms7. mf "Computer Modern Slanted Roman 7 point"; ph = *$; px=-^; pe=§a; pd==$; pb= $; P<> = j^; ps= Mi§ pa=5(ph-pd); pw -|;pwi =§i;pwii =^Jpwiii = jg; pwiv =§^;pwv = §g; aspect = 1.0; pu=$; Jcs = .97; ucs = 1.44; sc = 0; Is = 0; slant = .15; sqrttwo = sqrt 2; fixwidth = 0; hai/Vi = 0; varg = 0; Jowast = 0; ligs = / . input cmbase; call fontbegin; input roman; end 349
0 12 3 4 5 6 7 r * v * u 1 ( 0 8 0 H 1 P 1 X 1 h P X A * ** •*■ I ) 1 0 A I Q Y a i q Y 8 a - _ M * 2 • B J R Z b J r z ~^ i •• D # + 3 / C K S c c k 8 < s J - • $ » 4 < D L T \ d I t n « CD m % — 9 = E U u 1 e m 1 L I ♦ • £ ft • 0 > F N V t f n > T - • | ff • / 7 ? 1 G 0 1 w *■ 8 1 Mathematics books and journals do not look as beautiful as they ueed to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditlone of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, Insplte of the fact that the first edition of fsop's OEuvres 1b naKve about the efficient preparation of f lawless souff 16b . This Is a sample of the font when tne resolution is 200 dots per inch and 3.6 dots per "point". 350
The tile cmtt. m f "Computer Modern Typewriter Type for use with 10 point"; ph = W; px=^; pe = i; pd = $; Pb=Si P°=^; Ps=&; P* = Xph; pw = pwi = pwii = §g; pwiii = $}; pwiv =pwv = £g; aspect =1.0; p u = ?3; ics = £}; ucs = $>-; SC = 0; Is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 1; haifd = 1; v a r g = 0; lowast = 1 ; ligs = 0. input cmbase; call fontbegin; input roman; end a !.• 5 L b t\ • • ) *~t / \ L - i. — \ I. — , — \ .\ • \l 61 A • • \ 11 I *•' 2-1 J i fc Q * 2-1 » f » » • J14 _--■ • ■** * 5 - r\x . 1 V 5 351
0 r * «# A U 1 c 0 8 0 H P X 1 1 h P X 1 A * ! ** •* i ) 1 0 A I ! * Y • 1 q y 2 e a - — it * 2 : B J R Z ! b J r z 3 A i " 0 # + 3 • C K 8 [ c k • < 4 e J - • $ 9 4 < D L T \ d 1 b 1 5 n * m • X - 5 s E M U ] • m u 4 6 £ • • £ * • 0 > F N V t f n V > 7 T - • 1 a t 1 / 1 T 9 0 0 w 4- K 0 w i Mathematics books and Journals do not look as beautiful as they used to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the first edition of £sop's (Euvres is naYve about the efficient preparation of flawless souffles. This is a sample of the font when the resolution is .200 dots per inch and 3.0 dots per •'point*v. 352
The file cmtt9.mf "Computer Modern Typewriter Type for use with 9 point"; L««) . nv LIS . np — U7J> . nrJ _ 72 • • px — -jjT-, pc — -3Q-, pa — ^g, P° = ^i P6 = ^; P* = .5ph; Pil= tg-» :&; p6 = ^; p* p w = :*g; pvw = ig; pw/i = Jg; pwiii = ^, pb 27 . pwiv = i§; p^ = •*§; 2.1L1. aspect = LO; pu = ^> 'cs = M; ucs = w> sc = o; 's === 0; s/ant = 0; s<jrtiwo = sqrt2; fixwidth = 1; halfd = 1; varg = 0; lowast = 1; Jigs = 0. input cmbase; call fontbegin; input roman; end n la: l\ / / 1 1 D L b • '?) 1 r: • / t! - \| ^ .«* UJu \ \ 4tt- ^ 0 1 \ 5 N L 4 • V, II V ) fa- k *) - IC ( ——< [—J ^1 1— " » ! r" I M - "1 ^1 1 V 5 D 353
0 12 3 4 5 6 7 r * 1 *» A u C 1 o a • 1 H p h 1 p h ♦ «# ♦ I ) 1 1 0 A I a Y a - q ■ Q - ■ • 1 a 1 B A 1 1 0 • + 3 0 c ' 1 n « • i e X 0 = E £ - » £ A a > r K R Z b J r i B I T \ d i t ] e m u 1 Y * < * V t 1 f n V T ■b 1 • 1 a • i / 1 1 T I r o 1 i * g 1 v 1 > Matheeatlcebooks and Journals do not look 88 beautiful 88 they used to. I t not that their eatheeatical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become • xpmnsivm. Fortunately, it now appears that mathematics Itself can be used to solve this problem, in spite of thm fact that thm first e dition of Iiop'iBuvroi naive about ♦ SSO e fficimnt preparation of flawless souffids. This is 8 sample of thm font when thm resolution is 200 dots inch 8nd 8.0 pmr - 'point* •. 354
Tac file cmt 18. mf "Computer Modern Typewriter Type for use with 8 point"; Ph = i$; p* = W; p* = $; pd = §i; Pb=zM> P°=A; Ps=&; pa = .5ph; P* = Mi P™ = $; pwii = $; pwiii = $; pwiv = iJ; pwv = ^J; aspect = 1.0; P**=W> '« = #; ucs=$; sc = 0; Is = 0; slant = 0; sqrttwo = sqrt2; Rxwidth = 1; halfd = 1; v a r g = 0 ; lowast = 1 ; liga = 0 . input cmbase; call font begin; input roman; end 7*-T-*«C IP kP 355
0 12 3 4 5 6 7 r * - • 0 | ( 0 a 1 ° X « p * A V «» / ! ) - 9 A Q a 1 q e n - • * 2 R Z J r t A • • B t + 3 • • c 8 I c < • it L j ? * a> oo » 4 < L T « t fl n • X - 5 = e M 1 • fl r «• >e * • • 1 > N - ffl T ** 1 CE • 1 / | T I 1 Q O W — fl fll Mathamatici journal o baautifui at thay u«ad U not that thair mathamatical ritant uAialtlifactory, rathar that did and wall davalopad traditions of typatattlng hava bacbrnja too axpanilva. Fortunataly. now appaari that mathamatici lUalf can ba Uiad to iolva thli ipita tha fact that flrit adition of £iop'i CEuvrai if naVva about affteiant praparatlon of flawlaii iOuffMf. Thii ii fampla of tha font whan ratolutlon ii 200 par par "point". 356
Tile file cmss8. mf "Computer Modern Sans Serif Quotation 8 point"; Ph = ^; Px = W; pe = $; p<* = $; Pt>=$; Po = ^; Ps=$\ pa = .5(ph — pd); pw = pwi = pwii = pwiii - ^; pwiv = pwv = ^}; aspect = 1.0; p u = ^\lcs = 0; ucs = 0; SC = £;Js = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0; varg = 1; lowast = 0; ligs = 1. input cmbase; call fontbegin; input roman; end 357
0 12 3 4 5 6 7 r 0 0 [ ( 0 * 1 ° H P X 1 # h 1 p X A * w . / ; i a ^ / 9 Y 9 i * y e a « m 0 2 t B J R Z b J r i A I - 0 1 + • c K S I e k J t tr X J mm • CO • 4 < D L T m d i / t n n m n m 3 ~ £ M U J • m u tl r «• JE A i 6 > F N V - T n V m r + 1 <E • 1 / 1 r t G o w — !. ° o i w m Msthemstlcs bo ok 8 mnd Journsls not look ss besutlftsl os they used to. it Is not that their mst hems tic si content Is unsstlsfsctory, rsther thst the oId end well developed trsdltlons of typesetting hsve become too • xponrivo. Fortunsteiy, it now sppesrs thst msthemstlcs itself csn be used to solve this probi em, In spite of t h e fsctthst the first edition of jCsop'sCEuvresIsnstVesbout the • miont prepsrstlon of flswless souflUs. This Is 8 ssmple of the font when t h e resolution Is 20 0 dots per Inch snd 3.6 dots per "point*. 358
The file cmsss8. mf "Computer Modern Slanted Sans Serif Quotation 8 point"; pfc = 38; p° = ^; ps=$; pa = .5(Ph-Pd); p^ = 1; p™ = 1; pwii = 1; Pwiii = 2£; pwiv = |;pwv = §§; aspect = 1.0; pu = $; les = 0; ucs =0; SC = £; is = 0; slant =}] sqrttwo = sqrt 2; fixwidth = 0; halfd = 0; v a r g = 1 ; lowast = 0; ligs = 1 . input cmbase; call fontbegin; input roman; end 359
0 12 3 4 5 6 7 '000 '010 '020 '030 '040 '050 '060 '070 '100 '110 ' 120 .130 ' 140 ' 150 '160 ' 170 r 0 V * 0 ( 0 8 0 H P X < p A V w 0 ! ) 1 1 0 A I Q Y a q Y e Q - m m * 2 • B J R Z • J r z * i •• D i + 3 • » C K S [ C S 1 »i hi j m • oo » 4 < D L T m 1 t 1 fl n % ^ 9 « - 5 - E M U ] • fl z # m /E A • 6 > F N j V — f m T 1 A 1 • 1 CE 1 » 1 / 7 ? G 1 O 1 W 1 g ffl Mathamatics Fortunatalyf look baautiful unsatisfactory9 usad journals do mathematical ' traditions of that mathematics usad first >Esop*s CEuvras naiva souffMs. 200 3.6 • 360
The file cmssb. mf "Computer Modern Sans Serif 10 point Bold Extended' nfi 250- nv — 100. n* _ 90. nri — 70. pn = JB , px — -w, pe — J6, pa — ^ „ pb = §g; po = jfc; ps = ijg; pa = .5(ph— pd); pw = pvv/ = pwii = pwiii = ^; pwiv=: pwv = $f; aspect = $; pu == ^; lea = 0; ucs = 0; sc = .^; fa = 0; slant = 0; sqrttwo = 1.35; Gxwidth = 0; halfd = 0; varg = 0 ; Jo wast = 0 ; Jigs = 1 . input cmbase; call fontbegin; input roman; end t 1 > n rz /2-3 / A 11 i 5 ,L— / / i / i \ \| \ \ \ \ \ i \ N V \ 4 y l i#i h i^ It1--. ,. i » i - I ^ K '•' • J: 14 • i 1 1 IB ) 361
0 12 3 4 5 6 7 r <t> V 1 * 1 * ( 0 8 0 H P X I h 1 P A M> w / i 1 ) 1 9 A I Q Y a i q y e Q - * » ♦ 2 ; B J R Z b J r z A i •• 6 / + 3 ■ 9 C K S [ c k s III J mm m 00 i 4 < D L T N d 1 t n % - ce % - 5 ^ E M U ] e m E • m £ & • 6 > F N V — f n V ffi T 1 * 1 • CE 1 i M 7 | • i Q O | W — 8 1 0 w ffl Mathematics books and journals do not look as beautiful as they used to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the first edition of -Csop's CEuvres is naive about the efficient preparation of flawless soufflls. This is a sample of the font when the resolution is 200 dots per inch and 3.6 dots per "point". 362
The filccmssi2. mf "Computer Modern Sans Serif 12 point"; ph=!»; px=^; pe = 4jp; Pci = i; Pb =§3; I™^ ^i; ps = Sh pa = .5{ph— pd); pw - p w i - pw ii - p w i i i = i|g ; pwiv — pwv = jjg; fljpecf = j; pu = ^J; ics = 0; ucs = 0; sc = .5; is = 0; slant - 0; sqrttwo - sqrt 2; fix width = 0; halfd = 0; v a r g = 0; lowast - 0; ligs = 1. input cmbase; call fontbegin; input roman; end f / 1 -/ t t 1 / s I i t I / / / / '' 5 "~ / / ~1 / / / i i 1 n '2^ • A &M \ \ y • \ \ ( ii "■ J '10 • 1#1 \ (j i % * —.—- ? \ » » 3 » $ 1 14 • 5 • IB 1 363
0 12 3 4 5 6 7 001 no )20 )30 )40 )50 )60 )70 L10 20 30 140 150 160 170 . T- s> • • * ( 0 <z> X € h P X A <P ~ * \ ' I ) 1 0 1 Q a y n i — • m a 2 • j r z e 0 i + 3 1 Z ! • - • w $ 4 < [ [ HI • • 9f •» 5 — M - 1 • II II n z • • >e & a) 6 > - HI Y * • CE 9 / 7 r G — 9 in Mathematice and journals aa • they uaad is that thair mathematical contant is unsatisfactory* rathar tha wall davalopad traditions typaaatting hava bscoms • eivs* Fortunately* appaara that maths- matics itaalf can ba uaad aolva problem* apita tha that tha first sdltion >Esop's GEuvrss naYva ths • preparation flawlsss • a aampla tha whan tha raaolution par d*6 par "point"*
TI:c file cmtitl . mf "Computer Modern Sans Serif Extrabold 14 point"; ph=^t px=*&', pe=$; pd=%] pb = 0; po = ^; ps=$; pa = .5(ph — pd); P* = 1; Pwi = §§; P™' = §; pwiii = §§; pwiv = 9g; pwv = §§; aspect. = |jf; pu — Hth 'cs = 0; ucs = 0; sc = i§; Js = 0; s/anf = 0; sqrttwo - 1.3; fix width = 0; halfd = Q ; v a r g = 1 ; lowast - 0; Jigs = 1 . input cmbase; call fontbegin; input roman; end -^ / 2"3 / / \ i I 1 N i t \ i 6 \ • V- —t- ■ 1 \ ; \ \ ! \ h-_ 4 \ • i ! 1 1 j * ( ^-— /" i< { V V 1 \ l\ 365
0 12 3 4 5 6 7 r j * - * # 1 ° 8 1 ° H P X 1 f h P X A * / I ) 1 0 A I Q i Y a i 4 y e n - • I B J R Z b j r z A i - A i + a ; c K S 1 e k ■ ff B J 1 - oo i 4 < D L T It d I t fl n % «* OB % - 5 - E M U 1 e m u fl £ 0 m JE. & 6 > F N V - f n V ffl T A 1 • 1 <E 1 / | 7 f G 0 IV — 8 o w IB Mathemailei booki and Jour nail do not look ai beautiful am they ured to. It ii not that thalr mathematical content liunsatisfactory, rather that the old and well developed tradition! of typesetting have become too expensive. Fortunately, it now appeari that mathemsticr Itself can be umed to solve tkii problem, in rpite of the fact that the first edition of £sop's CEuvres Is naive about the efficient preparation of flawless souffles. This is a sample of the font when the resolution is 200 dotr per inch and 2.6 dotr per "point". 366
The file cmsciO. mf "Computer Modern Roman Small Caps for 10 point"- ph = flp; px=lf; pe = %; pd = »; pb=$] po = &] ps=i; pa = .5(ph— pd); pw=$5> pw = l; p^« = 38; pw» = M; pwiv = jg; pwv = §§; aspect = 1.0; Pu = ^; Jcs = A; ucs = 1.23; sc = 0; Is = 0; slant = 0; sqrttwo = 1.35; fixwidth = 0; halfd = 0; varg = 0; Jo wast = 0; Jigs = 1. input cmbase; call fontbegin; input roman; end 3 — ~1 n rr v\ /A •' / .?1^ : / * N \ \ v \ £2 p, \ \ J • \ • \ \ ^ 1 1 J io /( i 1.1 ! 1? ^.1 I 1 - a: 3- » N • 4 ... 8 • t ! 14 * \ Li • 5 y 367
0 12 3 4 5 6 7 '000 '010 '020 '030 '040 '050 '060 '070 '100 '110 '120 '130 '140 '150 '160 '170 r * V M 0 1 0 8 0 H P X I h P X A ¥ V / ! j i Q A I Q Y a i q Y e n - n JJ * j 2 • j R Z b J r z A l • • £ i + 3 • 1 8 C K S I C k s ff H fa-4 J m X oo ) 4 < D L T tt d 1 t fi n \ -¥ oe % - 5 = E M U 1 e m u fi i / * £ & • 6 > F N V - f n V ffi T 1 A 0 pCE ' l\ 7 ? • 1 G 0 W — g 0 w ffl Mathematics books and journals do not look as beautiful as they used to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the first edition of Lop's (Euvrea is naive about the efficient preparation of flawless souffles. This is a sample of the. font when the resolution is 200 dots per inch and 3.6 dote per 'point". 368
The file cmdunh mf "Computer Modern Dunhill 10 point"; ph = 3f; px = if; pe = %; pd = %; pb = $; po = £; ps = 'i;pa--=.5(iP^pd); ?w = :&; p™ = M; Pwi = i; p^^' = 1; pwiv = jj§; pwv = $j; aspect = 1; Pu = 3§i Jcs = 1-075; ucs = 1.7; sc = 0; Is = 0; slant = 0; sqrttwo = sqrt 2; /ixwidth = 0; halfd = 0; varg = 0; Jowast = 0; Jigs = 1. input cmbase; call fontbegin; input roman; end a i * a .« L-i • > i > / ,' i ■ ( if i i' j b4_ 7 /— 2 / / a! M \ u i \ t i1 i 6 • c2 \ i d 4 • || \ ^ 4 » I \ :2 V /io • n • s • .-■'' / i i 1— J 2J. » J 1 1-.- 3-^ '• 4 1 • r —- 8 ■*'' • 14 5*. 1 5 1 H J 369
0 12 3 4 5 6 7 t)00 r~n « • ■ # ( 1 o 1 8 0 1 H P X < h 1 P X —n * w 1 ! ) i 9 A I Q Y a i q Y —n n » • 2 ; B J R Z b • J r z ~n 1 •• B i 3 f O E K 8 I c k ■ it ~n j m m oo 4 < E L T U d 1 t fi "~5n % ■^ a % I 5 - M U 1 e m u n ^n / jr 1 * 1 & ■ 6 > F N V — f n V ffi T 1 A 1 • <E | 1 / 7 ? 1 a 1 0 W — s 0 w ffl 1 Mathematics book■ and journalr do not look ai beautiful at they uied to. It ii not that their mathematical content if unratirfactory, rather that the old and well developed traditionr of typesetting have become too ex pen five. Fortunately, it now appearf that mathematicf itrelf can be Ufed to folve thir problem, in fpite of the fact that the firit edition of JZfop'f CEuvret if naive about the efficient preparation of flawleii foufflif. Thir if a rample of the font when the resolution if 200 dotr per inch and 3.6 dotr per *point". 370
Tlic file cmf i b. mf "Computer Modern Fibonacci 10 -point"; pb = S;p° = &;ps =M;pa = .5(ph —Pd); P w=S;Pwi = ii; p w i i =3§;pwiii = *$; pwiv = ^; pwv = §§; as pec t = 1; pu = §1; Ics = 1; ucs = 1 . 6 1 8 0 3 ; s c = 0 ; Is = 0; slant = 0; sqrttwo = 1.38197; fixwidth = 0; halfd =0; varg = 0; iowast = 0; ligs = 1 . input cmbase; call fontbegin; input roman; end 1 W // ^ \ -Al ^ fc.2 d.: _i—* »-0 '2 —J—' a ip 4,o /' 371
0 12 3 4 5 6 7 r 1 * * > i \ ( 0 8 0 1 H 1 p X n 1 p X A * • / I 1 1 0 A I <* Y a i q F e n - - M * 2 B J R S Z t) J I i! K \ " 0 / + 3 C K T I 0 k c tr - J • ft 00 9 4 < D L U «• d 1 t n n • - a % 3 = E M V \ 0 m u n z - - £ ft 0 > F N - r n V m T 1 * • <E • 1 / T 1 0 1 c 0 J w — ft 1 0 w ffl 1 Matnomatlos oooKt and Journals do noi look ei boautmil at tnoy uwd to. It it not tnat tnolr math- omatioai oontont ic uniaWTaotoTy, retnci thai tho old and m\\ devoiopod tradinorvt of typowttinj navobooomo too exponilve.Fortunetoiy^t now appoari that mathomatlotitwlToanbouiod to tolvo this problem, In iplto Of tr\o r&ot mat tho nrct edition or £iop'c (Euvtec it naive about tho omolont preparation of tlawleK loumtt. This it a lampio or tho font wnon tho Teiolutionic 200 douperinoh and 3.6 doti dot "point". 372
The file cmf f mf "Computer Modern Funny Font"; ph=^; px=lf; pe=$; pd^V®; P*>=1; po = gjj; ps = |g; pa = .5(ph —pd); p* — &; Pwi = M; Pwii — J8; Pwiii = §8; pwiv = |;pwv =^;aspect = 1.5; pu = i;'<* = -&; ucs = tk; sc = -2; Is = o; slant = —.1; sqrttwo = 1.5; fixwidth = 0; halfd = 0; varg = 0; lowast = 0 ; ligs = \ . input cmbase; input roman; end call fontbegin; 373
0 12 3 4 5 6 7 r * » v 1 •* 0 ( 1 0 8 \ ° H 1 P 1 X t 1 h P 1 2 A 1 9 w • ( ; i 9 A / Q Y a i q y e a - a » * 2 • B J R Z b J r z A t •• fi + S } c K S f C k s ff 8 3 - <E / 4 < D L T a 1 d l t ft n \ ^ at % - 5 ~ E M U J e m u ft E * IT JE & • 6 > F N V - / n V Si r 1 A 1 • 1 <E 1 > / 1 7 1 ? G 1 0 W 1 — 9 0 w ffl Mathematics book8 and journals do not look a8 beautiful a8 they used to. It is not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fact that the first edition of jEsop's (Euvres is naive about the efficient preparation of flawless souffles. This is a sample of the font when the resolution is 200 dot8 per inch and 3.6 dot8 per "point". 374
The file cm iiO.mf 'Computer Modern Text Italic 10 point"; ph = !>; P* = if; pe = l; Pd = $; pb= 1; po = 3-fc; ps= g}; pa = .5(ph— pd); p* = &; Pwi = S;.Pwii = §5; Pwiii = 30; pwjv = $£; pwv = |$; aspect = 1.0; pti = $};/cs = 1.075; ucs = 1.68; SC = 0; Is slant = .25; sqrttwo = sqrt 2; fixwidt/i = 0; i)a/fd= 0; /owast = 0; ligs =1; mi = 0. input cmbase; call fontbegin; input italic; end = .5; / / / / / I J*/ j i I 7777T / tn I // WWIW H Oi/ / / / Li- a U / / / / / / n / loi -/Vf /V"A/ / A*?, 1 375
0 12 3 4 5 6 7 \- * A 0 ( l 0 8 1 0 H P X 4 1 k P X A * w • / ; i 0 A I Q Y a i 9 V 0 n n n * 2 B J R Z b 3 r X A t • • 3 + s > c K S f c k 8 f f B J ~ <E f 4 < D L T a d I t fi n \ -« ct % - 5 = E M U J e m u fi E * m £ & • 6 > F N V - f n V ffi r m • (E 9 / J 7 9 G O W — g o V) m Mathematics books and journals do not look as beautiful as they used to. 11 i s not that their mathematical content is unsatisfactory, rather that the old and well developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself can be used to solve this problem, in spite of the fa c t that the first edition of £sop '* (Euvres is naive about the efficient preparation of flawless souffiis. This is a sample of the fon t w h en the resolution is 200 dot8 per inch and 3.6 dots per "point". 376
Tic file cmti9. mf P<l=-%, "Computer Modern Text Italic 9 point"; Pb = i; Po = ;&; ps = '5; pa =.5(ph - pd), pn> = &; /»w = 1; pw/i = &; pwi» = |fe; pwiv — '^; pwv = ^aspect ==1 . 0 ; p|J = ib ij /cs = 1.054; ucs— 1.65; sc= 0; slant =h25; sqrttwo = sqrt 2; fixwidth= 0; halfd = 0 ; lowast = 0 ; tigs = 1; mi = 0 . input cmbase; cdl fontbegin; input italic; cn<l Is =9/18.5; / / /:./ /, iJ^lJ I /////////// 4 i •' // / / / j 7 / f-H»3H\ TT7"-3/ / / / b.3fTn '// // U/M In 7T/7 / / /T/"/1 377
0 12 3 4 5 6 7 r * M 0 ( 0 8 0 1 H P X 4 h P X A * w 1 ) i 9 A I Q Y a • q V e n - n * 2 • • B J R Z b • 3 T Z A X - ; + 8 5 c K S [ C k • * B J «» <E i 4 < D L T a d I t ft n % «• a % - 5 = E M U ] e m u * E 9 m £. e • 6 > F N V - J n V it 1- fli- T A • (E f / 7 ? G 0 W — g 0 U3 lH Mathematics books and journals do not look as beautiful as they used to.! ft is not that their mathematical eoptent is unsatisfactory,, rather that the old and toell developed traditions of typesetting have become too expensive. Fortunately, it now appears that mathematics itself ean be used to solve this problem, in spite of the fact that the first edition of iEsop's (Euvres is naVve about the efficient preparation of flawless slouflUs. This is a sample of the font when the resolution is 200 dots per inch and 3.6 dots peT "point"* 378
The file cmulO. mf "Computer Modern Unslanted Italic 10 point"; ph = W, p* = W; pe = §8; p<* = $; pb = $; p° = 5^; ps = 1; p* = -sCp* — prf); pw =|;pwi = §g; pwi i= §; pwiii = $; pwiv =§§;pwv = jj§; aspect = 1.0; pu = §g; Jcs = 1.075; ucs = 1.7; sc = 0; Is = 0; slant = 0; sqrttwo— sqrt 2; fixwidth = 0; haifd = 0; Jowast = 0; Jigs = 1; mi = 0. input cmbase; call fontbegin; input italic; end 379
01254567 r * f r e t r 0 8 J // P 1 X I \ H \ P X A 9 V JT ; ; / 9 A I Q Y a i 9 V 0 a $ p n * 2 B J Z b i r ■ <z A a i a t + 3 r c K h I e k i + 3 0 K r P < 4 < D L \ S d I t w n 7 X V 6 - 5 = E M T J t m u <P E 6 /* 4 & - 6 > F N 7 V f n V 6 * € V X < / 7 f G 0 W V 0 to w Mathematics books and journals do not look as beautiful as they used to. It is not that their mathematical content is unsatisfactory, rather that the ol d and well developed tradition^ of typesetting have become too expensive. Fortunately, it now appearS that mathematics itself can be used to solve this problem, in spite of the fact that the first edition o j 4>sop's xuvres is namve about the efficient preparation o j flawless sou fflSs. This is a sampk of the font when the resolution is 200 dot8 per inch and 3. 6 dot8 per '"point". 380
The file cm i 10. mf "Computer Modern Math Italic 10 point"; ph = l>; Px = W, P'=ll Pd = $J pb - |; po = &; ps^$; pa = .5(ph - pd); pw = &; pwi = §; pwii = $; pwiii = §§; pwiv =|;pwv = §§; aspect = 1.0; pu = 3g; Jcs = 1.075; ucs = 1.68; sc = 0; Is = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; ha/fd = 0; Jowast = 0; Jigs = 0; m i = 1. input cm base; call fontbegin; input italic; end 381
0/234567 r 1 * ( I t ( 0 8 3 H P X t h P X A * n * i ) 1 9 A I Q Y a i 1 V e n $ p t * 2 B J R Z b 3 r M A a i o i + S i c K S I c k 8 * B 0 K T P 1 4 < D L T • d I t u n t \ V 8 5 = E M V e in u ¥> L 6 M * 0 6 > F N V f n V 4 r t V X 1 / 7 f 1 G \ O w 9 0 w w Mathematics bookr and journals do not look as beautiful asfhty used to. R is not that their mathematical content is unsatisfactory, rather that the 6ld and well developed traditions of typesetting have become too expensive. Fortunately, it // o w appears that mathematics itself can bt used to solve this problem, in spite of tht fact that tht first edition of jsop'sxuvres isnaave about tht efficient preparation of flawless soufflSs. This is a sample of the font when tht resolution is StOO dot8 pm inch and 8.6 dots per "point ". 382
The file cmi9.mf "Computer Modern Math Italic 9 point"; ph = W> p* = W; ?* = §£; p<* = S£; pb= J$; po= i; ps= if; ppa = .5(ph-pd); p w =^;rPwi = 3§; Pwii = $h Pwiii = 3§; pwiv = ^; pwv = §§; aspect = 1.0; pu _ lg^j JC5= /.054; MC5 = 7.65; 5c = 0;' /* = 0; slant = .25; sqrttwo =sqrt2; fixwidth = 0; halfd = 0; lowast = 0; ligs = 0; mi = 1. input cm base; call font begin; input italic; end 383
0 12 3 4 5 8 7 r * c 1 • e $ r a n T / ; * n e p 9 0 A a t a I + S 0 JG r P 9 n i X V 8 - r 6 i» * & . r € V X t / 0 8 3 H P X 4 h p 2 1 0 A / Q Y a i q V e • B J R Z 6 • 3 r M S i c K S I C k * 3 4 < D L T d I t w 5 = E M V J i:> in u <P 6 > F N V i n « 6 7 f G 0 W 0 0 «0 w Mathematic* book 8 a n d journal* do n ot look a* beautiful an they u*ed to.' It i* not ihat their mathematical wntent i*un*ati* factory, rat her that the old and well developed tradition* of typtMetting have become too expensive. Fortunately, it now appear * that mathetndtic* it$elf can be u*ed to *olve thi* problem , in *pite 0/' the fact that the fir*t edition of +9op'9X*vrei ti naive about the efficient preparation o\ fUmle***oufflS*.Thi*i* a $ ample 0 \ the font when the resolution it 600 dot* per inch and S.6 dotS per ikpointy\ 384
The file cmi8. mf "Computer Modern Math Italic 8 point"; Ph = w, p* = W; p« = $; prf = B; pb=%; po = &; ps = $; pa = .5(ph - pd); p w = &; Pwi = 4f; Pwii — $>■ Pwiii = $>' pwiv = §§; pwv = 3§; aspect = 1.0; Pu = g; Jcs = 1.029; ucs = 1.56; sc = 0; Is = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0; lowast = 0; Jigs = 0; mi = 1. input cm base; call font begin; input italic; end 385
0 12 3 4 5 6 7 r L ♦ ( e t 1 ( 0 8 i H P X 1 t h P * A * 1 w ! ) ] i P A I Q Y a i <t 1 V e n • B J A Z 6 i r 1 * A a i 9 £ + 9 9 C K S f 1 e * 1 8 * s ' ft r ! * / 4 < D L T d I t itt n i X V 9 - 5 - E M U 1 € m u * E * M * & • 6 > F N V / ft V * r e V X » 1 / 1 r f G O W * o * W htathematicB book* and journals do not &o k a* kcaut</<4< *• i^cy u#ed to. It ie not tfcai their mathematical content {9 un*ati*f4cwWXry, rather that the old pnd well developed tradition* o j typeeetting have become too empeneAv*. Fortunately, it now appear* that mathematiee iteelf can be ueed to eolve thie problem, in epite of the fact that the firet of eSeop'e xuvre* i§ namve about thee ffieient preparation of fiaiile** toufflt*. Thie tea* ampkof the font when the reeolution ie BOO dote per inth and 3.6 dote per "point". 386
The file cmi7.mf "Computer Modern Math Italic 7 point"; ph = W; p* = W; p* = i; Pd = &> , pb=S; P° = &; PS=M; pa = .5(ph - pd); P w =j|; pwi = $; pwii = $}; pwiii = §£; pwiv = §§; pwv = §$; aspect = 1.0; pu = £§; ics = .969; ucs = 1.44; sc = 0; Is = .25; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0; iowast = 0; Jigs = 0; mi = 1. input cmbase; call fontbegin; input italic; end 387
0 12 3 4 5 6 7 r * c * t % ( 0 0 J H P X 1 4 k P s A * 1 w ; ; i 9 A / Q Y • < « 9 a /7 • B J R Z 9 J r M A a i> 9 t + a i c K a I 9 k 9 + s fi m. r P » 4 < D L T d 1 1 nr n i X V a - 5 - E M V I 9 m u + r 4 * * 1 & 8 > F N V I » 9 4 r c 9* X 9 1 / 7 f Q O W f o m w Jfcf«t*«mo4U« look* %nd i««ri%«l» do not Joftfc •»»••»*<Jttl •» tfeey u»#4 to. It s» not tk%t ftkoir vrtfttfct- m««M«l «o»tfJt<i#«iMat»tS*«lory, ratJW tfc«t>tfct «/</ «»•* vWJ 4c«c!o?f 4 tr •4»<t'ofM of iM»<HU|Uf< »tiomi too • *••»#<»«. Fortu»mt9lw, it now mpp9%T9 that fi»«t»«m«tio#tt#tl/e«fi •«»••«' ♦D • olvrtki* pro9Um,in 9pit* 9J Ik* /«•< tfct/i>»t •tftttfo* • f ^tofp't x*vr«t f* »mo« •lo«ttfc« •//ief«»f preparation ©/ /Itnliti •o»//Mt. 7fci> tf » • • a m P I r ojf t*t /o»l »»•» <*• rt»olMt»0» *# 100 *o«f ptr <»•* «»•* 8.6d*t9 p9t "point". 388
The file cmi6. mf "Computer Modern Math Italic 6 point"; ph = 4f; px=l; pe = &; pd = $; pfc = 8; p° = &; p5 = S; Pa = -5(ph — prf); Pw = A; pwi = ^g; pwii=$; pwiii = §£; pwiv = ^§; pwv = §£; aspect = 1.0; pu = ^; ks = .89; ucs = 1.43; sc = 0; is = $; slant = .25; sgmwo = sqrt 2; fixtvidth = 0; halfd = 0; lowast = 0; ligs = 0; mi = 1. input cm base; call fontbegin; input italic; end 389
0 12 3 4 5 8 7 ( 0 i i H P X I « k 9 1 0) ; i # X 1 * r #> i • V * n $ p m • J • 0 J II X ft / r m A m » # £ + f j cr JC B I • * • 4 < O L T 4 1 f m n i X « • - » - E hi V J 0 m » r ■' r # » ! + m • t > F N Y f * « # r « ¥ X » 1 / 7 9 a o IT f • 19 w MatfcftMite* *••*• «W ##mr»«U 4# »#i Umk • • ,M«»t4f«f »j fJUf »•** t#. It it »*t V k+i tkilt m+tk*mim,tU*l 0#»t0»l i« m»0»ti«/»*f •?*, r»ffc«r f fc«t tfc* #14 «»4 W0lJ 4#«0f#»f>*4 tr»4iti«»« *f tf 0>0««tt4»f te«0 ft****** ••* 00)f)0»0i«0. F* *#••>•** If/* It *>•• »•>»«•?• f*>«4 *j»*>f&*«**>#<«• iltvl/ #*>» ft* m««4 •* ••!#* #Jk<* p>r**f*fit, in *9it* • / it* f*t • *,*>* f fc* fir*t *«Uti*» •/ *)*•*>'• X««r00 <• »»*«* 4ft*mt f ** • //<•<*»*. »ffp»»r»ll*» • //b^Ufi **mf/fl*. TkU I* * • «.m*>l« • / tfc* f*»l •&•» tfc* r**#l«ti*«. to f#* *T*f« *>*r i«*fc *)»4 l.riftitir **••*•>•''• i90
The file cmi5. mf "Computer Modern Math Italic 5 point"; Ph = w, p* = §8; pe = f; p<* = 3§; pb = |g; po = &; ps = $; pa = .5(ph — pd); pw = i; pwi = M; pwii = $; pwiii = $; pwiv = $;pwv = j§; aspect = 1.0; pu = i^; ks = .84; ucs = 1.32; sc = 0; Is = 10/12.5; slant = .25; sqrttwo = sqri 2; fixwidth = 0; halfd = 0; lowast = 0; ligs = 0; mi = 1. input cm base; call fontbegin; input italic; end 391
0 12 3 4 5 6 7 — e j. r**s • <= ; 1 V / j 1 M 1 P X j H { V 1 1 • e — « - =► 00 3 / / C y H j ) # T X 0 c c t ir € -1 B J Z Z L 1 V 1 * 0 2 D i 4 € K c K $ U J II / It \ 0 < * ** «=* t R V L r n r > 1 u a o • > ± < 1 - 3 £ M U (si 1 1 n © ± T < •< > r z T j 7 M y A { A £ £ =F | • y >■ /v^ 1 h-* 1 / Q 0 \ w 1 V I } II V $ 1 _]l ^Hu(lHu)J/ Lvvll/ HAr lynvAHI/ [v avu IvvlH/ LHnu){nl H/ udt n/ir uvr JU}/avu u(hu u(l)v HudlHu) /HU)/{HJUvVt* VHLH1V UHU U(l vir HAf 1 AU )/ nA1 If UVHH1 W>Q-Wl li(Hu iHuniHu)J/ )u/1ft JHA n n/Tf Uv\ / vie. u(}/ v^vllll^ )A /V)Ul v{ u(l {HJu u(Hu u(l i)Viu 1F)d)vA v,{ u)va/ vi uty]/luu)A} |H£i nivll uvv liyiA/ycir 7vvunAHul[t< )u AV HvVHy/ u(hu JHuniHu)j/ )u/lf{ JHA h n/T{ Uvv ./via -</vv^/ >nQV]A)l AHg£l HLvnu u(l 1{{)J)1au >/vvhvhu)vA v( (Mil// /vn{{|ft/r 70/)/ H /HM1 v( urt {vau (1a uff vi/vim u)va )/ en rvu/viv )aj( HAf erz Tvu/ Vfv h-K/v)Au^r 392
The file cmsy 10. mf "Computer Modern Symbols 10 point"; ph = W; px pe = pd = 58; pb = % po = ^; ps = §g; pa = .5(ph — pd); p^= &; p™ = $; Pwii = 1; pwiii = §g; pwiv = §§;pwv = ^; aspect = 1.0; pu = §g; lcs = 1.075; ucs = 1.7; SC = 0; Js = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0. input cmbase; input symbol; texinfo 0, 228/36, 113/36, 162/36, 244/36, 108/36, 141/36, 130.9/36, 104/36, 54/36, 99/36, 142/36, 18/36, 23.9, 10.1, pa; end call fontbegin; % math spacing should be variable % numerator baseline in displays % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atops % denominator baseline in displays % denominator baseline in nondisplays % superscript baseline in unmodified displays % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxes % baseline offset for subscripted large boxes % size of \comb delimiters in displays % size of \comb delimiters in nondisplays % axis height LI 1 1 1 1 1 1 1 J N HI 1 1 1 1 l\> >r- J\ I 1 1 1
0 12 3 4 5 8 7 '000 '010 '020 '030 '040 '050 '060 '070 '100 '110 .120 '130 '140 .150 '160 '170 — © X »"W ♦- *= / V 1 /I U P X h- { V § • e = « - =► 00 3 A J Q y H > # t X 0 Q c t ir € T 8 J R Z I V [ 1 • 0 2 D i 4 1 € K 1 c | X 5 u J / 1 1 \ 0 < * ♦♦ ** 1 • K * 1 Z, r n r I u 0 e -t- > =!= < <\ 1 - 1 9 £ 1 M U W 1 1 n © ± T -< -< > r / 1 T / | M V A { A E £ =f | • 1 >: 1 >■ rs^ 1 w- 1 / 1 v | o 1 V 1 V } J V $ JHufll-ju)!/1 vvjl/ HAf lynvA-iy (v n/l| Uvr Aj )/ Ayn uHU Uf|)V 1-|U {Hjuvvt* v-HudvTu" UM/1UU)A} )a Mul ahSc )/H/ , *r^ fvu/ . y M/UHnu {nn; unt [ctlvvir uy-ihu)yA/ vj vunAHuTIt*» |u Ay - uv/vltLuQ/ >/Vy u)va v{ -</v>/^/ >-nc rut J\v hhVv)Au=^r 394
Tile file cmsy9. mf "Computer Modern Symbol8 9 point"; ph = 1$; px = ^; pe = %; pd=%; pb = $; po = £; ps = $; pa = .5(pJi — pd); pw = &; pwi = $; pwii = §§; pwiii = $; pwiv = $;pwv = §g; aspect = 1.0; pu = i^;lcs= 1.05; ucs = 1.65; s c = 0; is = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0. input cmbase; input symbol; texinfo 0, 221/36, 104/36, 146/36, 237/36, 92/36, 129/36, 110.9/36, 93/36, 36/36, 81/36, 126/36, 18/36, 23.9, 9.1, p*; end call fontbegin; % math spacing should be variable % numerator baseline in displays % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atops % denominator baseline in display8 % denominator baseline in nondisplays % superscript baseline in unmodified display8 % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxes % baseline offset for subscripted large boxes % size of \comb delimited in displays % size of \comb delimiters in nondisplays % axis height 395 -•1 111 1 111 -1 1*7 i\ \\\\\\\f\ 1 1 |\KT,'m. Ill ^HBFi 1 1 1—r i t 1 **y I I 1 I I 1 1 1 11 1 1 1 1 1 1
0 — e ± *>^ 1 • e = (=a 2 X ® C c 3 • 0 2 D 4 \ 0 £ 7* 5 0 + £ * 6 ± T ^ -< 7 =F • fc >- 1" - 1 - i V / M P X \- ( \ J - 1 -> oo 3 J( / a y H > * t t € -1 B J R Z L 1 v 1 4 € H C X s u J II / 1 ~ 1 «* # R P L T n r 1 u < 1 - 9 £ A u u 1 1 n > t L T 7 M y A < A c ^w H* / | 6 0 w V } ] V 1 t 1 1 1 0 © £ $ 396
The file cmsy8. mf "Computer Modern Symbols 8 point"; ph = ^?; p* = W; Pe = ^; p<* = li; Pb=§; po = ^; ps = ^§; pa = .5(ph— pd); pw = &; Pwi = Si; Pwii = $; p*™ = 1; pvviv = §£; pvw = jjjj; aspect = 1.0; pu = $; ics= 1.03; ucs = 1.56; sc = 0; Is = 0; slant — 25; sqrttwo — sqrt 2; fixwidth = 0; halfd = 0. input cmbase; input sym bo 1; texinfo 0, 189/36, 95/36, 137/36, 203/36, 76/36, 113/36, 104/36, 82/36, 36/36, 72/36, 110/36, 18/36, 11.9, 9.1, pa; end call fontbegin; % math spacing should be variable % numerator baseline in displays % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atop8 % denominator baseline in displays % denominator baseline in nondisplays % superscript baseline in unmodified displays % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxes % baseline offset for subscripted large boxes % size of \comb delimiters in displays % size of \comb delimiters in nondisplays % axis height / / / / / / tl 1 ! ' / p CP V \ \ ^ft JJM / 1 / / i • --« / •/- 1 i\ oJ A A 397
01234567 — e • ± ~ - ■*■ / V 1 / X p X h- | < 1 V 1 • e - w - "* ao A I a y H > # t X 0 £ c t i t € - B J R Z L V t • 0 D D i JL € M C K S U [ J II i * \ ] © < * *-¥ ** $ P L r n r 1 u o o 1 + £ - < «l - a £ X U 1 1 n ® ± T ^ -< > r z T 7 Jf > A < A - £ =F 1 • fc >- /h/ i *""* I 0 0 i V V > V $ /V)ul vl Ul {HJU U<HU LK ^ggp^^tlivW^^f^/ tffl«OTIK r&*W 398
The filecmsy7. mf "Computer Modern Symbols 7 point"; ph = ^; px=^; Pe = §£; pd = §; pb= g; po= £; ps = ^; pa = .5(ph — pd); p w = &; Pwi = 3£; Pwii = M; Pwii = §8; pwiv = $;ptw = §|; aspect = 1.0; pu = £g; ks = .97; ucs = 1.44; SC = 0; Is = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; haifd = 0. input cmbase; input symbol; texinfo 0, 169/36, 86/36, 121/36, 182/36, 85/36, 93/36, 84/36, 72/36, 36/36, 72/36, 94/36, 18/36, 11.9, 8.1, pa; end call fontbegin; % math spacing should be variable % numerator baseline in display8 % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atops % denominator baseline in displays % denominator baseline in nondisplaye % superscript baseline in unmodified displays % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxes % baseline offset for subscripted large boxes % size of \comb delimiters in displays % size of \comb delimiters in nondisplays % axis height \N \\\\\w\ \ \ A I.J. ._L— I 1 "t /l L—L\ feVftST7! I • • /i 399
0 12 3 4 5 6 7 — e 1 ± l - ^ 1 y / X p 1 X h- { l ^ ' • e - m* 1 -♦ oo 3 A / ° i y H ) * 1 X ® c c t t € —i * J * 1 X ' ' * i II t I * 0 i 2 ^ i 4 * K C X s u J ' 1 1 \ © 1 < 7* «-► ^ 0 R D 1 r n r i u Q o + ± T =F • * I * 1 * *b <: ^ - 9 * A U bJ 1 1 1 -< » r z T 7 M y A { A c 1 >- | sst »—» / * 0 w V } V ® £ t pv/ut JPjM)y£ v< -</W«/ >-ncvi/)/ a-h^EI -U vnu u(l 1«)1)1au v^V-HV-lujvA vt <IH[V/ 400
T:ie file cmsy6 .mf "Computer Modern Symbols 6 point"; ph = ^; px=i; pe=§4; Pd=§; Pb=§i P° = &J Ps=4i; pa =-5(ph — pd); pw = £; pwi = |§; pwii = $; pwiii = gg; pwjy = §g; p>w = §§; aspect = 1.0; pu = ^; Jcs = .89; ucs ===== 1.43; sc = 0; Is = 0} slant = .25; sqrttwo = sqrt 2; /bcwidth== 0; haifd = 0. input cmbase; input symbol; texinfo 0, 150/36, 77/36, 112/36, 162/36, 94/36, 81/36, 72/36, 62/36, 36/36, 72/36, 78/36, 17/36, 11.9. call fontbegin; pa; end % math spacing should be variable % numerator baseline in displays % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atops % denominator baseline in displays % denominator baseline in nondisplays % superscript baseline in unmodified displays % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxes % baseline offset for subscripted large boxes % size of \comb delimiters in displays % size of \comb delimiters in nondisplays % axis height ("iTl I 1 ' II 1 U hW\ \M Mffl rrrMrn i i 1 i i \l/ i i i l i i i liiii 11 i 1 401
0 12 3 4 5 6 7 — e i » 1 - • e - Ml —» X * C c t - i - * 1 i V / * 1 ' 1 r 1 H 1 ( 1 v 1 i oo 3 i I a y H ) # t 1 € -* J J * M L 1 V 1 ' ' • o 2 D 4 4 € * * * f U J i ; j * * \ o £ * ** ♦♦ # ft p L T n r i u o | o -t- i ^ < 1 - • e A V y 1 1 j n • ' ± T * -< > r z T 7 | M y A < A C ■"' ^ • 1 fc >- at 1 !-♦> 1 / * O w 1 V 1 > V 1 Ld / HAr ivnvAHIi rv a W»TO 3W LKll* 402
The file cmsy5. mf "Computer Modern Symbols 5 point"; p* = W; p* = $; p* = #; p<* = $; P*> = fi; P°= A; Ps = $i pa = .5(ph - pd); pw = i;pwi = fi;pwii = 4§j pwiii = $; pwjV = 4§jpwv = §g; aspect = 1.0; pu = >j£) ks = .84; ucs = 1.32; sc = 0; Is = 0; slant = .25; sqrttwo = sqrt 2; fixwidth = 0; haJfd = 0. input cmbase; input symbo 1; texinfo 0, 130/36, 68/36, 103/36, 142/36, 103/36, 69/36, 60/36, 53/36, 36/36, 72/36, 62/36, 16/36, 9.9, 7.1, pa; end call fontbegin; % math spacing should be variable % numerator baseline in displays % numerator baseline in nondisplays, nonatops % numerator baseline in nondisplay atops % denominator baseline in displays % denominator baseline in nondisplaye % superscript baseline in unmodified displays % superscript baseline in unmodified nondisplays % superscript baseline in modified styles % subscript baseline when superscript absent % subscript baseline when superscript present % baseline offset for superscripted large boxers % baseline offset for subscripted large boxee % size of \comb delimiters in displays % size of \comb delimiters in nondisplays % axis height 403
0 12 3 4 5 6 7 ( 1 ( 1 * 1 1 { ( ( ' 1 / E E 1 ° V ► ) I ) 1 ) } ^ 1 ; / n n o n/ 1 v [ < ( { 1 ( [ I ' 1 o / / O si * ) ) ) 1 ) i ) 1 o u u V N L [ ( I / I \ © n n *CN N ^ j ] > J J \ © u fe) nn \ • r / [ / f CM 1 ■ U 0 V V €JtJ r Lg_ j / i no 1 u ® A A V3A LsJ
The file cmathx. mf "Computer Modern Math Extension Font"; ph = W> p* = W; p* = $; p<* = 1; pi> = 1; Po = 3&; P« = §§; P^ = -5(ph — pd); pw = ^; pwi = §|; pwii = §g; pwiii = $; pwiv = j|§;pwv = §§; aspect = 1.0; pu = $; ks = 1.075; ucs = 1.7; SC = 0; Is = 0; slant = 0; sqrttwo = sqrt 2; fixwidth = 0; halfd = 0. input cmbase; call fontbegin; input mathex; texinfo 40/36, 60/36, 108/36, 252/36, 108/36. end % minimum glue space above large displayed operator % minimum glue space below large displayed operator % minimum distance to baseline of upper limit % minimum distance to baseline of lower limit % extra padding above and below displayed limits
INDEX For each character code number, this index lists all pages that define a character having that code. An entry like "romext" means that the code is not defined for the roman font in this report, but it could be defined as a nonstandard character in the romext extension font. ' '000: 27,201,273. T)01: 27,201,275. -002: 29,201,277. t)03: 29,203,279. t)04: 31,203,281. T)05: 31,203,281. -006: 33,203,283. t)07: 35,205,283. t)10: 35,205,285. t)ll: 37,205,287. t)12: 37,205,289. t)13: J05,175,197,205.291. t)14: 105,175,197,205,291. 1315: 119,177,207,291. t)16: 119,177,207,293. t)17: 119,177,207,mexext(313). t)20: 119,177,207,273. m\: 119,179,207,275. D22: 121,179,209,273. t)23: 121,179,209,275. t)24: 121,179,209,277. t)25: 121,137,179,209,279. '026: 121,137,181,209,281. mi: 123,181,211,281. t)30: 123,181,211,283. t)31: 123,139,183,211,283. t)32: 123,139,183,211,285. t)33: 105,183,199,211,287. t)34: 107,183,199,211,289. t)35: 109,183,199,213,291. t)36: 125,185,213,293. t)37: 127,185,213,mexext(313). t)40: 133,139,189,213,273. D41: 109,215,275. t)42: 133,139,189,215,277. '043: romext, ittext,139,189,215,279. t)44: romext. ittext.141,191,217,281. t)45: 129,191,217,283. t)46: 93,165,217,283. t)47: 111,217,283. "050: 111,219,285. t)51: 111,219,287. t)52: 113,219,291. t)53: 113,221,291. t)54: 113,221,293. t)55: 135,141,191,223,mexext. t)56: 115,223,mexext(315). D57: 115,223,mexext(317). D60: 93,165,225,273. t)61: 95,167,225,275. t)62: 95,167,225,277. t)63: 97,167,225,279. t)64: 97,169,227,277. t)65: 99,169,227,279. t)66: 99,169,227,279. t)67: 10l,171,symext,281. t)70: 101,171,227,285. W\: 103,173,227,289. D72: 115,227,285. t)73: 115,229,289. t)74: 115,231,287. t)75: 117,233,289. D76: 117,233,287. t)77: I03,173,symext,mexext. '100: 135,141,193,233,273. '101: 39,251,275. '102: 39,253,273. '103: 41,253,277. '104: 4l,253,mexext. '105: 43,255,mexext. •106: 45,255,295. '107: 47,255,297. ' 110: 49,257,297. 'Ill: 49,257,297. '112: 49,257,297. '113: 51,259,299. '114: 51,259,299. 115: 53,259,299. '116: 53,261,299. '117: 55,261,299. '120: 55,261,301. '121: 57,263,303. '122: 59,263,305. '123: 61,263,305. '124: 63,265,307. '125: 63,265,307. '126: 65,265,309. '127: 65,267,309. '130: 67,267,301. '131: 67,267,303. '132: 69,269,305. '133: 117,233,305. '134: 135,143, itmext,235,307. '135: 117,235,307. '136: 135,143,1 tmext,235,309. '137: 137,143,1 tmext,235,309. '140: 117,235,mexext(319). '141: 69,149,237,mexext(319j '142: 71,149,237,mexext(319] '143: 71,151,237,mexext. '144: 73,l5l,237,mexext(315] '145: 73,151,237,mexext(319 '146: 73,151,237,mexext(317 '147: 75,153,239,mexext(319] '150: 77,153,239,mexext. '151: 77,153,239,mexext. '152: 77,153,239,mexext. 153: 79,155,239,mexext. '154: 79,155,239,mexext. '155: 79,155,239,mexext. '156: 81,155,symext,mexext. '157: 81,157,symext,mexext. '160: 81,157,241,311. '161: 83,157,241,311. '162: 85,159,241,311. '163: 85,159,243,311. '164: 87,159,243,313. 165: 87,161,243,313. '166: 89,161,243,313. '167: 89,161,symext,mexext. '170: 91,163,245,293. '171: 91,163,245,293. 172: 91,163,245,295. 173: 129,143,185,193,245,295. 174: 131,143,185,193,247,295. 175: 131,145,187,195,247,295. 176: 131,145,187,195,249,mexext(32l). 177: 133,145,187,197,249,mexext(323). a- 406