%%%%%%%%%%%%%%%%%%%%%% xnshbase.mf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % base file for extended NASH % 13.07.98 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (c) Klaus Lagally % Institut fuer Informatik % Universitaet Stuttgart %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if unknown cmbase: else: errhelp "you are using 'cmbase'; rerun with base=&plain"; errmessage "this font needs the 'plain' METAFONT base; run aborted"; endinput fi; if unknown nashcode: input xarbsymb fi; xnshbase := 1; def font_setup = define_pixels(dx, dy, dp, em, ex); define_blacker_pixels(px, py, spx); pa := pen_angle; pl := px++py; da := pa - angle(px,py); pickup pensquare xscaled px yscaled py rotated pa; % pickup pencircle xscaled px yscaled py rotated pa; nash_pen := savepen; pickup pencircle scaled spx; dia_pen := savepen; enddef; def makegrid(text r) = for x=0 step dx until w+.5dx: for y=0 step dy until h+.5dy: fill unitsquare shifted (x,y); endfor; for y=dy step dy until d+.5dy: fill unitsquare shifted (x,-y); endfor; endfor % for y=0,h,-d: r((0,y), (w,y)); endfor % for x=0,w: r((x,-d), (x,h)); endfor maketicks(r); enddef; %%%%%%%%%%%%%% char-macros %%%%%%%%%%%%%%%%% def arabchar(expr code, form, uw, uh, ud) = beginchar(if string code: code else: (code + form) fi, uw*dx#, uh*dy#, (ud + dia_d)*dy#); pickup nash_pen; if .5w <> good.x .5w: change_width; fi x.l = x.ll = 0; x.r = x.rr = w; x.m = 0.5w; bot y.l = bot y.r = y.m = bot y.ll - .5ex = 0; y.rr = y.ll; enddef; def diachar(expr code, uw, uh) = beginchar(code, uw*dx#, (uh+0.5)*dy#, 0.5*dy#); % beginchar(code, uw*dx#, uh*dy#, 0); pickup dia_pen; if .5w <> good.x .5w: change_width; fi lft x.l = 0; rt x.r = w; y.l = 0.5dy; y.r = h - dy; % bot y.l = 0; top y.r = h; enddef; def numchar(expr code) = beginchar(code, 10*dx#, 10*dy#, 5*dy#); pickup nash_pen; if .5w <> good.x .5w: change_width; fi lft x.l = 0; rt x.r = w; bot y.l = -d; top y.r = h; % bot y.l = 0; top y.r = h; enddef; extra_endchar := extra_endchar & "penlabels(l,m,r,ll,rr,range 1 thru 20);"; %%%%%%%%%%%%%% dot-macros %%%%%%%%%%%%%%%%% def put_dot (suffix $) = z.$1 - z.$2 = (0, px - py) rotated pa; z.$ = .5[z.$1, z.$2]; draw z.$1--z.$2; labels($1,$2); enddef; def one_dot (expr n) = x.dd := x.m; y.dd := y.m + round(n*dy); put_dot(dd); enddef; def two_dots (expr n) = x.dr - x.m = x.m - x.dl = round(dpx*dx); y.dl = y.dr = y.m + round(n*dy); put_dot(dl); put_dot(dr); enddef; def three_dots (expr n) = two_dots(n); one_dot(n+dpy); enddef; def three_dots_low (expr n) = two_dots(n); one_dot(n-dpy); enddef; %%%%%%%%%%%%%% stroke-macros %%%%%%%%%%%%%%%%% def bow (expr u, v, w) = draw u..controls v and v..w; enddef; def l_att (suffix $) = x.$l = x.$ - dx; y.$l = y.l; bow(z.$, z.$l, z.l); enddef; def r_att (suffix $) = x.$r = x.$ + dx; y.$r = y.r; bow(z.$, z.$r, z.r); enddef; def r_att (suffix $) = x.$r = x.$ + dx; y.$r = y.r; % bow(z.$, z.$r, z.r); draw z.${z.$r-z.$}..z.r{right}; enddef; def serif (suffix $) = z.$ = 0.2[z.$2,z.$1]; % z.$2 - z.$1 = 3dy * (-4dx,11dy); % 110 y.$2 - y.$1 = 3dy; z.$2 - z.$1 = whatever * (-4dx,11dy); draw z.$1--z.$2; enddef; def s_bow (suffix $) = x.$1 - .5dx = x.$; x.$2 - 4dx = lft x.$3 = lft x.$4 + 1.5dx - pl = x.l; y.$1 - dy = y.$3 = y.$4 - 2dy = y.$2 + 2dy = - 2dy; draw z.$..z.$1{down}..z.$3{up}..z.$4; enddef; def p_loop (suffix $) = pickup dia_pen; x.$1 = x.$2 = x.$; y.$1 + spx + dy = y.$2; top y.$2 = y.$; draw z.$1..z.$2..cycle; pickup nash_pen; enddef; def r_con (suffix $) = charic := (y.$-y.r)/vppp; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% bah-macros %%%%%%%%%%%%%%%%% def bah_bow = x1 = x4 + dx = x2 + 13.8dx; x2 = x3 = x.l + 0.6dx; %x1 = x4 = x2 + 13.8dx; x2 = x3 = x.l + 0.6dx; y4 - 5dy = y1 - 3dy = y2 - 2dy = y.m = y3 - 4dy; x5 = x.m; y5 = y.m - 0.5dy; enddef; def bah_end = bah_bow; draw z1..z5{left}..z2..z3; r_att(1); enddef; def bah_iso = bah_bow; draw z4..z1..z5{left}..z2..z3; enddef; def bah_mid = x6 = x.m; y6 = good.y (y.r + 2dy); l_att(6); r_att(6); enddef; def bah_beg = x.m := x.m + 0.5dx; x1 - dx = x2 = x.m; y1 = y.l; y2 = y.m + 4dy; bow(z2, z1, z.l); enddef; %%%%%%%%%%%%%% hhah-macros %%%%%%%%%%%%%%%%% def hhah_iso_bar = x1 - 2dx = x2 - 11dx = x.l; y1 - 4dy = y2 - 4dy = y.r; x3 = x2 - 2dx; y3 = y2; draw z1{(8dx,3dy)}..z2{right}; enddef; def hhah_mid_bar = x1 - 2dx = x2 - 11dx = x.l; y1 - 4dy = y2 - 3dy = y.r; x3 = x2 - 2dx; y3 = y2; draw z1{(8dx,3dy)}..z2{right}; enddef; def hhah_beg_bar = x1 - 2dx = x2 - 11dx = x.l; y1 - 4dy = y2 - 2dy = y.r; x3 = x2 - 2dx; y3 = y2; draw z1{(8dx,3dy)}..z2{right}; enddef; def hhah_bow = lft x4 = x1 - 2dx = x5 - 8dx; rt x6 - 6dx = x5; y5 = y6 - dy = -10dy; y4 = 0.6[y2,y5]; penpos4(pl,da); penpos5(pl,90); penpos6(0.3dy,90); draw z2{left}..z4{down}; fill z4r{down}..z5r{right}..z6r--z6l--z5l{left}..z4l{up}--cycle; enddef; def hhah_iso = hhah_iso_bar; hhah_bow; enddef; def hhah_end = hhah_mid_bar; hhah_bow; draw z3{down}..z.r{right}; enddef; def hhah_mid = hhah_mid_bar; draw z2{left}..z.l{left}; draw z3{down}..z.r{right}; enddef; def hhah_beg = hhah_beg_bar; draw z2{left}..z.l{left}; enddef; %%%%%%%%%%%%%% dal-macros %%%%%%%%%%%%%%%%% def dal_iso = x1 = x2 + 2dx = x3 - 3dx = x.r - 4dx; x.m := x1; y1 - 6dy = y2 = y3 - dy = y.r; draw z1{(7dx,-4dy)}..z3..z2{left}; enddef; def dal_end = x1 + dx = x3 - dx = x4 + 4dx = x.r - 3dx; lft x2 = x.r - 9dx; y1 = 8dy; y2 - dy = y3 = y4 = y.l; z5 = .3[z1,z3]; draw z1--z5{z3-z1}..z.r{right}; draw z5{z3 - z1}..z4{left}..z2; enddef; %%%%%%%%%%%%%% rah-macros %%%%%%%%%%%%%%%%% def rah_bow = x5 + dx = x2 + dx = x4 + 9dx = x3 - px + 6dx = x.r; y5 + 3dy = y2 - 0.5dy = y4 + 6dy = y3 + 6dy = y.r; penpos2(pl,da); penpos3(pl,90); penpos4(0.3dy,90); penpos5(0.4[py,px],0); enddef; def rah_iso = rah_bow; y1 - 2dy = y.r; x1 + 0.5dx = x2; penpos1(pl,da); fill z1l..z2l..z5l..z3r..z4r{left}--z4l--z3l..z5r..z2r..z1r--cycle; enddef; def rah_end = rah_bow; y1 - .5dy = y.r; x1 = x2; % = x.r - dx; fill z2l..z5l..z3r..z4r{left}--z4l--z3l..z5r..z2r--cycle; draw z1..z.r{right}; enddef; %%%%%%%%%%%%%% sin-macros %%%%%%%%%%%%%%%%% def s_wave = z2 - z1 = z5 - z4 = 2(z3 - z2); x3 - x1 = 6(x3 - x5) = 6dx; x.m := x2; y4 = y5 - 0.5dy = y2 - 2.5dy = y.r; draw z3..z5..z2; draw z2..z4{left}; enddef; def mid_wave = x3 = x.r - 3dx; s_wave; draw z4{left}..z1; enddef; def beg_wave = rt x3 = x.r; s_wave; draw z4{left}..z1; enddef; def sin_iso = beg_wave; s_bow(1); enddef; def sin_end = mid_wave; draw z3{down}..z.r{right}; s_bow(1); enddef; def sin_mid = mid_wave; draw z3{down}..z.r{right}; l_att(1); enddef; def sin_beg = beg_wave; l_att(1); enddef; %%%%%%%%%%%%%% sad-macros %%%%%%%%%%%%%%%%% def sad_bow = x2 - dx = x3 - 9dx; x2 + 3dx = x.m; x4 = x2 - 2dx; y2 = y3 - 3dy = y4 - 2dy = y.r; x8 = x2 + 3.5dx; y8 = y2 + 0.5dy; draw z2{(5dx,6dy)}..z3{(4dx,-7dy)}..tension 2..z2{left}; enddef; def sad_iso = x.m := x.m + 4dx; sad_bow; draw z2{left}..z4; s_bow(4); enddef; def sad_beg = x.m := x.m + dx; sad_bow; draw z2{left}..z4; l_att(4); enddef; %%%%%%%%%%%%%% ttah-macros %%%%%%%%%%%%%%%%% def ttah_stroke = x5 = x7 - dx = x2; y5 = 12dy; y7 = y2 + dy; draw z5{down}..z7{down}; serif(5); enddef; def ttah_tail = x2 - x6 = 5dx; y6 = top y2; penpos2(pl,da); fill z6--z2r--z2l{left}..z6..cycle; enddef; def ttah_iso = x.m := x.m + dx; sad_bow; ttah_stroke; ttah_tail; x.m := x.m + dx; enddef; def ttah_beg = sad_bow; ttah_stroke; x.m := x.m + dx; enddef; %%%%%%%%%%%%%% ain-macros %%%%%%%%%%%%%%%%% def ain_head = x.m := x.m - 2dx; lda := 0.5pa + angle(dx,dy); penpos7(pl,pa); penpos3(0.3dy,90); penpos2(px,lda); penpos8(px,lda); x7 + 2dx = x3 + dx = x2 + 6dx; x8 = x2 + 0.3dx; y7 = y2 - 3dy = y3 - 4dy; y8 = y2; z7 = 0.25[z1, z.l]; fill z7l{z.l-z1}..z2l{up}--z2r--z8r{down}..z7r{z1-z.l}--cycle; fill z2r{(7dx,10dy)}..z3r--z3l..z8l{(-7dx,-10dy)}--z2l--cycle; enddef; def ain_bow = lft x4 = x.l = x5 - 8dx; rt x6 = x5 + 6dx; y5 = y6 - dy = -10dy; y4 = 0.6[y1,y5]; penpos4(pl,da); penpos5(pl,90); penpos6(0.3dy,90); draw z1{z.l - z1}..z4{down}; fill z4r{down}..z5r{right}..z6r--z6l--z5l{left}..z4l{up}--cycle; enddef; def ain_top = x2 = x1 = x.r - 3.5dx; y2 - 2dy = y1 = 2dy; %x2 = x1 = x.m + 0.5dx; y2 - 2dy = y1 = 2dy; x7 - x2 = x2 - x3 = 2dx; y7 = y3 = y2 - 0.5dy; x8 = x3 - dx; y8 = y3; draw z.r{left}..z1..z3; draw z8..z2..z7; enddef; def ain_iso = x1 = x.r - 3dx; y1 = 5dy; ain_head; ain_bow; enddef; def ain_end = ain_top; draw z7..z1{z.l - z1}; ain_bow; enddef; def ain_mid = ain_top; draw z7..z1..z.l{left}; enddef; def ain_beg = rt x1 = x.r; y1 = 3dy; ain_head; draw z1..z7..z.l{left}; enddef; %%%%%%%%%%%%%% fah-macros %%%%%%%%%%%%%%%%% def fah_iso = x.m := x.m + 4dx; x1 = x2 - 2dx = x3 + dx = x4 - 2.5dx; rt x4 = x.r; y1 = y4 = 6dy; y2 = y3 = 8dy; lft x5 = x.l; lft x6 = lft x5 - 1.5dx + pl; x7 = 6dx; y5 = 3dy; y6 = y5 + 3dy; bot y7 = -0.5dy; draw z2..z1..z3..z4{down}..z7..z5{up}..z6; enddef; def fah_end = x.m := x.m + 4dx; x1 = x2 + dx = x.r - 2dx; lft x3 = lft x4 + 1.5dx - pl = x5 - 5dx = x.l; y5 = dy; y1 = 6.5dy; y2 = 2dy; y3 = 4dy; y4 = 6dy; x2a + 3dx = x2b = x1; y2a = y2b = y.r + 2dy; draw z.r{left}..z2a..z1; draw z1..z2b..tension 1.5..z5..z3{up}..z4; enddef; def fah_mid = x1 = x2 + dx = x.r - 2dx; y1 - 5dy = y2 - 0.5dy = y.r; x2a + 3dx = x2b = x1; y2a = y2b = y.r + 2dy; draw z.r{left}..z2a..z1; draw z1..z2b..z.l{left}; enddef; def fah_beg = x1 = x2 - 2dx = x3 + dx = x4 - 2.5dx; rt x4 = x.r; y1 = y4 = 4dy; y2 = y3 = 6dy; draw z2..z1..z3..z4{down}..z.l{left}; enddef; %%%%%%%%%%%%%% qaf-macros %%%%%%%%%%%%%%%%% def qaf_iso = x.m := x.m + 2dx; x1 = x2 - 2dx = x3 + dx = x4 - 2.5dx; rt x4 = x.r; y1 = y4 = 4dy; y2 = y3 = 6dy; lft x5 = x.l; lft x6 = lft x5 - 1.5dx + pl; x7 = 5dx; y5 = dy; y6 = y5 + 3dy; y7 = -2dy; draw z2..z1..z3..z4{down}..z7..z5{up}..z6; enddef; def qaf_end = x.m := x.m + 2dx; x1 + 3dx = x2 + dx = x.r; lft x3 = lft x4 + 1.5dx - pl = x5 - 5dx = x.l; y1 - 4dy = y2 = y.r = y3 + 2dy = y4 = y5 + 5dy; draw z.r{left}..z2..z1{right}..z2..z5..z3{up}..z4; enddef; %%%%%%%%%%%%%% kaf-macros %%%%%%%%%%%%%%%%% def kaf_mark (suffix $) = x.$6 + dx = x.$7 + 2dx = x.$8 = x.$9 + 3dx = x.$; y.$6 - 3dy = y.$7 - dy = y.$8 = y.$9 + dy = y.$; pickup dia_pen; draw z.$6{(-6dx,-5dy)}..z.$7..z.$8..z.$9{left}; pickup nash_pen; labels($6,$7,$9); enddef; def kaf_beg = x1 - 11dx = x2 = x4 - 10dx = x.l; %x1 = x.r - dx; x2 = x.l; x4 = x.r - 2dx; %y4 = y.r; y1 = 14dy; y2 = 9dy; z3 = .4[z2, z4]; y4 = y.l = y1 - 13dy = y2 - 8dy; z3 = .4[z2, z4]; bow (z1, z2, z3); draw z3{z3 - z2}..z.l{left}; enddef; %%%%%%%%%%%%%% gaf-macros %%%%%%%%%%%%%%%%% def gaf_iso = x1 - 15dx = x2 - 6dx = x4 - 8dx = x6 - dx = x.l; y1 - 13dy = y2 - 9dy = y4 = y6 - dy = y.l; z3 = .7[z2, z4]; z5 = .5[z4, z.l]; bow(z1, z2, z3); bow(z3, z4, z5); bow(z5, z.l, z6); enddef; def gaf_iso = x1 - 2dx = x2 + 7dx = x4 +5dx = x.r; y1 - 13dy = y2 - 9dy = y4 = y.r; z3 = .7[z2, z4]; bow(z1, z2, z3); x6 = x7 = x.l + 0.6dx; y6 = y7 - 2dy = y.l + dx; x5 = .5[x6, x4]; y5 = y.m; z13 = .5[z4, z3]; draw z7 .. z6 .. z5{right} .. z13{z3-z13}--z3; enddef; def gaf_serif = x10 = x1; y10 = y1 + 2.5dy; x11 = x2 + 2dx; y11 = y2 + 3dy; pickup dia_pen; z12 = 0.1[z10,z11]; draw z12--z11; pickup nash_pen; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def serpent = x1 = x3 = x.r - 3dx; x2 = x4 = x5 - dx = x.l + 4dx; y1 = y2 = y4 - 4dy = y5 - 8dy = y.l; y3 = y4; draw z5 .. z4{right} .. z3{right} .. z1{left} .. z2; enddef; %%%%%%%%%%%%%% nun-macros %%%%%%%%%%%%%%%%% def nun_iso = x1 + 2dx = rt x2 = x.r; x3 = x.m; lft x4 = lft x5 + 1.5dx - pl = x.l; y1 - 8dy = y2 - 3dy = y4 - 3dy = y5 - 5dy = y3 + dy = y.r - 3dy; draw z1..z2{down}..z3..z4{up}..z5; enddef; def nun_end = x1 = x.r - 2dx; y1 = y.r + dy; x2 - .5dx = x1; lft x3 = lft x4 + 1.5dx - pl = x.l; y2 - dy = y3 = y4 - 2dy = y.r - 3dy; x5 = x.m; y5 = y3 - 4dy; draw z1..z2{down}..z5..z3{up}..z4; r_att(1); enddef; %%%%%%%%%%%%%% waw-macros %%%%%%%%%%%%%%%%% def waw_bow = rah_bow; x1 + 2.5dx = x2; y1 - 3dy = y2; x6 = x1; y6 = y2; fill z2l..z5l..z3r..z4r{left}--z4l--z3l..z5r..z2r--cycle; enddef; def waw_bar = pickup dia_pen; x7 = .3[x4,x5]; y7 = y5; draw z7--z5; pickup nash_pen; enddef; %%%%%%%%%%%%%% hah-macros %%%%%%%%%%%%%%%%% def hah_iso = x1 = x.m - .5dx; rt x2 = x.r; lft x3 = x.l; y1 = 7dy; y2 = y3 = 3dy; %y1 = 6dy; y2 = y3 = 3dy; %y1 = 6dy; y2 = y3 = 2dy; draw z1..z2{down}..z3{up}..z1; enddef; def hah_end = x1 = x2 - dx = x4 + 2.5dx = x.m; y1 = 7dy; y2 = y.r; y4 = 4dy; z3 = .15[z1, z2]; z5 = .6[z1, z2]; draw z1--z5{z5-z1}..z.r{right}; draw z3{(-7dx,-4dy)}..z4{down}..z5{(7dx,4dy)}; enddef; %%%%%%%%%%%%%% yah-macros %%%%%%%%%%%%%%%%% def yah_iso = x6 = x1 + 5dx = x2 + dx = x.r = x3 + 6dx; lft x4 = lft x5 + 1.5dx - pl = x.r - 13dx; %x6 = x1 + 5dx = x2 + dx = x.r = x3 + 6dx; lft x4 = x5 - dx = x.r - 13dx; y6 - 7dy = y1 - 3dy = y5 - 3dy = y2 - dy = y4 = y3 + 3dy = y.r - 2dy; draw z6{up}..tension 1.5..z1{down}..tension 1.5 ..z2{down}..tension 1.5..z3..z4{up}..z5; enddef; def yah_end = x1 + 4dx = rt x2 = x.r = x3 + 5dx; lft x4 = lft x5 + 1.5dx - pl = x.r - 11dx; y1 + 2dy = y2 + 4dy = y4 + 4dy = y3 + 7dy = y5 + dy = y.r; draw z.r{left}..z1{down}..tension 1.5 ..z2{down}..tension 1.5..z3..z4{up}..z5; enddef; def yah_p_iso = x10 = x4 - dx = x5; x3 = x6 = x7 + 2dx = x4 - 8dx; x8 = x4 + 4dx = x.r; y10 = y6 = y4 - 3dy = y5 - 5dy = y.r; y3 = y.rr; y7 = y8 = y.r - 3dy; z9 = 0.2[z10,z5]; z1 = 0.9[z6,z9]; z2 = 0.8[z3,z5]; draw z8--z7{left}..z6..controls z1 and z2..z5..z4{(dx,-6dy)}; enddef; def yah_p_end = x8 - 7dx = x7 + 3dx = x.r; y7 = y8 = y.r - 3dy; draw z8--z7{left}..z.r{(4dx,dy)}; enddef; %%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%