/
Text
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