% Compute the font construction parameters for the Computer
% Modern Bold Extended family. Some other fonts in the
% Computer Modern family compute their parameters as
% modifications of these.
u#:= % unit width
(if design_size < 10: ((design_size*17)+60)
else: ((design_size*20)+30)fi)/360pt#;
width_adj#:= % width adjustment for certain characters
(if design_size < 10: ((design_size*8)+30)
else: ((design_size*10)+10)fi)/360pt#;
serif_fit#:= % extra sidebar near lowercase serifs
0pt#;
cap_serif_fit#:= % extra sidebar near uppercase serifs
(if design_size < 10: ((design_size*8)-10)
else: ((design_size*5)+20)fi)/360pt#;
letter_fit#:= % extra space added to all sidebars
(if design_size < 8: (-(design_size*10)+80)
else: (0)fi)/360pt#;
body_height#:= % height of tallest characters
(design_size*270)/360pt#;
asc_height#:= % height of lowercase ascenders
(design_size*250)/360pt#;
cap_height#:= % height of caps
(design_size*247)/360pt#;
fig_height#:= % height of numerals
((design_size*232) + 0.00006)/360pt#;
x_height#:= % height of lowercase without ascenders
(design_size*160)/360pt#;
math_axis#:= % axis of symmetry for math symbols
(design_size*90)/360pt#;
bar_height#:= % height of crossbar in lowercase e
(if design_size < 10: ((design_size*90)-50)
else: (design_size*85)fi)/360pt#;
comma_depth#:= % depth of comma below baseline
(design_size*70)/360pt#;
desc_depth#:= % depth of lowercase descenders
(design_size*70)/360pt#;
crisp#:= % diameter of serif corners
0/360pt#;
tiny#:= % diameter of rounded corners
(if design_size < 9: ((design_size*10)+40)
else: (130)fi)/360pt#;
fine#:= % diameter of sharply rounded corners
(if design_size < 6: ((design_size*10)+30)
elseif design_size < 7: (90)
elseif design_size < 8: ((design_size*10)+20)
else: (100)fi)/360pt#;
thin_join#:= % width of extrafine details
(if design_size < 6: ((design_size*10)+30)
elseif design_size < 7: (90)
elseif design_size < 8: ((design_size*10)+20)
elseif design_size < 10: (100)
else: ((design_size*2.5)+75)fi)/360pt#;
hair#:= % lowercase hairline breadth
(if design_size < 10: ((design_size*4)+130)
else: ((design_size*6.5)+105)fi)/360pt#;
stem#:= % lowercase stem breadth
(if design_size < 7: ((design_size*40)+40)
else: ((design_size*30)+110)fi)/360pt#;
curve#:= % lowercase curve breadth
(if design_size < 9: ((design_size*40)+70)
else: ((design_size*30)+160)fi)/360pt#;
ess#:= % breadth in middle of lowercase s
(if design_size < 7: (-(design_size*design_size*10) +
(design_size*170)-410)
else: ((design_size*30)+80)fi)/360pt#;
flare#:= % diameter of bulbs or breadth of terminals
(if design_size < 8: ((design_size*40)+70)
else: ((design_size*30)+150)fi)/360pt#;
dot_size#:= % diameter of dots
(if design_size < 10: ((design_size*50)+60)
else: ((design_size*30)+260)fi)/360pt#;
cap_hair#:= % uppercase hairline breadth
(if design_size < 6: ((design_size*10)+120)
elseif design_size < 7: (180)
elseif design_size < 8: ((design_size*10)+110)
elseif design_size < 9: (190)
else: ((design_size*5)+140)fi)/360pt#;
cap_stem#:= % uppercase stem breadth
(if design_size < 8: ((design_size*50)+30)
elseif design_size < 10: ((design_size*40)+110)
else: ((design_size*30)+210)fi)/360pt#;
cap_curve#:= % uppercase curve breadth
(if design_size < 9: ((design_size*50)+60)
elseif design_size < 10: ((design_size*40)+150)
else: ((design_size*30)+250)fi)/360pt#;
cap_ess#:= % breadth in middle of uppercase s
(if design_size < 7: (-(design_size*design_size*5) +
(design_size*125) - 260)
elseif design_size < 9: (-(design_size*design_size*5) +
(design_size*135) - 330)
elseif design_size < 10: ((design_size*50)+30)
else: ((design_size*30)+230)fi)/360pt#;
rule_thickness#:= % thickness of lines in math symbols
(if design_size < 7: ((design_size*4)+23)
else: ((design_size*3)+30)fi)/100pt#;
dish#:= % amount erased at top or bottom of serifs
(if design_size < 8: ((design_size*1)+2)
else: (10)fi)/360pt#;
bracket#:= % vertical distance from serif base to tangent
(design_size*10)/360pt#;
jut#:= % protrusion of lowercase serifs
(if design_size < 8: ((design_size*20)+30)
elseif design_size < 10: ((design_size*30)-50)
else: (design_size*25)fi)/360pt#;
cap_jut#:= % protrusion of uppercase serifs
(if design_size < 10: ((design_size*40)-10)
else: ((design_size*35)+40)fi)/360pt#;
beak_jut#:= % horizontal protrusion of beak serifs
(if design_size < 10: ((design_size*8)+30)
else: ((design_size*7)+40)fi)/360pt#;
beak#:= % vertical protrusion of beak serifs
(if design_size < 10: (-(design_size*design_size*5) +
(design_size*165) - 450)
else: (design_size*70)fi)/360pt#;
vair#:= % vertical diameter of hairlines
(if design_size < 6: ((design_size*10)+50)
elseif design_size < 10: ((design_size*5)+80)
else: ((design_size*6.5)+65)fi)/360pt#;
notch_cut#:= % maximum breadth above or below notches
(design_size) * pt#;
bar#:= % lowercase bar thickness
(if design_size < 10: ((design_size*10)+70)
else: ((design_size*7.5)+95)fi)/360pt#;
slab#:= % serif and arm thickness
(if design_size < 10: ((design_size*10)+70)
else: ((design_size*7.5)+95)fi)/360pt#;
cap_bar#:= % uppercase bar thickness
(if design_size < 10: ((design_size*10)+70)
else: ((design_size*7.5)+95)fi)/360pt#;
cap_band#:= % uppercase thickness above/below lobes
(if design_size < 10: ((design_size*10)+70)
else: ((design_size*7.5)+95)fi)/360pt#;
cap_notch_cut#:= % max breadth above/below uppercase notches
(design_size) * pt#;
serif_drop#:= % vertical drop of sloped serifs
(design_size*3)/360pt#;
stem_corr#:= % for small refinements of stem breadth
(if design_size < 10: ((design_size*1)+10)
else: (20)fi)/360pt#;
vair_corr#:= % for small refinements of hairline height
(if design_size < 10: ((design_size*1)+5)
else: (15)fi)/360pt#;
apex_corr#:= % extra width at diagonal junctions
(if design_size < 8: ((design_size*design_size*5) -
(design_size*95)+440)
else: (0)fi)/360pt#;
o#:= % amount of overshoot for curves
(if design_size < 7: (30)
elseif design_size < 8: ((design_size*10)-40)
elseif design_size < 10: (40)
else: ((design_size*5)-10)fi)/360pt#;
apex_o#:= % amount of overshoot for diagonal junctions
(if design_size < 10: (30)
else: ((design_size*5)-20)fi)/360pt#;
slant:= % tilt ratio $(\Delta x/\Delta y)$
0;
fudge:= % factor applied to weights of heavy characters
1;
math_spread:= % extra openness of math symbols
(if design_size < 10: (-(design_size*20)+250)
else: (-(design_size*5)+100)fi)/100;
superness:= % parameter for superellipses
8/11;
superpull:= % extra openness inside bowls
1/8;
beak_darkness:= % fraction of triangle inside beak serifs
0.4;
ligs:= % level of ligatures to be included
2;
square_dots:= % should dots be square?
false;
hefty:= % should we try hard not to be overweight?
false;
serifs:= % should serifs and bulbs be attached?
true;
monospace:= % should all characters have the same width?
false;
variant_g:= % should an italic-style g be used?
false;
low_asterisk:= % should the asterisk be centered at the axis?
false;
math_fitting:= % should math-mode spacing be used?
false;
|