% Computer Modern Roman Caps and Small Caps
% Completely rebuildt for Sauter-2.3 version.
% Now truely supports the ams extracm fonts cmcsc8 and cmcsc9.
% Sauter-2.3b: Bugs for design_sizes \ge 10 fixed
% Changes[Sauter-2.4] Bug in lower.comma_depth for design_sizes \ge 10 fixed;
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:
(u#*36 - 0.5*design_size + 5)
elseif design_size < 10:
(u#*36 + 0.5*(design_size - 8))
else:
((u#*36) + (design_size/10))
fi) / 36*pt#;
% cmcsc8 is 2.5, cmcsc9 is 3.5, cmcsc10 is 5.
letter_fit#:= % extra space added to all sidebars
(if design_size < 8:
(letter_fit# * 36 + 2.5)
elseif design_size < 9:
((design_size - 8) + 2.5)
elseif design_size < 10:
(1.5 * design_size -10)
else:
((letter_fit#*36) + (design_size *0.5))
fi) / 36*pt#;
ligs:=1; % level of ligatures to be included
% now come replacements used to set the lowercase caps
lower.u#:= % unit width
(if design_size < 10:
(1.5*design_size + 1)
else:
(u#*36*16/21)
fi) / 36*pt#;
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 - 8) * 0.7 + 2.7)
elseif design_size < 10:
(0.6*design_size -2)
else:
(cap_serif_fit# * 36 * 4)/5
fi) / 36*pt#;
% 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 - 8)/2 + 4)
elseif design_size < 10:
(-1.1*design_size + 13.4)
else:
(letter_fit# * 36 * 12) / 25
fi) / 36*pt#;
lower.body_height#:= % height of tallest characters
(if design_size < 10:
(27*design_size -70)
else:
(body_height#*36*20/27)
fi) /36*pt#;
% cmsc8 is 145.8, cmcsc9 is 170.4, cmsc10 is 185.
lower.cap_height#:= % height of caps
(if design_size < 9:
(24.6*design_size - 51)
elseif design_size < 10:
(14.6*design_size + 39)
else:
((cap_height#*36*18.5)/24.6)
fi) / 36*pt#;
lower.x_height#:= % height of lowercase without ascenders
if design_size < 10:
(15.5*design_size - 39)/36pt#;
else:
(x_height#*116)/(155);
fi;
lower.bar_height#:= % height of crossbar in lowercase e
(if design_size < 10:
(8.7*design_size - 22)
else:
(bar_height#*36*65)/87
fi) / 36*pt#;
% cmsc8 is 38, cmcsc9 is 45, cmsc10 is 52.
lower.comma_depth#:= % depth of comma below baseline
(if design_size < 10:
((design_size - 8) * 7 + 38)
else:
(comma_depth#*36*52)/70
fi) / 36*pt#;
lower.flare#:= % diameter of bulbs or breadth of terminals
(if design_size < 9:
(2*design_size + 4)
elseif design_size < 10:
(3*design_size -5)
else:
(flare#*36*25)/33
fi) / 36*pt#;
lower.cap_hair#:= % uppercase hairline breadth
(if design_size < 10:
(0.5*design_size + 4.1)
else:
(cap_hair#*36*91)/110
fi) / 36*pt#;
lower.stem#:= % lowercase stem breadth
(if design_size < 10:
(2*design_size + 1)
else:
(stem#*36*21)/25
fi) / 36*pt#;
% cmcsc8 is 21, cmcsc9 is 23.5, cmcsc10 is 26.
lower.cap_stem#:= % uppercase stem breadth
(if design_size < 10:
(2.5*design_size + 1)
else:
(cap_stem#*36*13)/16
fi) / 36*pt#;
lower.cap_curve#:= % uppercase curve breadth
(if design_size < 10:
(3*design_size + 1)
else:
(cap_curve#*36*31)/37
fi) / 36*pt#;
lower.cap_ess#:= % breadth in middle of uppercase s
(if design_size < 10:
(4*design_size -12)
else:
(cap_ess#*36*4)/5
fi) / 36*pt#;
lower.cap_jut#:= % protrusion of uppercase serifs
(if design_size < 10:
(3*design_size - 4)
else:
(cap_jut#*36*26)/37
fi) / 36*pt#;
lower.beak_jut#:= % horizontal protrusion of beak serifs
(if design_size < 10:
(0.8*design_size - 1)
else:
(beak_jut#*36*7)/10
fi) / 36*pt#;
lower.beak#:= % vertical protrusion of beak serifs
(if design_size < 10:
(7*design_size - 18)
else:
(beak#*36*52)/70
fi) / 36*pt#;
lower.slab#:= % serif and arm thickness
(if design_size < 10:
(0.5*design_size + 4.1)
else:
(slab#*36*91)/110
fi) / 36*pt#;
lower.cap_bar#:= % uppercase bar thickness
(if design_size < 10:
(0.5*design_size + 4.1)
else:
(cap_bar#*36*91)/110
fi) / 36*pt#;
lower.cap_band#:= % uppercase thickness above/below lobes
(if design_size < 10:
(0.5*design_size + 4.1)
else:
(cap_band#*36*91)/110
fi) / 36*pt#;
lower.cap_notch_cut#:= % max breadth above/below uppercase notches
cap_notch_cut#;
lower.o#:= % amount of overshoot for curves
(if design_size < 10:
0.5*design_size
else:
(o#*36*5)/8
fi) / 36*pt#;
lower.apex_o#:= % amount of overshoot for diagonal junctions
(if design_size < 9:
3
elseif design_size < 10:
(design_size -6)
else:
(apex_o#*36*0.5)
fi) / 36*pt#;
lower.fudge:= % factor applied to weights of heavy characters
fudge;
generate csc % switch to the driver file
|