% Computer Modern Typewriter Caps and Small Caps
if unknown cmbase: input cmbase fi

font_identifier:="CMTCSC"; font_size design_size * pt#;

% first come parameters used to set the uppercase letters
% (including some for lowercase that aren't actually used)

input c-cmtt;

% now come replacements used to set the lowercase caps

lower.u#:=                 % unit width
   u#;

lower.width_adj#:=         % width adjustment for certain characters
   width_adj#;

lower.cap_serif_fit#:=     % extra sidebar near uppercase serifs
   cap_serif_fit#;

lower.letter_fit#:=        % extra space added to all sidebars
  ((letter_fit#*360pt#) + (design_size * 3))/360pt#;

lower.body_height#:=       % height of tallest characters
  (body_height#*36pt#*19)/(25*36pt#);

lower.cap_height#:=        % height of caps
  (cap_height#*36pt#*17)/(22*36pt#);

lower.x_height#:=          % height of lowercase without ascenders
  (x_height#*36pt#*12)/(15.5*36pt#);

lower.bar_height#:=        % height of crossbar in lowercase e
  ((bar_height#*36pt#*62)+0.002)/(79*36pt#);

lower.comma_depth#:=       % depth of comma below baseline
  (comma_depth#*36pt#*38)/(50*36pt#);

lower.stem#:=              % lowercase stem breadth
   stem#;

lower.flare#:=             % diameter of bulbs or breadth of terminals
  (flare#*360pt#*30)/(32*360pt#);

lower.cap_hair#:=          % uppercase hairline breadth
   cap_hair#;

lower.cap_stem#:=          % uppercase stem breadth
   cap_stem#;

lower.cap_curve#:=         % uppercase curve breadth
   cap_curve#;

lower.cap_ess#:=           % breadth in middle of uppercase s
   cap_ess#;

lower.cap_jut#:=           % protrusion of uppercase serifs
  ((cap_jut#*360pt#*26)+0.01)/(34*360pt#);

lower.beak_jut#:=          % horizontal protrusion of beak serifs
    beak_jut#;

lower.beak#:=              % vertical protrusion of beak serifs
  ((beak#*360pt#*26)+0.01)/(34*360pt#);

lower.slab#:=              % serif and arm thickness
   slab#;

lower.cap_bar#:=           % uppercase bar thickness
   cap_bar#;

lower.cap_band#:=          % uppercase thickness above/below lobes
   cap_band#;

lower.cap_notch_cut#:=     % max breadth above/below uppercase notches
  (cap_notch_cut#*360pt#*24)/(25*360pt#);

lower.o#:=                 % amount of overshoot for curves
  ((o#*360pt#*3)-0.0018)/(4*360pt#);

lower.apex_o#:=            % amount of overshoot for diagonal junctions
  (apex_o#*360pt#*2)/(3*360pt#);

lower.fudge:=              % factor applied to weights of heavy characters
  ((fudge*10*85)+0.001)/(81*10);

generate csc               % switch to the driver file

