diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/utilities/mff-29/dkalpha.mf |
Initial commit
Diffstat (limited to 'fonts/utilities/mff-29/dkalpha.mf')
-rw-r--r-- | fonts/utilities/mff-29/dkalpha.mf | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/fonts/utilities/mff-29/dkalpha.mf b/fonts/utilities/mff-29/dkalpha.mf new file mode 100644 index 0000000000..72085e0f33 --- /dev/null +++ b/fonts/utilities/mff-29/dkalpha.mf @@ -0,0 +1,351 @@ +%{{{ dkalpha.mf - alphabetic characters for Ditko +% Copyright (C) 1990 Damian Cugley +% - pdc Tue. 25 Sept. 1990 + +%{{{ Macros +% Macros to allow me to read this file twice, the second time filling in +% any uppercase letters that aren't already defined. +% pdc - 13-Dec-90 + +% Given a character number or one-character string, return a +% single-character string that is its uppercase equivalent: +vardef toupper primary ch = + save __ch; __ch = byte ch; + if (__ch > 96) and (__ch < 123): + char(__ch - 32) + else: + char(__ch) + fi +enddef; + +% The first time this file is read, force all letters created to be +% uppercase. In the second pass, lowercase and/or uppercase will be +% produced: any uppercase will override the glyph produced in the first +% pass. +if testing or (known __stalpha_loaded): + vardef uch primary ch = ch enddef; +else: + vardef uch primary ch = toupper ch enddef; + __stalpha_loaded = 1; +fi +%}}} Macros + +%{{{ u + +stdchar(uch "u", 12 + jut#/u#, 1, 0); + pickup round_pen; + istem_pts.stem(r - 2jut - penw, h, -d); + ubowl_pts.bowl(l, r - jut); + cutdraw ubowl_path.bowl; + pickup square_pen; + draw z.stem.top -- z.stem.bot -- top lft (r, baseline); + %%%% draw ujut_path.bowl; +endchar; + +%}}} + +if testing: endinput fi + +% - pdc Tue. 25 Sept. 1990 +%{{{ t + +stdchar(uch "t", 12, 1/2, 1/2); + pickup square_pen; + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + top y1 = top y2 = top y10 = h; + bot y0 = bot y3 = bot y10 - dip_dp; + lft x0 = lft x1 = l; rt x2 = rt x3 = r; + x10 = x11 = 1/2[x1, x2]; + bot y11 = -d; + draw z0 -- z1 -- z2 -- z3; + draw z10 -- z11; + labels(0,1,2,3,10,11) +endchar; +%}}} +% - pdc Wed. 26 Sept. 1990 +%{{{ s + +talldipchar(uch "s", 12, 1, 1); + save superosity; superosity = 0.8; + pickup round_pen; + top y1 = cap_ht; top y0 = h; + bot y5 = baseline; bot y6 = -d; + rt x1 = rt x0 = hround(r - 1/2u); % top right + lft x5 = lft x6 = hround(l + 1/2u); % bottom left + z3 = 1/2[z1, z5]; % middle + y2 = 1/2[y1, y3]; lft x2 = l; + y4 = 1/2[y3, y5]; rt x4 = r; + x1a = x5a = x3; y1a = y1; y5a = y5; + draw z1 --- curve_vhalf_path(z1a, z2, z3) + & curve_vhalf_path(z3, z4, z5a) --- z5; + pickup square_pen; draw z0 -- z1; draw z5 -- z6; + labels(0, 1, 1a, 2, 3, 4, 5a, 5, 6); +endchar; +%}}} +%{{{ o +stdchar(uch "o", 12, 1/2, 1/2); + pickup round_pen; + top y1 = h + o; bot y3 = -d - o; + y0 = y2 = 1/2[y1,y3]; + lft x2 = l - o; rt x0 = r + o; + x1 = x3 = 1/2[x0,x2]; + draw curve_cycle(z0, z1, z2, z3); + labels(0,1,2,3) +endchar; +%}}} +%{{{ n +stdchar(uch "n", 12 + jut#/u#, 0, 1); + pickup round_pen; + istem_pts.stem(l, h, -d); + nbowl_pts.bowl(l + jut, r); + cutdraw nbowl_path.bowl; + pickup square_pen; draw istem_path.stem; +endchar; +%}}} +%{{{ m +stdchar(uch "m", 16, 1, 1); + pickup round_pen; + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + nbowl_pts.bowl(1/2[l,r] - 1/2penw, r); + bot z.foot = (1/2[l,r], baseline); + cutdraw nbowl_path.bowl; + cutdraw nbowl_path.bowl reflectedabout (z.foot, z.bowl.j); + pickup square_pen; draw z.foot -- z.bowl.j; + labels(foot); +endchar; +%}}} +%{{{ h +tallchar(uch "h", 12 + jut#/u#, 0, 1); + pickup round_pen; + istem_pts.stem(l, h, -d); + nbowl_pts.bowl(l + jut, r); + cutdraw nbowl_path.bowl; + pickup square_pen; draw istem_path.stem; +endchar; +%}}} h +%{{{ i +stdchar(uch "i", (penw# + jut#)/u#, 0, 1); + pickup square_pen; + istem_pts(l, h, -d); + draw istem_path; +endchar; +%}}} i +%{{{ c +stdchar(uch "c", 11, 2/3, 1/2); + pickup round_pen; + cbowl_pts(l,r); cutdraw cbowl_path; +endchar; +%}}} c +%{{{ e +dipchar(uch "e", 11 + 1/2jut#/u#, 1/2, 1/2); + pickup round_pen; + cbowl_pts.curve(l + 1/2jut, r); cutdraw cbowl_path.curve; + pickup square_pen; + lft z1 = (l, 1/2[baseline, cap_ht]); + y2 = y1; x2 = x.curve1 - 2 * xpart pen_adj; + draw z1 -- z2; + labels(1,2); +endchar; +%}}} +% - pdc 27th Sept. 1990. +%{{{ j +Dipchar(uch "j", (jut# + penw#)/u#, 0, 1); + pickup square_pen; + istem_pts(l, h, baseline); jtail_attach(); + draw jstem_path; + pickup round_pen; cutdraw jtail_path; +endchar; +%}}} +%{{{ g +Dipchar(uch "g", 11, 1/2, 1/2); + pickup round_pen; + cbowl_pts(l,r); cutdraw cbowl_path; + istem_pts(r - jut - penw, vround(1/2[baseline,cap_ht]), -dip_dp); + jtail_attach(); cutdraw jtail_path; + pickup square_pen; draw jstem_path; +endchar; +%}}} +%{{{ p +stdchar(uch "p", 11 + jut#/u#, 0, 1); + pickup square_pen; + istem_pts.stem(l, h, -d); draw istem_path.stem; + pickup round_pen; + pbowl_pts.bowl(l + jut, r, 0.333[baseline, cap_ht]); + pbowl_draw.bowl; +endchar; +%}}} +%{{{ d +stdchar(uch "d", 11 + jut#/u#, 0, 1); + pickup square_pen; + istem_pts.stem(l, h, -d); draw istem_path.stem; + pickup round_pen; + pbowl_pts.bowl(l + jut, r, top baseline - o); + pbowl_draw.bowl; +endchar; +%}}} +% - pdc Sun. 30 Sept. 1990 +%{{{ f +Dipchar(uch "f", 10 + jut#/u#, 0, 1/2); + pickup square_pen; + istem_pts(l, h, -d); jtail_attach(); + % Define points at right of top bar: + y1 = y.jut; rt x1 = rt x2 = r; bot y2 = bot y1 - dip_dp; + % Define points for bottom bar: + y3 = y4 = good.y 0.4cap_ht; bot y5 = bot y4 - dip_dp; + lft x3 = hround(lft x.top - 1/2jut); rt x4 = rt x5 = hround(r - jut); + draw jstem_path; draw z.jut -- z1 -- z2; + % draw z3 -- z4 -- z5; + draw z3 -- z4; + pickup round_pen; cutdraw jtail_path; + labels(range 1 thru 5); +endchar; +%}}} +%{{{ L +talldipchar("L", 12 + jut#/u#, 0, 1/2); + pickup square_pen; + istem_pts(l, h, baseline); + y1 = y.bot; rt x1 = rt x2 = r; bot y2 = -d; + draw istem_path -- z1 -- z2; + labels(1,2); +endchar; +%}}} +%{{{ l +tallchar(uch "l", 12 + jut#/u#, 0, 1/2); + pickup square_pen; + istem_pts(l, h, baseline); + y1 = y.bot; rt x1 = rt x2 = r; top y2 = top y1 + dip_dp; + draw istem_path -- z1 -- z2; + labels(1,2); +endchar; +%}}} +% - pdc Sun. 30 Sept. 1990 + +%{{{ a +% Trying to get the spine to work in odd situations took some work: +stdchar(uch "a", (15u# - agap# + jut#)/u#, 1, 0); + z1r = (l + agap, h); % where top corner goes + z2c = (r - jut, baseline + penh); % used to get angles right + z1l - z1r = z2l - z2r = 2 * penoffset (z2c - z1r) of currentpen; + z1 = 1/2[z1l, z1r]; z2 = 1/2[z2l, z2r]; + z2r = z1r + whatever * (z1r - z2c); % where bot corner goes + y2l = baseline; + fill z1r -- z2r -- z2l -- z1l -- cycle; % draw spine + + pickup round_pen; + z.centre = z.centre' + jut*right = 1/2[z1, z2]; + bot lft z.botleft = bot lft z.botleft' - jut*right = (l, baseline); + draw curve_qtr_path(z.centre', z.botleft) --- + curve_qtr_path(z.botleft', z.centre) --- cycle; + pickup square_pen; + drawdot z.botleft; + + top lft z1b + ajut*right = top rt z1a = z1r; + bot rt z2b = (r, baseline); bot lft z2a = z2l; + draw z1a -- z1b; draw z2a -- z2b; + labels(2c, forsuffixes $ = 1,2: $a, $b, $, $l, $r, endfor + centre, centre', botleft, botleft'); +endchar; +%}}} +%{{{ oo +ifcode oo: + vardef circ@#(expr leftx, topy) = + top y@#h = vround topy + o; bot y@#hh = vround (topy - 9u) - o; + lft x@#v = hround leftx - o; rt x@#vv = hround (leftx + 9u) + o; + y@#v = y@#vv = 1/2[y@#h, y@#hh]; + x@#h = x@#hh = 1/2[x@#v, x@#vv]; + draw curve_cycle(z@#v, z@#h, z@#vv, z@#hh); + enddef; + + stdchar(code.oo, 18 + 1/2space#/u#, 1/2, 1/2); "oo ligature"; + pickup round_pen; + circ1(l, h); circ2(l + 9u + 1/2space, 9u); + endchar; +fi +%}}} +%{{{ ll +ifcode ll: + vardef elle@#(expr leftx) = + istem_pts@#(hround leftx, h, -d); + y@#a = y@#bot; rt x@#a = hround(leftx + 9u); + draw istem_path@# -- z@#a; + labels(@#a) + enddef; + + tallchar(code.ll, 18 + (space# - jut#)/u#, 0, 1/2); "ligature LL"; + pickup square_pen; + elle1(l); elle2(l + 9u + space - jut); + endchar; +fi +%}}} + +%{{{ R +% I need a quick-&-dirty "R" to do the Fred & Daniel banner +% Will do a better-looking one later +% - pdc Mon. 8 Oct. 1990 +stdchar(uch "r", 12 + jut#/u#, 1/2, 1); "Hackjob R"; + pickup square_pen; + istem_pts.stem(l, h, -d); draw istem_path.stem; + pickup round_pen; + pbowl_pts.t(l + jut, r - u, 0.5[baseline, cap_ht]); + pbowl_draw.t; + bot rt z.tail = (r, baseline); lft z.tj = lft z.tail + jut*left; + cutdraw z.t.hh -- z.tj -- rt z.tail; + labels(tj,tail); +endchar; +%}}} +% - pdc Tue. 16 Oct. 1990 +%{{{ y +Dipchar(uch "y", 12, 1/2, 1); + pickup round_pen; + z.t = (l + nindent, h); % top + y.v = 1/2h; y.j = h - njoin; + lft x.v = l; rt x.j = r; + bot y.h = baseline - o; x.h = 1/2[x.j,x.v]; % bot of bowl + labels(j, h, v, t); + cutdraw z.j{(z.h - z.j) yscaled 2} ... {(z.h - z.j) yscaled 0}z.h + & curve_qtr_path(z.h,z.v) .. z.t; + pickup square_pen; + top rt z.tl.t = (r, h); + bot rt z.tl.b = (r, -d); + bot lft z.tl.f = (1/2[r,l],-d); + draw z.tl.t -- z.tl.b -- z.tl.f; + labels(tl.t,tl.b,tl.f); +endchar; +%}}} + +%{{{ v +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% - pdc Sat. 12 Jan. 1991 +stdchar(uch "v", 12 + jut#/u#, 0, 1/2); + numeric mid; mid = l + 5.5u; + + % points of the topleft serif: + z0 = z1 + penh*up = (l, h); + z2 = z1 + penw * right; + z5 = z0 + whatever * right; + + % points on the diagonal: + z3 = (hround (mid - u), 0); + numeric theta; theta = angle(z2 - z3); + z5 - z5a = z3a - z3 = 1/2[penh, penw] * dir (theta - 90); + z5 - z3a = z5a - z3 = whatever * dir theta; + + % points on curve to right: + z10 = z11 + penw * right = (r, h); + z13 = z13a + penh * down = (mid, 0); + numeric sup; sup = 0.7; + z14 = sup[(x13a, y11), (x11, y13a)]; + z15 = sup[(x13, y10), (x10, y13)]; + + pickup pencircle scaled 2; + fill z5 -- z0 -- z1 -- z2 -- z3 -- z13 -- z3a -- cycle; + fill z10 -- z11{down} ... z14{z13a - z11} ... {left}z13a + -- z13{right} ... z15{z10 - z13} ... {up}cycle; + labels(0, 1, 2, 3, 3a, 5, 5a, 10, 11, 12, 13, 13a, 14, 15); +endchar; +%}}} +%}}} dkalpha.mf + +%Local variables: +%fold-folded-p:t +%End: |