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

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

% first come parameters used to set the uppercase letters
% (including some for lowercase that aren't actually used)
% These parameters are nearly the same as the Computer Modern Roman
% parameters.

input c-cmr;

% cmcsc8 is 18, cmcsc9 is 19, cmcsc10 is 21.
u#:=                      % unit width
  (if design_size <= 9:
     ((design_size - 8pt#) * 1pt# + 18pt#)
   else:
     ((u#*36pt#) + (design_size / 10))
   fi) / 36pt#;

% cmcsc8 is 2.5, cmcsc9 is 3.5, cmcsc10 is 5.
letter_fit#:=             % extra space added to all sidebars
  (if design_size <= 9:
     ((design_size - 8pt#) * 1pt# + 2.5pt#) / 36pt#
   else:
    ((letter_fit#*360pt#) + (design_size * 5))/360pt#
   fi);

ligs:=1;                  % level of ligatures to be included

% now come replacements used to set the lowercase caps

lower.u#:=                % unit width
    ((design_size - 8pt#) * 1.5pt# + 13pt#) / 36pt#;

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

% cmsc8 is 2.7, cmcsc9 is 3.4, cmsc10 is 4.
lower.cap_serif_fit#:=    % extra sidebar near uppercase serifs
  (if design_size <= 9:
     ((design_size - 8pt#) * .7pt# + 2.7pt#)
   else:
     (cap_serif_fit# * 36pt# * 4) / 5pt#
   fi) / 36pt#;

% cmsc8 is 4, cmcsc9 is 3.5, cmsc10 is 2.4.
lower.letter_fit#:=       % extra space added to all sidebars
  (if design_size <= 9:
     ((design_size - 8pt#) * -.5pt# + 4pt#)
   else:
    (letter_fit# * 3.6pt# * 24) / 5pt#
   fi) / 36pt#;

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

% cmsc8 is 145.8, cmcsc9 is 170.4, cmsc10 is 185.
lower.cap_height#:=       % height of caps
  (if design_size <= 9:
     ((design_size - 8pt#) * 24.6pt# + 145.8pt#)
   else:
    ((cap_height#*36pt#*18.5)/24.6pt#)
   fi) / 36pt#;

lower.x_height#:=         % height of lowercase without ascenders
    (x_height#*116)/(155);

lower.bar_height#:=       % height of crossbar in lowercase e
    (bar_height#*36pt#*65)/(87*36pt#);

% cmsc8 is 38, cmcsc9 is 45, cmsc10 is 52.
lower.comma_depth#:=      % depth of comma below baseline
   ((design_size - 8pt#) * 7pt# + 38pt#) / 36pt#;

lower.stem#:=             % lowercase stem breadth
    (stem#*360pt#*21)/(25*360pt#);

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

lower.cap_hair#:=         % uppercase hairline breadth
    (cap_hair#*36pt#*91)/(11*360pt#);

% cmcsc8 is 21, cmcsc9 is 23.5, cmcsc10 is 26.
lower.cap_stem#:=         % uppercase stem breadth
    ((design_size - 8pt#) * 2.5pt# + 21pt#) / 36pt#;

lower.cap_curve#:=        % uppercase curve breadth
    (cap_curve#*360pt#*31)/(37*360pt#);

lower.cap_ess#:=          % breadth in middle of uppercase s
    (cap_ess#*360pt#*28)/(35*360pt#);

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

lower.beak_jut#:=         % horizontal protrusion of beak serifs
    (beak_jut#*360pt#*7)/(10*360pt#);

lower.beak#:=             % vertical protrusion of beak serifs
    (beak#*36pt#*52)/(7*360pt#);

lower.slab#:=             % serif and arm thickness
    (slab#*36pt#*91)/(11*360pt#);

lower.cap_bar#:=          % uppercase bar thickness
    (cap_bar#*36pt#*91)/(11*360pt#);

lower.cap_band#:=         % uppercase thickness above/below lobes
    (cap_band#*36pt#*91)/(11*360pt#);

lower.cap_notch_cut#:=    % max breadth above/below uppercase notches
    cap_notch_cut#;

lower.o#:=                % amount of overshoot for curves
    (o#*360pt#*5)/(8*360pt#);

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

lower.fudge:=             % factor applied to weights of heavy characters
    fudge;

generate csc      % switch to the driver file

