%% %% This is file `cpcromanu.mf', %% generated with the docstrip utility. %% %% The original source files were: %% %% pacioli.dtx (with options: `maj') %% %% Copyright 1999 Peter R. Wilson %% %% This program is provided under the terms of the %% LaTeX Project Public License distributed from CTAN %% archives in directory macros/latex/base/lppl.txt. %% %% Author: Peter Wilson (CUA and NIST) %% now at: peter.r.wilson@boeing.com %% def checkthin= if thin-currentbreadth0; forsuffixes $$=l, r: x7$$:=x7$$-.1u; endfor x7:=x7-.1u; endfor x6r=x7r; x6l=x7l; bot y6r=ypart point t1 of p; bot y6l=ypart point t2 of p'; z6=.5[z6r,z6l]; p:= subpath(0,t1) of p..(z6r-xeps+yeps)--(z6l+xeps+yeps).. subpath(t2,infinity) of p'..(z1l+xeps)--cycle; filldraw p; filldraw z6l--z7l--z7r--z6r--cycle; if serifs: serif(7,6,a,serif_darkness,-srad); serif(7,6,b,serif_darkness, srad); fi proofpcbb(3, 0.5thick, 0.5side); penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Pacioli's letter G"; beginchar("G",2u#+.925side#, cap_height#, 0); adjust_fit(0, cap_serif_fit#); pcshiftx := u; if monospace: pickup fine.nib; else: pickup tiny.nib;fi numeric alpha; alpha=w-u-thick; pos2(thin, 90); x2=.5[x3r,x0r]; top y2r=h+o;% topmost pen position pos3(thick,180); lft z3r=(u,h/2); pos4(thin, 270); x4=x2; bot y4r=-o; pos0(thick,0); lft z0l=(w+thick-u,h/2); path p, p', line.u, line.b; line.u=(alpha,1.5h)--(alpha,h/2); line.b=(.5[alpha,x0],0)--(.5[alpha,x0],h/2); p=pulled_arc.r(0,2)&pulled_arc.r(2,3)&pulled_arc.r(3,4) &pulled_arc.r(4,0)&cycle; p'=pulled_arc.l(0,2)&pulled_arc.l(2,3)&pulled_arc.l(3,4) &pulled_arc.l(4,0)&cycle; z'1l=line.u intersectionpoint p'; z'1r=line.u intersectionpoint p; bot rt z1l=z'1l; top rt z1r=z'1r; z1=.5[z1l,z1r]; z'5l=line.b intersectionpoint p'; z'5r=line.b intersectionpoint p; z5r = (side+pcshiftx-3/4thick, 3/4thick); z5l = (x5r+o, y5r+1.5thick); z5=.5[z5r, z5l]; if not monospace: x1l:=x1l+.6thin; y1l:=y1r-1.0thick-2tiny; y5l:=2thick+y5r-2tiny; fi if monospace: x1:=x1l:=x1r:=x5; y1:=y1-thin; y1l:=y1l-thin; y1r:=y1r-.6thin; fi % readjust to have a better opening in CDTT numeric slope_factor; if monospace:slope_factor=4/3; else:slope_factor=3/4; fi path p,p',line.o, line.i; p=z1r{-1,slope_factor}..{left}pulled_arc.r(2,3)& pulled_arc.r(3,4){right}..tension 0.9..z5r; p'= reverse (z1l..tension 0.9..{left}pulled_arc.l(2,3)&pulled_arc.l(3,4){right} ..tension 0.9..z5l); pos7(thick,0); top z7=(x1r,7/2thick); numeric counter; counter=0; forever: counter:=counter+1; line.o:=z7r--(x7r,-2o); line.i:=(z7r-(thick,0))--(x7r-thick,-2o); numeric t[],tt[]; (t1,tt1)=p intersectiontimes line.o; (t2,tt2)=p' intersectiontimes line.i; exitif t1*t2>0; forsuffixes $$=l, r: x7$$:=x7$$-.1u; endfor x7:=x7-.1u; endfor x6r=x7r; x6l=x7l; bot y6r=ypart point t1 of p; bot y6l=ypart point t2 of p'; z6=.5[z6r,z6l]; p:= subpath(0,t1) of p..(z6r-xeps+yeps)--(z6l+xeps+yeps).. subpath(t2,infinity) of p'..(z1l+xeps)--cycle; filldraw p; filldraw z6l--z7l--z7r--z6r--cycle; if serifs: serif(7,6,a,serif_darkness,-srad); serif(7,6,b,serif_darkness, srad); fi proofpcbb(3, 0.5thick, 0.5side); penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Pacioli's letter H"; beginchar("H", u#+side#, cap_height#,0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; forsuffixes t=1,2,3,4: pos.t(thick,0); endfor lft x1l=lft x2l=.5u+cap_jut; bot y2=0; top y1=h; filldraw stroke z1e--z2e; % left vertical stem x3=x4=w-x1; y3=y1; y4=y2; filldraw stroke z3e--z4e; % right vertical stem pos5(thin, 90); pos6(thin,90); x5=.5[x1r,x1l]; x6=w-x5; top y5r=top y6r=h/2; filldraw stroke z5e--z6e; % horizontal crossbar if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(1,2,b,serif_darkness,cap_jut); serif(2,1,c,serif_darkness,-cap_jut); serif(2,1,d,serif_darkness,cap_jut); serif(3,4,e,serif_darkness,-cap_jut); serif(3,4,f,serif_darkness,cap_jut); serif(4,3,g,serif_darkness,-cap_jut); serif(4,3,h,serif_darkness,cap_jut); fi proofpcbb(2, cap_jut+0.5thick, 0); labels(1,2,3,4,5,6); endchar; cmchar "Pacioli's letter I"; beginchar("I", .5u#+2cap_jut#+cap_stem#+.5u#, cap_height#,0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; checkthin; pos1(cap_stem,0); pos2(cap_stem,0); x1=x2=hround(w/2); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % vertical stem if serifs: serif(1, 2, a, serif_darkness, -cap_jut); serif(1, 2, b, serif_darkness, cap_jut); % top lft,rt serif(2, 1, c, serif_darkness, -cap_jut); serif(2, 1, d, serif_darkness, cap_jut); % bot lft,rt fi proofpcbb(2, 0.5side, 0); penlabels(1, 2); endchar; cmchar "Pacioli's letter J"; %% Pacioli didn't have a J, so use Durer's. beginchar("J",u#+3thick#+cap_jut#,cap_height#, 1/4 cap_height#); adjust_fit(0, cap_serif_fit#); pickup tiny.nib; pos1(thick,0); pos2(thick,0); pos3(thin, -90); top y1=h; rt x1r=w-.5u-cap_jut; x2=x1; bot y2=0; lft x3=.5u; bot y3r=-d; filldraw stroke z1e--z2e{down}..{left}z3e; if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(1,2,b,serif_darkness,cap_jut); fi proofpcbb(2, 0.5side, 0); penlabels(1,2,3); endchar; cmchar "Pacioli's letter K"; beginchar("K", 3/2u#+side#, cap_height#,0); adjust_fit(cap_serif_fit#,0); pickup tiny.nib; pcshiftx := 3/4u; pair durer[]; % represent Pacioli's corner points durer1=(pcshiftx,side); durer2=(pcshiftx+side,side); durer3=(xpart durer1,0); durer4=(xpart durer2,0); numeric diag_angle[]; diag_angle1=angle(durer2-durer3); diag_angle2=angle(durer1-durer4); numeric alpha; alpha=((xpart durer2 - xpart durer1)++h)/h; pos1(thick,0); pos2(thick,0); lft x1l=lft x2l=pcshiftx+cap_jut; top y1=h; bot y2=0; filldraw stroke z1e--z2e; % left stem pos3(alpha*medium,0); pos4(alpha*medium,0); z4l = (x2,h/2); top y3=h; z3r-z4r=whatever*(durer2-durer3); z0=whatever[z1r,z2r]=whatever[z3l,z4l]; filldraw z4l--z3l--z3r--z4r--cycle; % upper diagonal stroke pos5(alpha*thick,0); pos6(alpha*thick,0); z5l = z4l; bot y6=0; z5r-z6r=whatever*(durer1-durer4); z10 = whatever[z3r,z4r]=whatever[z6r,z5r]; filldraw z6l--z5l--z10--z6r--cycle; % bottom leg if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(1,2,b,serif_darkness,cap_jut); serif(2,1,c,serif_darkness,-cap_jut); serif(2,1,d,serif_darkness,cap_jut); numeric old_jut, old_brack; old_jut=cap_jut; old_brack=bracket; bracket:=.5old_brack;cap_jut:=.5old_jut; if not monospace: serif(3,4,e,serif_darkness,-cap_jut); fi bracket:=2old_brack; cap_jut:=2old_jut; serif(3,4,f,.6serif_darkness,if monospace:.7 fi cap_jut); bracket:=.5old_brack;cap_jut:=.5old_jut; if not monospace: serif(6,5,g,serif_darkness,-cap_jut); fi bracket:=2old_brack; cap_jut:=2old_jut; serif(6,5,h,.6serif_darkness,if monospace:.7 fi cap_jut); cap_jut:=old_jut; bracket:=old_brack; fi proofpcbb(2, pcshiftx+cap_jut+0.5thick, 0); penlabels(0,1,2,3,4,5,6,7); endchar; cmchar "Pacioli's letter L"; numeric topbar_; if monospace: topbar_=11/15; else: topbar_=17/30; fi % Duerer's wierd value beginchar("L", u#+cap_jut#+5.75thick#, cap_height#,0); adjust_fit(cap_serif_fit#,0); pcshiftx := 0.5u; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=.5u+cap_jut; top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; % prepare for arms and serifs pos3(thin,90); pos8(medium,-90); pos9(dslab,0); x8=x2; bot y8r=0; rt x9r=hround(x2l+5.75thick); y9=y8r+1.5thick; foot(8,9,g,serif_darkness,0.75thick); % lower arm if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(2,1,b,serif_darkness,-cap_jut); serif(1,2,d,serif_darkness,cap_jut); if not monospace: temp_:=slab; slab:=medium; tmp_:=bracket; bracket:=thick+medium; serif(2,1,c,serif_darkness,thick); slab:=temp_; bracket:=tmp_; fi fi proofpcbb(2, cap_jut+0.5thick, 0); penlabels(0,1,2,3,4,5,6,7,8,9); endchar; % end of "L" cmchar"Pacioli's letter M"; beginchar("M", u#+cap_jut#+side#, cap_height#, 0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; pcshiftx := 0.5u; pos1(medium,0); pos2(medium,0); lft x2l=pcshiftx+cap_jut; top y1=h; bot y2=0; lft x1l = lft x2l + side*sind(1); % left leg has 1 degree angle pos3(thick,0); pos4(thick,0); x4r=pcshiftx+side; top y3=h; bot y4=0; x3r=x4r-side*sind(3); % right leg has 3 degree angle numeric long, short, hypot, alpha; long=side; short=1/2side; hypot=long++short; alpha=hypot/long; pos5(alpha*thick,0); pos6(alpha*thick,0); % left inner z5l=(2pcshiftx,side); bot lft z6l=(pcshiftx+1/2side,0); pos7(alpha*medium,0); pos8(alpha*medium,0); % right inner z7r=z6l; z8r=z3r; z0=whatever[z5r,z6r]=whatever[z7l,z8l]; z10=whatever[z5l,z6l]=whatever[z1r,z2r]; z11=whatever[z7r,z8r]=whatever[z3l,z4l]; filldraw z5r--z0--z8l--z3r--z4r--z4l--z11--z6l--z10--z2r--z2l--z1l--cycle; if serifs: serif(2,1,a,serif_darkness,-cap_jut); serif(1,2,b,serif_darkness,-lrad); serif(3,4,c,serif_darkness, lrad); serif(4,3,d,serif_darkness, lrad); serif(2,1,e,serif_darkness,cap_jut); serif(4,3,f,serif_darkness,-cap_jut); % lower, inner serifs fi proofpcbb(2, cap_jut+0.5medium, 0); penlabels(0,1,2,3,4,5,6,7,8,10,11); endchar; cmchar "Pacioli's letter N"; beginchar("N", u#+2cap_jut#+.8side#, cap_height#,0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; numeric long, short, hypot, alpha; long=h; short=side-2cap_jut; hypot=long++short; alpha=hypot/long; pos1(medium,0); pos2(medium,0); lft x1l=lft x2l=.5u+cap_jut; top y1=h; bot y2=0; pos3(medium,0); pos4(medium,0); x3=x4; x3=x2+side-2cap_jut-medium; y3=y1; y4=y2; pos 5(alpha*thick,0); pos6(alpha*thick,0); z5r=z1r; z6l=z4r; z0=whatever[z1r,z2r]=whatever[z5l,z6l]; % under notch point z0'=whatever[z5r,z6r]=whatever[z3l,z4l]; filldraw z1r--z1l--z2l--z2r--z0--z6l--z3r--z3l--z0'--cycle; if serifs: serif(2,1,b,serif_darkness,-cap_jut); serif(2,1,c,serif_darkness,cap_jut); % bottom, left serifs serif(3,4,d,serif_darkness,-cap_jut);serif(3,4,e,serif_darkness,cap_jut); % top right serifs z.a=(x1l-1.5cap_jut,y1); pickup tiny.nib; filldraw z0{z0-z4r}..{left}(z.a-(0,eps))..z.a--z1r--cycle; % top left serif serif(1,2,a,serif_darkness,-lrad); fi proofpcbb(2, cap_jut+0.5medium, 0); penlabels(0,0',1,2,3,4,5,6); endchar; cmchar "Pacioli's original letter O"; beginchar("o", 2u#+side#+2o#, cap_height#, 0); adjust_fit(0,0); pair durer[]; pcshiftx := u; x2r=pcshiftx-o; x4r=w-pcshiftx+o; y1r=h; y3r=0; z0=(w/2,h/2); z0=.5[z5,z6]; numeric axis_angle; durer1=(x2r,y1r-o); durer2=(x4r, ypart durer1); durer3=(xpart durer1, y3r+o); durer4=(xpart durer2, ypart durer3); axis_angle=angle(durer2-durer3); z5-z6=(thick,0)rotated axis_angle; y2r=y6; y4r=y5; x1r=x5; x3r=x6; forsuffixes $=1,2,3,4: z$=.5[z$l,z$r]; endfor x1l=x3r; y1l-y6=y6-y3r; x5-x2l=x4r-x5; y2l=y4r; x3l=x1r; y1r-y5=y5-y3l; x4l-x6=x6-x2r; y4l=y2r; path p,p'; p=pulled_arc.r(1,2)&reverse pulled_arc.r(3,2)& pulled_arc.r(3,4)&reverse pulled_arc.r(1,4)&cycle; path anti_diag; anti_diag=z0--durer1; z21r=p intersectionpoint anti_diag; penpos21(thin, axis_angle+90); x43r=w-x21r; y43r=h-y21r; penpos43(thin, axis_angle+270); path diag; diag=z0--durer2; z41r=diag intersectionpoint p; penpos41(thick, axis_angle); x32r=w-x41r; y32r=h-y41r; penpos32(thick, axis_angle+180); if not monospace: p'= z1l{left}..z21l..z2l{down}..z32l.. z3l{right}..z43l.. z4l{up}..z41l..{left}cycle; else:p'=z1l..z21l..z32l..z3l..z43l..z41l..cycle; fi fill p; unfill p'; proofpcbb(0, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6,21,32,43,41); endchar; cmchar "Pacioli's letter O"; beginchar("O", 2u#+side#+2o#, cap_height#, 0); adjust_fit(0,0); pair durer[]; pcshiftx := u; x2r=pcshiftx-o; x4r=w-pcshiftx+o; y1r=h+o; y3r=-o; z0=(w/2,h/2); z0=.5[z5,z6]; numeric axis_angle; durer1=(x2r,y1r-o); durer2=(x4r, ypart durer1); durer3=(xpart durer1, y3r+o); durer4=(xpart durer2, ypart durer3); axis_angle=angle(durer2-durer3); z5-z6=(thick,0)rotated axis_angle; y2r=y6; y4r=y5; x1r=x5; x3r=x6; forsuffixes $=1,2,3,4: z$=.5[z$l,z$r]; endfor x1l=x3r; y1l-y6=y6-y3r; x5-x2l=x4r-x5; y2l=y4r; x3l=x1r; y1r-y5=y5-y3l; x4l-x6=x6-x2r; y4l=y2r; path p,p'; p=pulled_arc.r(1,2)&reverse pulled_arc.r(3,2)& pulled_arc.r(3,4)&reverse pulled_arc.r(1,4)&cycle; path anti_diag; anti_diag=z0--durer1; z21r=p intersectionpoint anti_diag; penpos21(thin, axis_angle+90); x43r=w-x21r; y43r=h-y21r; penpos43(thin, axis_angle+270); path diag; diag=z0--durer2; z41r=diag intersectionpoint p; penpos41(thick, axis_angle); x32r=w-x41r; y32r=h-y41r; penpos32(thick, axis_angle+180); if not monospace: p'= z1l{left}..z21l..z2l{down}..z32l.. z3l{right}..z43l.. z4l{up}..z41l..{left}cycle; else:p'=z1l..z21l..z32l..z3l..z43l..z41l..cycle; fi fill p; unfill p'; proofpcbb(0, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6,21,32,43,41); endchar; cmchar "Pacioli's letter P"; beginchar("P", 1.5u#+P_width#, cap_height#, 0); adjust_fit(cap_serif_fit#, 0); pickup tiny.nib; pos1(thick,0); pos2(thick,0); top lft z1l=(.5u+cap_jut,h); bot lft z2l=(.5u+cap_jut,0); filldraw stroke z1e--z2e; % vertical stem pos3(medium,90); pos4(medium,90); pos5(thick,0); pos6(if not monospace and serifs: .5thin else:thin fi,-90); top y3r=top y4r=h; x3=x1; x4=x1r+thick; filldraw stroke z3e--z4e; x6=x4; y6=hround(h/2 -medium); rt x5r=hround(x2+0.65side-cap_jut-0.5medium); y5=.75side; y7=y6; if serifs: x7=.5[rt x1r, x6]; else: x7=x3; fi pos7(if not monospace and serifs:.5thin else:thin fi,-90); filldraw stroke pulled_super_arc.e(4,5,eta)&pulled_super_arc.e(5,6,eta) ..z7e; % lobe if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(2,1,b,serif_darkness,-cap_jut); serif(2,1,c,serif_darkness,cap_jut); fi proofpcbb(2, cap_jut+0.5thick, 0); penlabels(1,2,3,4,5,6,7); endchar; cmchar "Pacioli's original letter Q"; beginchar("q", 2u#+side#+2o#, cap_height#, 0); adjust_fit(0,0); pair durer[]; pcshiftx := u; x2r=pcshiftx-o; x4r=w-pcshiftx+o; y1r=h; y3r=0; z0=(w/2,h/2); z0=.5[z5,z6]; numeric axis_angle; durer1=(x2r,y1r-o); durer2=(x4r, ypart durer1); durer3=(xpart durer1, y3r+o); durer4=(xpart durer2, ypart durer3); axis_angle=angle(durer2-durer3); z5-z6=(thick,0)rotated axis_angle; y2r=y6; y4r=y5; x1r=x5; x3r=x6; forsuffixes $=1,2,3,4: z$=.5[z$l,z$r]; endfor x1l=x3r; y1l-y6=y6-y3r; x5-x2l=x4r-x5; y2l=y4r; x3l=x1r; y1r-y5=y5-y3l; x4l-x6=x6-x2r; y4l=y2r; path p,p'; p=pulled_arc.r(1,2)&reverse pulled_arc.r(3,2)& pulled_arc.r(3,4)&reverse pulled_arc.r(1,4)&cycle; path anti_diag; anti_diag=z0--durer1; z21r=p intersectionpoint anti_diag; penpos21(thin, axis_angle+90); x43r=w-x21r; y43r=h-y21r; penpos43(thin, axis_angle+270); path diag; diag=z0--durer2; z41r=diag intersectionpoint p; penpos41(thick, axis_angle); x32r=w-x41r; y32r=h-y41r; penpos32(thick, axis_angle+180); if not monospace: p'= z1l{left}..z21l..z2l{down}..z32l.. z3l{right}..z43l.. z4l{up}..z41l..{left}cycle; else:p'=z1l..z21l..z32l..z3l..z43l..z41l..cycle; fi fill p; unfill p'; z10r=z3l; z10l=z3r; z11r=(pcshiftx+side,-0.25side); z11l=z11r-(0,thick); z12l=z11l+(0.5side+medium,-thick); z12r=z12l+(0,0.5thin); filldraw z10r..z11r..z12r--z12l..z11l..z10l--cycle; proofpcbb(0, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6,10,11,12,13,14,15); endchar; cmchar "Pacioli's letter Q"; beginchar("Q", 2u#+side#+2o#, cap_height#, 0); adjust_fit(0,0); pair durer[]; pcshiftx := u; x2r=pcshiftx-o; x4r=w-pcshiftx+o; y1r=h+o; y3r=-o; z0=(w/2,h/2); z0=.5[z5,z6]; numeric axis_angle; durer1=(x2r,y1r-o); durer2=(x4r, ypart durer1); durer3=(xpart durer1, y3r+o); durer4=(xpart durer2, ypart durer3); axis_angle=angle(durer2-durer3); z5-z6=(thick,0)rotated axis_angle; y2r=y6; y4r=y5; x1r=x5; x3r=x6; forsuffixes $=1,2,3,4: z$=.5[z$l,z$r]; endfor x1l=x3r; y1l-y6=y6-y3r; x5-x2l=x4r-x5; y2l=y4r; x3l=x1r; y1r-y5=y5-y3l; x4l-x6=x6-x2r; y4l=y2r; path p,p'; p=pulled_arc.r(1,2)&reverse pulled_arc.r(3,2)& pulled_arc.r(3,4)&reverse pulled_arc.r(1,4)&cycle; path anti_diag; anti_diag=z0--durer1; z21r=p intersectionpoint anti_diag; penpos21(thin, axis_angle+90); x43r=w-x21r; y43r=h-y21r; penpos43(thin, axis_angle+270); path diag; diag=z0--durer2; z41r=diag intersectionpoint p; penpos41(thick, axis_angle); x32r=w-x41r; y32r=h-y41r; penpos32(thick, axis_angle+180); if not monospace: p'= z1l{left}..z21l..z2l{down}..z32l.. z3l{right}..z43l.. z4l{up}..z41l..{left}cycle; else:p'=z1l..z21l..z32l..z3l..z43l..z41l..cycle; fi fill p; unfill p'; z10r=z3l; z10l=z3r; z11r=(pcshiftx+side,-0.25side); z11l=z11r-(0,thick); z12l=z11l+(0.5side+medium,-thick); z12r=z12l+(0,0.5thin); filldraw z10r..z11r..z12r--z12l..z11l..z10l--cycle; proofpcbb(0, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6,10,11,12,13,14,15); endchar; cmchar "Pacioli's letter R"; beginchar("R", u#+side#, cap_height#,0); adjust_fit(cap_serif_fit#,0); pickup tiny.nib; pos1(thick,0); pos2(thick,0); top lft z1l=(.5u+cap_jut,h); bot lft z2l=(.5u+cap_jut,0); filldraw stroke z1e--z2e; % vertical stem pos3(thin,90); pos4(thin,90); pos5(thick,0); pos6(thin, -90); top y3r=top y4r=h; x3=x1; x4=x1r+thick; x6=x4; y6=hround h/2; rt x5r=hround(.5u+P_width if not monospace: +1/2thin fi); y5=.5[y4,y6]; y7=y6; x7=x3; pos7(thin, -90); filldraw stroke z3e--pulled_super_arc.e(4,5,eta)& pulled_super_arc.e(5,6,eta)..z7e; % lobe numeric half_letter_width; 2half_letter_width+1/2u=w; if serifs: half_letter_width:=half_letter_width+1/2u; else: half_letter_width:=half_letter_width-1.6thin; fi path p; p=pulled_super_arc.r(5,6,eta)..z7r; z0r=p intersectionpoint ((half_letter_width,0)--(half_letter_width,h)); path circ_; circ_= (((halfcircle scaled 2thick) rotated 180) shifted z0r); z0l= p intersectionpoint circ_; if not monospace: z0'=(.45[half_letter_width,w],0); else: z0'=(.42[half_letter_width,w],0); fi numeric tail_angle; tail_angle=angle(z0l-z0'); penpos8(thick, tail_angle-90); z8l=whatever[z0', z0l]; x8=1/5[half_letter_width,w]; penpos9(2/3thick,tail_angle-90); z9r=whatever[z0r, z8r]; x9r=.5[half_letter_width, w]; penpos10(if monospace:1/2 dslab else: .5thin fi,90); z10l=(w,0); fill z0l--z8l...{right}z10l--z10r{-w,1/4h}..z9r--z0r--cycle; % tail if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(2,1,b,serif_darkness,-cap_jut); serif(2,1,c,serif_darkness,cap_jut); fi proofpcbb(2, 1.5cap_jut+0.5thick, 0); penlabels(0,1,2,3,4,5,6,7,8,9,10); labels(0'); endchar; cmchar "The Knuthian S"; beginchar("S", 2u#+1/2 side# if not monospace:+thick# fi, cap_height#, 0); adjust_fit(0,0); pickup tiny.nib; pair durer[]; % points to contain corner coords of Durer square ypart durer3=ypart durer4=0; xpart durer4-xpart durer1=side; xpart durer1=u-1.5thick; durer1=(xpart durer3, h); durer2=(xpart durer 4, ypart durer1); numeric slope, diag_angle; diag_angle=angle(durer2-durer3); slope=-if not monospace: 3/4 else: 1/2 fi h/(xpart durer4-xpart durer3); pos0(thick,diag_angle); x0=.52[xpart durer1, xpart durer2]; y0=h/2; lft x3l=u if not monospace:+2/3thick fi; rt x3r=lft x3l+5/6thick; pos2(thin,-diag_angle); top y2l=h; if x0-x3r>thick: x2l=x0 if monospace:+.4thin fi; else: x2l=x0r; slope:=-1/2; fi ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); pos7(thin,-diag_angle); x7r=x0; bot y7r=0; rt x6r=w-if monospace:.75 fi u; lft x6l=rt x6r-thick; ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); pos1(max(currentbreadth+eps,5/6 thick),-90); top y1l=h-thin; rt x1=x0+2thick+o; pos8(1.5thick,-80);lft x8r=u; bot y8r=medium; if not monospace: filldraw z1l..z2l{left}..{down}z3l..z4l--z5l..{down}z6l..{left}z7l..z8l --z8r..{right}z7r..{up}z6r..z5r--z4r..{up}z3r..{right}z2r..z1r--cycle; else: draw z1l..z2l{left}..{down}z3l..z4l--z5l..{down}z6l..{left}z7l..z8l; draw z8r..{right}z7r..{up}z6r..z5r--z4r..{up}z3r..{right}z2r..z1r; fi proofpcbb(0, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Pacioli's letter T"; beginchar("T",2u#+side#-2medium#, cap_height#,0); adjust_fit(0,0); pickup tiny.nib; pos1(thick,0); pos2(thick,0); .5[x1r,x1l]=w/2; .5[x2r,x2l]=w/2; top y1=h; bot y2=0; filldraw stroke z1e--z2e; % central stem numeric top_bar; top_bar=0.5side-medium; % half length of top bar pos3(medium,90); pos4(dslab,0); x1=x3; top y3r=h; rt x4l=x1+top_bar; bot y4=vround(h-if monospace: 2 fi vstretch*(medium+cap_jut)); arm(3,4,c,serif_darkness,0); pos5(dslab,180); lft x5r=x1-top_bar; bot y5= bot y4; arm(3,5,d,serif_darkness,0); if serifs: serif(2,1,a,serif_darkness,-cap_jut);serif(2,1,b,serif_darkness,cap_jut); fi proofpcbb(2, 0.5side, 0); penlabels(1,2,3,4); endchar; cmchar "Pacioli's letter U"; beginchar("U", u#+2cap_jut#+.8side#, cap_height#,0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; pos1(thick,0); pos2(thick,0); pos2'(thick,180); pos3(medium,-90); pos4(medium,0); pos5(medium,0); x1=x2; x3=.5[x1,x5]; x4=x5; x1l=w-x5r; top y1=top y5=h; y2=y4=1/3h; bot y3r=0; z2'=z2; lft x1l=hround .5u+cap_jut; filldraw stroke z1e--z2e; % left stem filldraw stroke pulled_super_arc.e(2',3,eta) & pulled_super_arc.e(3,4,eta)&z4e--z5e; if serifs: serif(1,2,a,serif_darkness,-cap_jut); serif(1,2,b,serif_darkness,cap_jut); serif(5,4,c,serif_darkness,-cap_jut); serif(5,4,d,serif_darkness,cap_jut); fi penlabels(1,2,3,4,5); endchar; cmchar "Pacioli's letter V"; beginchar("V",u#+side#, cap_height#, 0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; pcshiftx := 0.5u; z10 = (pcshiftx+0.5side,0); numeric alpha; alpha=((0.5h-cap_jut)++(h))/(h); pos1(alpha*thick,0); pos2(alpha*thick,0); pos3(alpha*medium,0); pos4(alpha*medium,0); top y1=top y4=h; lft x1l=pcshiftx+cap_jut; x4r=x1l+side-2cap_jut; lft x2l=hround(pcshiftx+0.5side); x3r=x2l; bot y2=bot y3=0; z0=whatever[z1r,z2r]=whatever[z3l,z4l]; % notch point filldraw z0--diag_end(0,4l,1,1,4r,3r)--z2l --diag_end(2l,1l,1,1,1r,0)--cycle; if serifs: bracket:=cap_jut_factor*bracket; cap_jut:=cap_jut_factor*cap_jut; pickup tiny.nib; numeric jut_factor; if monospace: jut_factor=1; else: jut_factor=3/4; fi serif(1,2,a,.8serif_darkness,-Lrad); serif(4,3,d,.8serif_darkness,lrad); bracket:=jut_factor*bracket; serif(1,2,b,7/8 serif_darkness, jut_factor*cap_jut); serif(4,3,c,7/8 serif_darkness,-jut_factor*cap_jut); fi proofpcbb(10, 0.5side, 0); penlabels(0,1,2,3,4); endchar; cmchar "Pacioli's letter W"; numeric alpha; alpha=((cap_height#+cap_jut#)++(.4side#+cap_jut_factor*cap_jut#))/ (cap_height#+cap_jut#); beginchar("W", 2cap_jut_factor*cap_jut#+1.6side#-alpha*thick#, cap_height#, 0); adjust_fit(.5cap_serif_fit#, cap_serif_fit#); pickup tiny.nib; mid_corr=if monospace: -apex_corr else: 1/3jut fi; pos1(alpha*thick,0); pos2(alpha*thick,0); pos3(alpha*medium,0); pos4(alpha*medium,0); pos5(alpha*thick,0); pos6(alpha*thick,0); pos7(alpha*medium,0); pos8(alpha*medium,0); numeric V_width; V_width=2cap_jut_factor*cap_jut+4/5side; if not monospace: top y1=top y4=h; lft x1l=cap_jut_factor*cap_jut; x4r=V_width-x1l; lft x2l=hround V_width/2; x3r=x2l; bot y2=bot y3=0; pair shift_amt; ypart shift_amt=0; xpart shift_amt=V_width-2cap_jut_factor*cap_jut-alpha*(thick); z0=whatever[z1r,z2r]=whatever[z3l,z4l]; % notch point path p; p=z0--diag_end(0,4l,1,1,4r,3r)--z2l --diag_end(2l,1l,1,1,1r,0)--cycle; filldraw p; filldraw (p shifted shift_amt); % the 2 V's forsuffixes t=1,2,3,4: z[t+4]=z.t shifted shift_amt; endfor else: top y1=h; lft x1l=cap_jut_factor*cap_jut; bot y2=bot y3=0; x2l+apex_corr=x3l; x8=w-x1; y8=y1; x2-x1=x4-x3=x6-x5=x8-x7; x6l+apex_corr=x7l; y6=y7=y2; y4:=vround .6h; y5=y4; x5=x4; y4l:=y4r:=y4; % ?? z0 =whatever[z1r,z2r]; z0'=whatever[z7l,z8l]; y0=y0'=h/9; z45=whatever[z3r,z4r]=whatever[z5l,z6l]; filldraw z0--diag_end(0,4l,1,1,4r,3r)--z2l--diag_end(2l,1l,1,1,1r,0)--cycle; filldraw z0'--diag_end(0',8l,1,1,8r,7r)--z7l--diag_end(7l,5l,1,1,5r,0') --cycle; fi if serifs: bracket:=cap_jut_factor*bracket; cap_jut:=cap_jut_factor*cap_jut; pickup tiny.nib; numeric jut_factor; if monospace: jut_factor=1.8; else: jut_factor=3/4; fi serif(1,2,a,.8serif_darkness,-cap_jut); serif(8,7,f,.8serif_darkness,cap_jut); if not monospace: serif(5,6,d,.8serif_darkness,cap_jut); serif(5,6,c,.8serif_darkness,-cap_jut); fi bracket:=jut_factor*bracket; serif(1,2,b,7/8 serif_darkness, jut_factor*cap_jut); serif(8,7,e,7/8 serif_darkness,-jut_factor*cap_jut); fi penlabels(0,0',1,2,3,4,5,6,7,8,45); endchar; cmchar "Pacioli's letter X"; beginchar("X", u#+side#, cap_height#, 0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pcshiftx := 0.5u; z10=(pcshiftx+0.5side, 0.5side); % center of the square numeric alpha; alpha=(h++(h-2thick))/h; penpos1(alpha*thick,0); penpos4(alpha*thick,0); penpos2(alpha*medium,0); penpos3(alpha*medium,0); lft x3l = pcshiftx+thick; y3=0; y2=side; 0.5[z3l,z2l]=z10; y4 = 0; y1 = side; lft x1l = pcshiftx+1.5thick; 0.5[z4l,z1l]=z10; filldraw z1l--z1r--z4r--z4l--cycle; % draw the thick limb filldraw z2l--z2r--z3r--z3l--cycle; % draw the other limb if serifs: bracket:=cap_jut_factor*bracket; cap_jut:=cap_jut_factor*cap_jut; pickup tiny.nib; numeric jut_factor; if monospace: cap_jut:=.5cap_jut; jut_factor=1; else: jut_factor=3/4; fi serif(1,4,a,.8serif_darkness,-Lrad); serif(4,1,d,.8serif_darkness,cap_jut); serif(2,3,f,.8serif_darkness,cap_jut); serif(3,2,g,.8serif_darkness,-lrad); bracket:=jut_factor*bracket; serif(1,4,b,7/8 serif_darkness,.75cap_jut); serif(4,1,c,7/8 serif_darkness,-.75cap_jut); serif(2,3,e,7/8 serif_darkness,-.75cap_jut); serif(3,2,h,7/8 serif_darkness,.75cap_jut); fi proofpcbb(10, 0.5side, 0.5side); penlabels(1,2,3,4); endchar; cmchar "Pacioli's letter Y"; beginchar("Y", u#+side#, cap_height#, 0); adjust_fit(cap_serif_fit#, cap_serif_fit#); pickup pencircle scaled 0pt; pcshiftx := 0.5u; z100 = (pcshiftx+0.5side,0.5side); % center of the square numeric alpha, long, short, hypot; long=h/2; short=0.5side-thick; hypot=long++short; alpha=hypot/long; penpos1(alpha*thick,0); lft x1l=pcshiftx+thick; top y1=h; penpos4(alpha*medium,0); y4=y1; x4r=x1l+side-2thick; penpos2(alpha*thick,0); penpos3(alpha*medium,0); y2 = y3 = 0.5side; penpos5(thick,0); penpos6(thick,0); z2l = z3r = z100; z6 = (pcshiftx+0.5side,0); z5 = (x6,side); z0=whatever[z1r, z2r]=whatever[z3l,z4l]; % notch point z7=whatever[z6l,z5l] = whatever[z2l,z1l]; % left stem and V z8=whatever[z6r,z5r] = whatever[z3r,z4r]; % right stem and V filldraw z1r--z0--z4l--z4r--z8--z6r--z6l--z7--z1l--cycle; if serifs: numeric jut_factor; serif(6,5,e,serif_darkness,-cap_jut); serif(6,5,f,serif_darkness,cap_jut); bracket:=cap_jut_factor*bracket; cap_jut:=cap_jut_factor*cap_jut; if monospace: cap_jut:=.5cap_jut; jut_factor=1; else: jut_factor=3/4; fi % top outer serifs serif(1,2,a,serif_darkness,-lrad);serif(4,3,d,serif_darkness,lrad); bracket:=jut_factor*bracket; if monospace: cap_jut:=1.5cap_jut; fi % top inner serifs serif(1,2,b,7/8 serif_darkness,.6cap_jut); serif(4,3,c,7/8 serif_darkness,-.6cap_jut); fi proofpcbb(100, 0.5side, 0.5side); penlabels(0,1,2,3,4,5,6); endchar; % End of "Y" cmchar "Pacioli's letter Z"; beginchar("Z", 2u#+.8side#, cap_height#,0); adjust_fit(0, 0); pickup tiny.nib; pcshiftx := u; numeric alpha, long, short, hypot; long=h; short=w-2u-thick; hypot=long++short; alpha=hypot/long; pos1(medium,90); pos2(medium,90); pos3(alpha*thick, 0); pos4(alpha*thick, 0); pos5(medium,-90); pos6(medium,-90); rt x3r=w-u; top y3=h; x4l=w-x3r; bot y4=0; top y1r=h; lft x1=u; y2=y1; rt x2=x3; bot y5r=bot y6r=0; lft x5=x4; rt x6=w-u; filldraw stroke z1e--z2e; % top bar filldraw stroke z3e--z4e; % diagonal filldraw stroke z5e--z6e; % bottom bar z100 = (0.5(x1+x3r),0.5side); % center of square if serifs: pickup crisp.nib; % prepare for arms and serifs pos7(medium, 90); pos8(dslab,180); z7=z2; lft x8r=u; bot y8=h-if monospace:2 fi vstretch*thick; arm(7,8,a,serif_darkness,0); % upper dropped serif pos9(medium,-90); z9=z5; pos10(dslab,0); rt x10r=w-u; top y10=if monospace: 2.5 fi vstretch*thick; arm(9,10,b,serif_darkness,0); fi proofpcbb(100, 0.5side, 0.5side); penlabels(1,2,3,4,5,6,7,8,9,10); endchar;