% Computer Modern Roman 8 point if unknown cmbase: input cmbase fi font_identifier:="AR"; font_size 8pt#; u#:=17/36pt#; % unit width width_adj#:=0pt#; % width adjustment for certain characters serif_fit#:=0pt#; % extra sidebar near lowercase serifs cap_serif_fit#:=4.1/36pt#; % extra sidebar near uppercase serifs letter_fit#:=0pt#; % extra space added to all sidebars body_height#:=216/36pt#; % height of tallest characters asc_height#:=200/36pt#; % height of lowercase ascenders cap_height#:=196.8/36pt#; % height of caps fig_height#:=185.6/36pt#; % height of numerals x_height#:=124/36pt#; % height of lowercase without ascenders math_axis#:=72/36pt#; % axis of symmetry for math symbols bar_height#:=69.6/36pt#; % height of crossbar in lowercase e comma_depth#:=56/36pt#; % depth of comma below baseline desc_depth#:=56/36pt#; % depth of lowercase descenders crisp#:=8/36pt#; % diameter of serif corners tiny#:=8/36pt#; % diameter of rounded corners fine#:=7/36pt#; % diameter of sharply rounded corners thin_join#:=7/36pt#; % width of extrafine details hair#:=9/36pt#; % lowercase hairline breadth stem#:=21.5/36pt#; % lowercase stem breadth curve#:=25/36pt#; % lowercase curve breadth ess#:=23/36pt#; % breadth in middle of lowercase s flare#:=26.5/36pt#; % diameter of bulbs or breadth of terminals dot_size#:=32/36pt#; % diameter of dots cap_hair#:=9.5/36pt#; % uppercase hairline breadth cap_stem#:=25.5/36pt#; % uppercase stem breadth cap_curve#:=29/36pt#; % uppercase curve breadth cap_ess#:=26/36pt#; % breadth in middle of uppercase s rule_thickness#:=.36pt#; % thickness of lines in math symbols dish#:=1/36pt#; % amount erased at top or bottom of serifs bracket#:=16/36pt#; % vertical distance from serif base to tangent jut#:=24/36pt#; % protrusion of lowercase serifs cap_jut#:=29/36pt#; % protrusion of uppercase serifs beak_jut#:=8.4/36pt#; % horizontal protrusion of beak serifs beak#:=56/36pt#; % vertical protrusion of beak serifs vair#:=8/36pt#; % vertical diameter of hairlines notch_cut#:=8pt#; % maximum breadth above or below notches bar#:=9.5/36pt#; % lowercase bar thickness slab#:=9.5/36pt#; % serif and arm thickness cap_bar#:=9.5/36pt#; % uppercase bar thickness cap_band#:=9.5/36pt#; % uppercase thickness above/below lobes cap_notch_cut#:=8pt#; % max breadth above/below uppercase notches serif_drop#:=3.2/36pt#; % vertical drop of sloped serifs stem_corr#:=1/36pt#; % for small refinements of stem breadth vair_corr#:=1/36pt#; % for small refinements of hairline height apex_corr#:=0pt#; % extra width at diagonal junctions o#:=6/36pt#; % amount of overshoot for curves apex_o#:=6/36pt#; % amount of overshoot for diagonal junctions slant:=.25; % tilt ratio $(\Delta x/\Delta y)$ fudge:=1; % factor applied to weights of heavy characters math_spread:=.4; % extra openness of math symbols superness:=1/sqrt2; % parameter for superellipses superpull:=1/6; % extra openness inside bowls beak_darkness:=11/30; % fraction of triangle inside beak serifs ligs:=2; % level of ligatures to be included square_dots:=false; % should dots be square? hefty:=false; % should we try hard not to be overweight? serifs:=true; % should serifs and bulbs be attached? monospace:=false; % should all characters have the same width? variant_g:=true; % should an italic-style g be used? low_asterisk:=false; % should the asterisk be centered at the axis? math_fitting:=true; % should math-mode spacing be used? mode_setup; font_setup; cmchar "The ligature AR"; beginchar("A",if serifs: 12u#+.5max(2u#,cap_curve#) else:12.5u#-.5width_adj# fi,cap_height#,0); italcorr .75cap_height#*slant- if serifs: 1.75 else: .5 fi\\ u#; adjust_fit(6u#+cap_serif_fit#,0); pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem penpos3(cap_band,90); penpos4(cap_band,90); penpos5(cap_curve if hefty:-3stem_corr fi,0); penpos6(vair,-90); penpos7(vair,-90); z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7; x7=x2; y7l=vround(.5h+.5vair); x4=x6; if serifs: x4=.5w-.5u; x5r=hround(w-2.25u); else: x4=.5w+.5u; x5r=hround(w-u); fi x4l:=x6l:=x4-.125cap_curve; fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe if serifs: pos6'(vair,-90); pos0(cap_stem,180); pos8(cap_curve,180); pos9(vair,-90); pos10(hair,0); z6'=z6; lft x0r=lft x8r=hround(x5-2/3u-.5cap_curve); y8=1/3[y2,y7]; y0=3/5[y2,y7]; x9=.5[x8l,x10r]; bot y9r=-o; rt x10r=hround(w-.05u); y10=1/4[y2,y7]; filldraw stroke z6'e{right}..z0e---z8e....z9e{right}..z10e{up}; % tail dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower serif else: penpos8(cap_stem-2stem_corr,0); penpos9(cap_stem,0); x8=x6+.5u; y8=y6; x9r=hround(w-.5u); y9=0; fill z8l--diag_end(8l,9l,.5,1,9r,8r)--z8r--cycle; fi % tail left_stem=if monospace:fudged.hair else: cap_hair fi if hefty: -3stem_corr fi; outer_jut=.8cap_jut; x11l=l+letter_fit+outer_jut+.5u; y11=0; x12=x1l-apex_corr-if monospace:2 fi\\u; y12=h; alpha=diag_ratio(1,.5left_stem,y12-y11,x12-x11l); penpos11(alpha*left_stem,0); penpos12(alpha*left_stem,0); fill diag_end(12l,11l,1,1,11r,12r) --diag_end(11r,12r,1,1,12l,11l)--cycle; % diagonal y15=h-slab; z15=whatever[z11,z12]; fill z15--(x1,y15)--(x1,h)--z12--cycle; % link penpos13(whatever,angle(z2-z1)); z13=whatever[z11,z12]; penpos14(cap_band,90); x14=x7; y13l=y14l; y13r=y14r; if hefty: y14r=.4h; else: y14=y7; fi penstroke z13e--z14e; % bar line if serifs: numeric inner_jut; pickup tiny.nib; prime_points_inside(11,12); if rt x11'r+cap_jut+.5u+1<=lft x2l-.75cap_jut: inner_jut=cap_jut; else: rt x11'r+inner_jut+.5u+1=lft x2l-.75inner_jut; fi dish_serif(11',12,i,1/2,outer_jut,j,.6,inner_jut)(dark); % lower left serif nodish_serif(1,2,a,1/3,cap_jut+x1l-x12,b,1/3,.5cap_jut); % upper serif fi math_fit(0,.75ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar; font_slant slant; font_x_height x_height#; if monospace: font_normal_space 9u#; % no stretching or shrinking font_quad 18u#; font_extra_space 9u#; else: font_normal_space 6u#+2letter_fit#; font_normal_stretch 3u#; font_normal_shrink 2u#; font_quad 18u#+4letter_fit#; font_extra_space 2u#; fi bye.