% Compute the font construction parameters for the Computer
% Modern Roman family. Some other Computer Modern families
% compute their parameters as modifications of these.
u#:= % unit width
(if design_size < 10: ((design_size*15)+50)
%elseif design_size < 12: ((design_size*17.5)+25)
else: (-(0.062437562437*design_size*design_size) +
(18.8736263736*design_size) +
(17.5074925074))fi)/360pt#;
width_adj#:= % width adjustment for certain characters
0pt#;
serif_fit#:= % extra sidebar near lowercase serifs
0pt#;
cap_serif_fit#:= % extra sidebar near uppercase serifs
(if design_size < 9: ((-0.5*design_size*design_size)+
(13.5*design_size)-35)
elseif design_size < 10: ((design_size*4)+10)
else: (((0.022893772893*design_size*design_size) +
(3.4963369963*design_size) +
(12.7472527472))+0.002)fi)/360pt#;
letter_fit#:= % extra space added to all sidebars
(if design_size < 6: (-(design_size*20)+150)
elseif design_size < 7: (-(design_size*10)+90)
elseif design_size < 8: (-(design_size*20)+160)
elseif design_size < 10: (0)
else: (-(0.9365634365616*design_size*design_size)+
(20.60439560424*design_size) -
(112.38761238732))fi)/360pt#;
body_height#:= % height of tallest characters
(if design_size < 10: (design_size*270)
else: (-(0.14568764568*design_size*design_size) +
(273.205128205*design_size) -
(17.482517482))fi)/360pt#;
asc_height#:= % height of lowercase ascenders
(design_size*250)/360pt#;
cap_height#:= % height of caps
(if design_size < 10: (design_size*246)
else: (-(0.0228937728937*design_size*design_size) +
(246.503663003*design_size) -
(2.74725274725))fi)/360pt#;
fig_height#:= % height of numerals
(if design_size < 10: ((design_size*232)+0.00006)
else: ((0.0270562770562*design_size*design_size) +
(231.404761904*design_size) +
(3.24675324675))fi)/360pt#;
x_height#:= % height of lowercase without ascenders
(if design_size < 10: (design_size*155)
else: (-(0.010406260406*design_size*design_size) +
(155.22893772*design_size) -
(1.2487512487))fi)/360pt#;
math_axis#:= % axis of symmetry for math symbols
(if design_size < 10: (design_size*90)
else: (-(0.00520313020313*design_size*design_size) +
(90.1144688644*design_size) -
(0.624375624375))fi)/360pt#;
bar_height#:= % height of crossbar in lowercase e
(if design_size < 10: (design_size*87)
else: ((-(0.087412587412*design_size*design_size) +
(88.923076923*design_size) -
(10.4895104895))+0.0008)fi)/360pt#;
comma_depth#:= % depth of comma below baseline
(if design_size < 10: (design_size*70)
else: ((0.010406260406*design_size*design_size) +
(69.771062271*design_size) +
(1.2487512487))fi)/360pt#;
desc_depth#:= % depth of lowercase descenders
(if design_size < 10: (design_size*70)
else: ((0.010406260406*design_size*design_size) +
(69.771062271*design_size) +
(1.2487512487))fi)/360pt#;
crisp#:= % diameter of serif corners
0/360pt#;
tiny#:= % diameter of rounded corners
(if design_size < 6: ((design_size*10)+10)
elseif design_size < 7: (70)
elseif design_size < 8: (design_size*10)
else: (80)fi)/360pt#;
fine#:= % diameter of sharply rounded corners
(if design_size < 6: (design_size*10)
elseif design_size < 7: (60)
elseif design_size < 8: ((design_size*10)-10)
else: (70)fi)/360pt#;
thin_join#:= % width of extrafine details
(if design_size < 6: (design_size*10)
elseif design_size < 7: (60)
elseif design_size < 8: ((design_size*10)-10)
elseif design_size < 10: (70)
%elseif design_size < 12: ((design_size*2.5)+45)
else: ((0.046828171828*design_size*design_size) +
(1.4697802197*design_size) +
(50.6193806193))fi)/360pt#;
hair#:= % lowercase hairline breadth
(if design_size < 8: ((design_size*5)+50)
elseif design_size < 10: (90)
%elseif design_size < 12: ((design_size*2.5)+65)
else: ((0.046828171828*design_size*design_size) +
(1.4697802197*design_size) +
(70.6193806193))fi)/360pt#;
stem#:= % lowercase stem breadth
(if design_size < 9: ((design_size*20)+60)
elseif design_size < 10: ((design_size*10)+150)
elseif design_size < 12: ((design_size*15)+100)
else: ((design_size*9.4696969696)+166.36363637)fi)/360pt#;
curve#:= % lowercase curve breadth
(if design_size < 9: ((design_size*25)+55)
elseif design_size < 10: ((design_size*20)+100)
elseif design_size < 40: ((-0.23934398934*design_size*design_size) +
(20.265567765*design_size) +
(121.278721278))
else: (548.951048934)fi)/360pt#;
ess#:= % breadth in middle of lowercase s
(if design_size < 7: (-(design_size*design_size*5) +
(design_size*105)-280)
elseif design_size < 10: ((design_size*20)+70)
elseif design_size < 12: ((design_size*15)+120)
else: ((design_size*9.4696969696)+186.36363637)fi)/360pt#;
flare#:= % diameter of bulbs or breadth of terminals
(if design_size < 6: ((design_size*20)+90)
elseif design_size < 10: ((design_size*30)+30)
%elseif design_size < 12: ((design_size*15)+180)
else: ((0.280969030969*design_size*design_size) +
(8.8186813186*design_size) +
(213.71628317))fi)/360pt#;
dot_size#:= % diameter of dots
(if design_size < 6: ((design_size*40)+20)
elseif design_size < 10: ((design_size*30)+80)
elseif design_size < 12: ((design_size*20)+180)
else: ((design_size*17.0454545454)+215.45454546)fi)/360pt#;
cap_hair#:= % uppercase hairline breadth
(if design_size < 9: ((design_size*5)+55)
elseif design_size < 10: ((design_size*10)+10)
%elseif design_size < 12: ((design_size*2.5)+85)
else: ((0.046828171828*design_size*design_size) +
(1.4697802197*design_size) +
(90.6193806193))fi)/360pt#;
cap_stem#:= % uppercase stem breadth
(if design_size < 9: ((design_size*25)+65)
elseif design_size < 10: ((design_size*30)+20)
elseif design_size < 12: ((design_size*15)+170)
elseif design_size < 30: ((-0.4995004995*design_size*design_size) +
(25.989010989*design_size) +
(110.059940059))
else: (440.179820179)fi)/360pt#;
cap_curve#:= % uppercase curve breadth
(if design_size < 9: ((design_size*30)+60)
elseif design_size < 10: ((design_size*40)-30)
%elseif design_size < 12: ((design_size*15)+220)
elseif design_size < 45: ((-0.23934398934*design_size*design_size) +
(20.265567765*design_size) +
(191.278721278))
else: (618.557692303)fi)/360pt#;
cap_ess#:= % breadth in middle of uppercase s
(if design_size < 6: ((design_size*50)-110)
elseif design_size < 10: ((design_size*40)-50)
elseif design_size < 12: ((design_size*15)+200)
else: ((design_size*9.46969696)+266.36363637)fi)/360pt#;
rule_thickness#:= % thickness of lines in math symbols
(if design_size < 7: ((design_size*3)+13)
elseif design_size < 12: ((design_size*2)+20)
else: ((design_size*3.0303030303)+7.6363636364)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
(if design_size < 10: (design_size*20)
else: (-(0.145687645687*design_size*design_size) +
(23.2051282051*design_size) -
(17.4825174825))fi)/360pt#;
jut#:= % protrusion of lowercase serifs
(if design_size < 7: ((design_size*20)+50)
elseif design_size < 10: ((design_size*30)-20)
elseif design_size < 12: ((design_size*25)+30)
else: ((design_size*17.0454545454)+125.45454546)fi)/360pt#;
cap_jut#:= % protrusion of uppercase serifs
(if design_size < 8: ((design_size*30)+50)
elseif design_size < 10: ((design_size*40)-30)
elseif design_size < 12: ((design_size*20)+170)
else: ((design_size*17.0454545454)+205.45454546)fi)/360pt#;
beak_jut#:= % horizontal protrusion of beak serifs
(if design_size < 10: ((design_size*8)+20)
%elseif design_size < 12: ((design_size*7)+30)
else: ((-(0.024975024975*design_size*design_size) +
(7.5494505494*design_size) +
(27.0029970029))+0.0005)fi)/360pt#;
beak#:= % vertical protrusion of beak serifs
(if design_size < 10: (design_size*70)
else: ((0.010406260406*design_size*design_size) +
(69.771062271*design_size) +
(1.2487512487))fi)/360pt#;
vair#:= % vertical diameter of hairlines
(if design_size < 6: ((design_size*10)+10)
elseif design_size < 7: (70)
elseif design_size < 8: (design_size*10)
elseif design_size < 10: (80)
%elseif design_size < 12: ((design_size*2.5)+55)
else: (((0.046828171828*design_size*design_size) +
(1.4697802197*design_size) +
(60.6193806193))-0.00013)fi)/360pt#;
notch_cut#:= % maximum breadth above or below notches
(if design_size < 10: (design_size*100)
else: (-(0.728438228438*design_size*design_size) +
(116.02564102*design_size) -
(87.4125874125))fi)/100pt#;
bar#:= % lowercase bar thickness
(if design_size < 9: ((design_size*5)+55)
elseif design_size < 10: ((design_size*10)+10)
elseif design_size < 12: ((design_size*7.5)+35)
else: ((design_size*6.6287878787)+45.45454546)fi)/360pt#;
slab#:= % serif and arm thickness
(if design_size < 9: ((design_size*5)+55)
elseif design_size < 10: ((design_size*10)+10)
elseif design_size < 12: ((design_size*7.5)+35)
else: ((design_size*6.6287878787)+45.45454546)fi)/360pt#;
cap_bar#:= % uppercase bar thickness
(if design_size < 9: ((design_size*5)+55)
elseif design_size < 10: ((design_size*10)+10)
elseif design_size < 12: ((design_size*7.5)+35)
else: ((design_size*6.6287878787)+45.45454546)fi)/360pt#;
cap_band#:= % uppercase thickness above/below lobes
(if design_size < 9: ((design_size*5)+55)
elseif design_size < 10: ((design_size*10)+10)
elseif design_size < 12: ((design_size*7.5)+35)
else: ((design_size*6.6287878787)+45.45454546)fi)/360pt#;
cap_notch_cut#:= % max breadth above/below uppercase notches
(if design_size < 10: (design_size*100)
else: (-(0.72843822843*design_size*design_size) +
(116.025641025*design_size) -
(87.412587412))fi)/100pt#;
serif_drop#:= % vertical drop of sloped serifs
(if design_size < 12: (design_size*4)
else: ((design_size*design_size*0.0228937728937) +
(design_size * 3.49633699633) +
2.74725274725)fi)/360pt#;
stem_corr#:= % for small refinements of stem breadth
(if design_size < 8: ((design_size*1)+2)
else: (10)fi)/360pt#;
vair_corr#:= % for small refinements of hairline height
(if design_size < 7: ((design_size*2)-5)
elseif design_size < 8: (-(design_size*design_size*0.5) +
(design_size*8.5) - 26)
else: (10)fi)/360pt#;
apex_corr#:= % extra width at diagonal junctions
0pt#;
o#:= % amount of overshoot for curves
(if design_size < 7: ((design_size*5)+15)
elseif design_size < 10: ((design_size*10)-20)
elseif design_size < 12: ((design_size*5)+30)
else: ((design_size*1.8939393939)+67.2727272732)fi)/360pt#;
apex_o#:= % amount of overshoot for diagonal junctions
(if design_size < 7: ((design_size*5)+15)
elseif design_size < 10: ((design_size*10)-20)
elseif design_size < 12: ((design_size*5)+30)
else: ((design_size*1.8939393939)+67.2727272732)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*200)+2000)
elseif design_size < 12: (-(design_size*100)+1000)
else: (-(design_size*37.8787878787)+254.545454)fi)/1000;
superness:= % parameter for superellipses
1/sqrt2;
superpull:= % extra openness inside bowls
1/6;
beak_darkness:= % fraction of triangle inside beak serifs
11/30;
ligs:= % level of ligatures to be included
(if design_size < 6: (1)
else: (2)fi);
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;
|