% 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.


