diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/pacioli/cpcromanu.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/pacioli/cpcromanu.mf | 970 |
1 files changed, 970 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/pacioli/cpcromanu.mf b/Master/texmf-dist/fonts/source/public/pacioli/cpcromanu.mf new file mode 100644 index 00000000000..cfbbeae095f --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/pacioli/cpcromanu.mf @@ -0,0 +1,970 @@ +%% +%% 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-currentbreadth<eps: thin:=currentbreadth+eps; fi; +if thin-currentbreadth<eps: thin:=currentbreadth+eps; fi enddef; + +numeric P_width#; P_width#=cap_jut#+3thick#+1/4side#-thin#; +define_pixels(P_width); + +pair xeps, yeps; xeps=(eps,0); yeps=(0,eps); +numeric tail_corr; tail_corr=1/8; +numeric cap_jut_factor; cap_jut_factor=8/7; + +numeric pcshiftx#; % x value of LHS of Pacioli box wrt origin of char box +define_pixels(pcshiftx); + + +cmchar "Pacioli's letter A"; +beginchar("A", 2u#+side#, cap_height#, 0); +adjust_fit(cap_serif_fit#, cap_serif_fit#); +pcshiftx := u; +top y3= top y2=h + 2cap_jut; + % for left leg +numeric alpha[]; alpha1=(h++(0.5side - cap_jut - 0.5thin))/(side); +penpos1(alpha1*medium,0); penpos2(alpha1*medium,0); + % and for the right leg +alpha2=(h++(0.5side-0.5thick))/(side); +penpos3(alpha2*thick,0); penpos4(alpha2*thick,0); +lft x1l=cap_jut_factor*lrad+.5u; rt x4r=pcshiftx + side; +bot y1=bot y4=0 if monospace: +1/2 crisp fi; +x3r=x2l = 0.5side + pcshiftx; +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; +fill z0--diag_end(0,4l,1,1,4r,3r)--z3r..z2l--diag_end(2l,1l,1,1,1r,0) + --z0..cycle; % diagonals +top y5r=top y6r=hround(h/2); top y5r-bot y5l=top y6r-bot y6l=thin; +penpos5(whatever, angle(z2-z1)); penpos6(whatever, angle(z3-z4)); +z5=whatever[z1,z2]; z6=whatever[z3,z4]; +penstroke z5e--z6e; % bar line +pickup tiny.nib; +numeric top_bar; top_bar=top y5r-bot y6l; +if monospace: pickup pencircle scaled 0pt; + pos11(top_bar,90); pos12(top_bar,90); + top y11r=top y12r=h; w/2=.5[x11,x12]; x12-x11=apex_corr+2cap_jut; + fill z11l--z12l{right}..tension atleast.95..{left}z12r--z11r{left}.. + tension atleast.95..{right}cycle; + penlabels(11,12); fi +if serifs: bracket:=10/7 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,-cap_jut);serif(4,3,d,.8serif_darkness, cap_jut); + bracket:=jut_factor*bracket; if monospace: jut_factor:=.6; fi + 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 + x20 = x2l - 0.5lrad; y20 = side+lrad; + erase filldraw fullcircle scaled 2lrad shifted (x20,y20); +proofpcbb(1, lrad+0.5medium, 0); +penlabels(0,1,2,3,4,5,6,20); endchar; + + +cmchar "Pacioli's letter B"; +beginchar("B",u#+cap_jut#+0.64side#, cap_height#, 0); +adjust_fit(cap_serif_fit#,0); pickup tiny.nib; +pcshiftx := 0.5u; +pos1(thick,0); pos2(thick,0); lft x1l=lft x2l=pcshiftx+cap_jut; + bot y2=0; top y1=h; filldraw stroke z1e--z2e; % vertical stem +pos3(thin,-90); pos5(thick,0); pos7(medium,90); +z3r=z2; y4l=y3l; x4l=x3l+thick; y4r=y3r; x4r=x4l+thick-1/2thin; z4=.5[z4l,z4r]; +y7=h/2; x7=x1; y6l=y7l; x6l=x4l; top y6r-bot y6l=medium; x6r=x4r; +z6=.5[z6r,z6l]; +x5=hround(x1+0.64side-thick); y5=0.25side; +filldraw stroke z3e--z4e..pulled_arc.e(4,5)&pulled_arc.e(5,6)..z6e--z7e; + % bottom lobe +pos7'(thin,-90); pos8(thick,0); pos10(medium,90); +z7'=z7; z6'=z6; x6'r=x4r; x6'l=x4l; y6'r=y7'r; y6'l=y7'l; +z10r=z1; x9r=x6'r; x9l=x6'l; y9r=y10r; top y9r-bot y9l=medium; z9=.5[z9r,z9l]; +x8=hround(x1+0.53side-thick); y8=.75side; +filldraw stroke z7'e--z6'e..pulled_arc.e(6',8)&pulled_arc.e(8,9) + ..z9e--z10e; % upper lobe +if serifs: serif(1,2,a, serif_darkness,-cap_jut); + serif(2,1,b,serif_darkness,-cap_jut); + numeric tempa_, tempb_; tempa_=slab; tempb_=bracket; + slab:=thin; bracket:=2/3cap_jut; serif(2,1,c,serif_darkness,2/3cap_jut); + slab:=tempa_; bracket:=tempb_; fi +proofpcbb(2, cap_jut+0.5thick, 0); +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); +penlabels(6',7'); endchar; + + +cmchar "Pacioli's original letter C"; +beginchar("c",2u#+.95side#, cap_height#, 0); +adjust_fit(0, 0); if monospace: pickup fine.nib; else: pickup tiny.nib;fi +pcshiftx := u; +numeric alpha; alpha=w-u-thick; +pos2(thin, 90); x2=.5[x3r,x0r]; top y2r=h;% topmost pen position +pos3(thick,180); lft z3r=(u,h/2); +pos4(thin, 270); x4=x2; bot y4r=0; % bottommost pen position +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 +filldraw + z1r{-1,slope_factor}...{left}z2r..pulled_arc.r(2,3)& + pulled_arc.r(3,4)..{right}z4r..tension 0.9..z5r-- + reverse + (z1l..tension 0.9..{left}z2l..pulled_arc.l(2,3)&pulled_arc.l(3,4)..{right}z4l + ..tension 0.9..z5l) + ..(z1l+(eps,0))--(z1r+(eps,0))..cycle; +proofpcbb(3, 0.5thick, 0.5side); +penlabels(0,1,2,3,4,5); endchar; + + +cmchar "Pacioli's letter C"; +beginchar("C",2u#+.95side#, cap_height#, 0); +adjust_fit(0, 0); if monospace: pickup fine.nib; else: pickup tiny.nib;fi +pcshiftx := u; +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; % bottommost pen position +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 +filldraw + z1r{-1,slope_factor}...{left}z2r..pulled_arc.r(2,3)& + pulled_arc.r(3,4)..{right}z4r..tension 0.9..z5r-- + reverse + (z1l..tension 0.9..{left}z2l..pulled_arc.l(2,3)&pulled_arc.l(3,4)..{right}z4l + ..tension 0.9..z5l) + ..(z1l+(eps,0))--(z1r+(eps,0))..cycle; +proofpcbb(3, 0.5thick, 0.5side); +penlabels(0,1,2,3,4,5); endchar; + + +cmchar "Pacioli's letter D"; +beginchar("D", cap_jut#+.95side#+u#, cap_height#, 0); +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +lft x1l=.5u+cap_jut; x2=x1; bot y2=0; top y1=h; +filldraw stroke z1e--z2e; % stem +pos3(thin, 90); pos5(thick, 0); pos7(5/4thin, -90); +x3=x7=x1; top y3r=h; bot y7r=0; +y5=good.y h/2; x5=h-3/2thick+x1; +if not monospace: x4r=x6r=hround(w/2); top y4r=h; bot y6r=0; + bot y4l=vround(h-thin); top y6l=vround 5/4thin; + x4l=x6l; 2(lft x5l-x4l)=y4l-y6l; + z4=.5[z4l, z4r]; z6=.5[z6l, z6r]; + else: pos4(thin,90); pos6(thin,-90); x4=x6=hround w/2; top y4r=h; bot y6r=0; +fi +filldraw stroke z3e{right}...pulled_super_arc.e(4,5,eta)& + pulled_super_arc.e(5,6,eta)...{left}z7e; % lobe +if serifs: serif(1, 2, a, serif_darkness, -cap_jut); + serif(2, 1, b, serif_darkness, -cap_jut); + if not monospace: numeric temp_; temp_=slab; slab:=5/4thin; + serif(2, 1, c, serif_darkness, cap_jut); slab:=temp_; fi fi +proofpcbb(2, cap_jut+0.5thick, 0); +penlabels(1,2,3,4,5,6,7); endchar; + + +cmchar "Pacioli's letter E"; +numeric topbar_; topbar_=1/2; % half the square for Pacioli +numeric middlebar_; middlebar_=10/31; % as measured +beginchar("E", u#+cap_jut#+5.25thick#, 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(medium,90); pos4(dslab,0); +x1=x3; top y3r=h; rt x4l=x2l+topbar_*side; + bot y4=vround(h-if monospace: 2 fi vstretch*thick); +arm(3,4,d,serif_darkness,0); % top arm and beak +pos5(thin,-90); pos0(thin,90); pos6(dslab,0); pos7(dslab,0); +x5=x0=x1; y5=y0=hround(h/2); rt x6r=rt x7r= x1r+middlebar_*side; +top y6-bot y7= thin+3/4thick; y5=.5[y6,y7]; +arm(5,6,e,eta,0); arm(0,7,f,eta,0); % middle arms and beaks +pos8(medium,-90); pos9(dslab,0); x8=x2; bot y8r=0; rt x9r=hround(x2l+5.25thick); +y9=y8r+thick; +foot(8,9,g,serif_darkness,0.25thick); % lower arm +if serifs: serif(1,2,a,serif_darkness,-cap_jut); + serif(2,1,b,serif_darkness,-cap_jut); + if not monospace: temp_:=slab; slab:=medium; tmp_:=bracket; bracket:=cap_jut+medium; + serif(2,1,c,serif_darkness,cap_jut); + 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 "E" + + +cmchar "Pacioli's letter F"; +numeric topbar_; topbar_=1/2; % half the square for Pacioli +numeric middlebar_; middlebar_=10/31; % as measured +beginchar("F", u#+1/2side#+cap_jut#, 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(medium,90); pos4(dslab,0); +x1=x3; top y3r=h; rt x4l= x2l+topbar_*side; + bot y4=vround(h-if monospace: 2 fi vstretch*thick); +arm(3,4,d,serif_darkness,0); % top arm and beak +pos5(thin,-90); pos0(thin,90); pos6(dslab,0); pos7(dslab,0); +x5=x0=x1; y5=y0=hround(h/2); rt x6r=rt x7r= x1r+middlebar_*side; +top y6-bot y7= thin + 3/4thick; y5=.5[y6,y7]; +arm(5,6,e,eta,0); arm(0,7,f,eta,0); % middle arms and beaks +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(0,1,2,3,4,5,6,7); endchar; % end of "F" + + +cmchar "Pacioli's original 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;% topmost pen position +pos3(thick,180); lft z3r=(u,h/2); +pos4(thin, 270); x4=x2; bot y4r=0; +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 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; + |