% eczz.mf % % Content: % % Parameter for % % European CM-style Sans Serif small caps % % % By Ariel Barton, March 2013 % % Based on ecss.mf and eccc.mf by J"org Knappen font_identifier:="ECSSCSC"; font_size (gensize*pt#); basedef ( 8, 9, 10, 12, 17.28); % If ecrm and ecss agree, use the value from eccc % If ecrm and eccc agree, use the value from ecss % If ecss and eccc agree, use the value they agree on % (If they almost agree, use ecss) gendef [1/36pt#]( u# )( 18, 19.5, 21, 24.5, 33.5); % eccc gendef [1/36pt#]( width_adj# )( 12, 13, 15, 17, 24); % ecss gendef [1/36pt#]( serif_fit# )( [-6], [-6.5], [-7], [-9], [-12]); % ecss gendef [1/36pt#]( cap_serif_fit# )( [-8.5], [-9], [-10], [-13], [-17]); % ecss gendef [1/36pt#]( letter_fit# )( 5, 5, 5, 5, 5); % eccc gendef [1/36pt#]( body_height# )( 216, 243, 270, 324, 466); gendef [1/36pt#]( asc_height# )( 205, 235, 260, 315, 445); % ecss gendef [1/36pt#]( cap_height# )( 200, 225, 250, 300, 425); % ecss gendef [1/36pt#]( fig_height# )( 189, 212, 236, 283, 408); % ecss gendef [1/36pt#]( x_height# )( 128, 144, 160, 192, 267.8); % ecss gendef [1/36pt#]( math_axis# )( 72, 81, 90, 108, 155.5); gendef [1/36pt#]( bar_height# )( 63, 71, 79, 97, 136); % ecss gendef [1/36pt#]( comma_depth# )( 37, 41, 45, 54, 78); % ecss gendef [1/36pt#]( desc_depth# )( 56, 63, 70, 84, 121); gendef [1/36pt#]( acc_height# )( 60, 65, 70, 82, 110); % ecss gendef [1/36pt#]( dot_height# )( 45.8, 50.4, 56, 67.2, 90); % ecss gendef [1/36pt#]( udot_height# )( 48.2, 53.1, 59, 70.8, 100.3); % ecss gendef [1/36pt#]( crisp# )( 0, 0, 0, 0, 0); gendef [1/36pt#]( tiny# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( fine# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( thin_join# )( 15, 16, 17, 20, 24); % ecss gendef [1/36pt#]( hair# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( stem# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( curve# )( 25, 27, 28, 30, 33); % ecss gendef [1/36pt#]( ess# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( flare# )( 22, 24, 25, 30, 33); % ecss gendef [1/36pt#]( dot_size# )( 26, 28, 30, 35, 40); % ecss gendef [1/36pt#]( cap_hair# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( cap_stem# )( 29, 31, 32, 33, 39); % ecss gendef [1/36pt#]( cap_curve# )( 29, 31, 32, 37, 42); % ecss gendef [1/36pt#]( cap_ess# )( 28, 31, 32, 37, 42); % ecss gendef [pt#]( rule_thickness#)( .36, .38, .4, .44, .6); gendef [1/36pt#]( dish# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( bracket# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( jut# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( cap_jut# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( beak_jut# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( beak# )( .4, .5, .5, .6, .8); % ecss gendef [1/36pt#]( vair# )( 19, 21, 22, 26, 31); % ecss gendef [1/36pt#]( notch_cut# )( 16, 17, 18, 22, 32); % ecss gendef [1/36pt#]( bar# )( 18, 20, 21, 25, 30); % ecss gendef [1/36pt#]( slab# )( 20, 22, 23, 27, 32); % ecss gendef [1/36pt#]( cap_bar# )( 19, 21, 22, 26, 31); % ecss gendef [1/36pt#]( cap_band# )( 17, 19, 20, 24, 30); % ecss gendef [1/36pt#]( cap_notch_cut# )( 22, 24, 25, 31, 36); % ecss gendef [1/36pt#]( serif_drop# )( 2, 2, 2, 2, 2); % ecss gendef [1/36pt#]( stem_corr# )( 1, 1, 1, 1, 1); gendef [1/36pt#]( vair_corr# )( 1, 1, 1, 1, 1); gendef [1/36pt#]( apex_corr# )( 4, 4.5, 5, 6, 7); % ecss gendef [1/36pt#]( o# )( 6, 7, 8, 9, 10); gendef [1/36pt#]( apex_o# )( 0, 0, 0, 0, 0); % ecss slant:=0; gendef ( fudge )( .93, .95, .96, .98, .98); % ecss gendef ( math_spread )( .4, .2, 0, [-.2], [-.4]); % eccc superness:=1/sqrt 2; superpull:=1/20; % ecss beak_darkness:=0; % ecss square_dots:=true; % ecss hefty:=true; % ecss serifs:=false; % ecss monospace:=false; variant_g:=false; low_asterisk:=false; math_fitting:=false; % If ecrm and ecss agree % then use the value from eccc gendef [1/36pt#]( lower.u# )( 13, 14.5, 16, 19.5, 28.5); % eccc gendef [1/36pt#]( lower.letter_fit# )( 2.4, 2.4, 2.4, 2.4, 2.4); % eccc gendef [1/36pt#]( lower.body_height# )( 146, 173, 200, 254, 396); % eccc gendef [1/36pt#]( lower.o# )( 3, 4, 5, 6, 7); % eccc % If ecss parameter is zero, % then so is the corresponding lower gendef [1/36pt#]( lower.cap_jut# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( lower.beak_jut# )( 0, 0, 0, 0, 0); % ecss gendef [1/36pt#]( lower.apex_o# )( 0, 0, 0, 0, 0); % ecss % If eccc upper. and lower. match % then Knuth is a silly person % and we use the ecss value gendef [1/36pt#]( lower.cap_notch_cut# )( 22, 24, 25, 31, 36); % ecss gendef ( lower.fudge )( .93, .95, .96, .98, .98); % ecss % This is because ecxc (bold small caps) % has the same value for width_adj# and lower.width_adj# gendef [1/36pt#]( lower.width_adj# )( 12, 13, 15, 17, 24); % ecss % Otherwise we have to make decisions % Note: ecrm and eccc agree on all these parameters % except for cap_stem and cap_curve % where they differ very slightly for the largest fonts. % Basic idea: take the ecss value % and multiply by (lower/upper) %gendef [1/36pt#]( upper.cap_serif_fit# )( 4.1, 4.6, 5, 5.8, 8); % eccc %gendef [1/36pt#]( lower.cap_serif_fit# )( 3.1, 3.6, 4, 4.8, 7); % eccc %gendef [1/36pt#]( upper.cap_serif_fit# )( [-8.5], [-9], [-10], [-13], [-17]); % ecss gendef [1/36pt#]( lower.cap_serif_fit# )( [-6.4268292683], [-7.0434782609], [-8], [-10.7586206897], [-14.875]); %gendef [1/36pt#]( upper.cap_height# )( 196.8, 221.4, 246, 295.2, 425); % eccc %gendef [1/36pt#]( lower.cap_height# )( 135.8, 160.4, 185, 226, 335); % eccc %gendef [1/36pt#]( upper.cap_height# )( 200, 225, 250, 300, 425); % ecss gendef [1/36pt#]( lower.cap_height# )( 138, 163, 188, 229.674796748, 335); %gendef [1/36pt#]( upper.x_height# )( 124, 139.5, 155, 186, 267.8); % eccc %gendef [1/36pt#]( lower.x_height# )( 85, 100.5, 116, 147, 228.8); % eccc %gendef [1/36pt#]( upper.x_height# )( 128, 144, 160, 192, 267.8); % ecss gendef [1/36pt#]( lower.x_height# )( 87.7419354839, 103.7419354839, 119.7419354839, 151.7419354839, 228.8); %gendef [1/36pt#]( upper.bar_height# )( 69.6, 78.3, 87, 104.4, 150); % eccc %gendef [1/36pt#]( lower.bar_height# )( 47.6, 56.3, 65, 82.4, 128); % eccc %gendef [1/36pt#]( upper.bar_height# )( 63, 71, 79, 97, 136); % ecss gendef [1/36pt#]( lower.bar_height# )( 43.0862068966, 51.0510855683, 59.0229885057, 76.5593869732, 116.0533333333); %gendef [1/36pt#]( upper.comma_depth# )( 56, 63, 70, 84, 121); % eccc %gendef [1/36pt#]( lower.comma_depth# )( 38, 45, 52, 64, 103); % eccc %gendef [1/36pt#]( upper.comma_depth# )( 37, 41, 45, 54, 78); % ecss gendef [1/36pt#]( lower.comma_depth# )( 25.1071428571, 29.2857142857, 33.4285714286, 41.1428571429, 66.3966942149); %gendef [1/36pt#]( upper.stem# )( 22, 24, 25, 28, 33); % eccc %gendef [1/36pt#]( lower.stem# )( 18, 20, 21, 24, 29); % eccc %gendef [1/36pt#]( upper.stem# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( lower.stem# )( 20.4545454545, 22.5, 23.52, 28.2857142857, 32.5151515152); %gendef [1/36pt#]( upper.flare# )( 27, 30, 33, 36, 45); % eccc %gendef [1/36pt#]( lower.flare# )( 19, 22, 25, 28, 37); % eccc %gendef [1/36pt#]( upper.flare# )( 22, 24, 25, 30, 33); % ecss gendef [1/36pt#]( lower.flare# )( 15.4814814815, 17.6, 18.9393939394, 23.3333333333, 27.1333333333); %gendef [1/36pt#]( upper.dot_size# )( 32, 35, 38, 42, 51); % eccc %gendef [1/36pt#]( lower.dot_size# )( 32, 35, 38, 42, 51); % eccc %gendef [1/36pt#]( upper.dot_size# )( 26, 28, 30, 35, 40); % ecss gendef [1/36pt#]( lower.dot_size# )( 26, 28, 30, 35, 40); %gendef [1/36pt#]( upper.cap_hair# )( 9.5, 10, 11, 11.5, 13); % eccc %gendef [1/36pt#]( lower.cap_hair# )( 7.6, 8.1, 9.1, 9.6, 11.1); % eccc %gendef [1/36pt#]( upper.cap_hair# )( 25, 27, 28, 33, 37); % ecss gendef [1/36pt#]( lower.cap_hair# )( 20, 21.87, 23.1636363636, 27.547826087, 31.5923076923); %gendef [1/36pt#]( upper.cap_stem# )( 26.5, 29, 32, 35, 40); % eccc %gendef [1/36pt#]( lower.cap_stem# )( 20.5, 23, 26, 29, 34); % eccc %gendef [1/36pt#]( upper.cap_stem# )( 29, 31, 32, 33, 39); % ecss gendef [1/36pt#]( lower.cap_stem# )( 22.4339622642, 24.5862068966, 26, 27.3428571429, 33.15); %gendef [1/36pt#]( upper.cap_curve# )( 30, 33, 37, 40, 48); % eccc %gendef [1/36pt#]( lower.cap_curve# )( 24, 27, 31, 34, 42); % eccc %gendef [1/36pt#]( upper.cap_curve# )( 29, 31, 32, 37, 42); % ecss gendef [1/36pt#]( lower.cap_curve# )( 23.2, 25.3636363636, 26.8108108108, 31.45, 36.75); %gendef [1/36pt#]( upper.cap_ess# )( 27, 31, 35, 38, 43); % eccc %gendef [1/36pt#]( lower.cap_ess# )( 20, 24, 28, 31, 36); % eccc %gendef [1/36pt#]( upper.cap_ess# )( 28, 31, 32, 37, 42); % ecss gendef [1/36pt#]( lower.cap_ess# )( 20.7407407407, 24, 25.6, 30.1842105263, 35.1627906977); %gendef [1/36pt#]( upper.beak# )( 56, 63, 70, 84, 121); % eccc %gendef [1/36pt#]( lower.beak# )( 38, 45, 52, 66, 103); % eccc %gendef [1/36pt#]( upper.beak# )( 0.4, 0.5, 0.5, 0.6, 0.8); % ecss gendef [1/36pt#]( lower.beak# )( 0.2714285714, 0.3571428571, 0.3714285714, 0.4714285714, 0.6809917355); %gendef [1/36pt#]( upper.slab# )( 9.5, 10, 11, 12.5, 16); % eccc %gendef [1/36pt#]( lower.slab# )( 7.6, 8.1, 9.1, 10.6, 14.1); % eccc %gendef [1/36pt#]( upper.slab# )( 20, 22, 23, 27, 32); % ecss gendef [1/36pt#]( lower.slab# )( 16, 17.82, 19.0272727273, 22.896, 28.2); %gendef [1/36pt#]( upper.cap_bar# )( 9.5, 10, 11, 12.5, 16); % eccc %gendef [1/36pt#]( lower.cap_bar# )( 7.6, 8.1, 9.1, 10.6, 14.1); % eccc %gendef [1/36pt#]( upper.cap_bar# )( 19, 21, 22, 26, 31); % ecss gendef [1/36pt#]( lower.cap_bar# )( 15.2, 17.01, 18.2, 22.048, 27.31875); %gendef [1/36pt#]( upper.cap_band# )( 9.5, 10, 11, 12.5, 16); % eccc %gendef [1/36pt#]( lower.cap_band# )( 7.6, 8.1, 9.1, 10.6, 14.1); % eccc %gendef [1/36pt#]( upper.cap_band# )( 17, 19, 20, 24, 30); % ecss gendef [1/36pt#]( lower.cap_band# )( 13.6, 15.39, 16.5454545455, 20.352, 26.4375); clear_extra_memory; generate excsc endinput;