% 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