% DIMENSIONS FOR GLADIATOR FONTS % % DIMENSIONS FOR BOTH ROMAN AND ITALIC TYPES % mode_setup; if unknown slant: slant=0; notransforms; else: currenttransform:= identity slanted slant % yscaled aspect_ratio fi; %autorounding:=2; autorounding:=0; %if slant>0: autorounding:= 1; else: autorounding:= 0; fi smoothing:= 0; %smoothing:= 1; if unknown boldness: boldness=1 fi; if unknown expansion: expansion=1 fi; boldadjust=boldness[.95,1]; serifadjust=boldadjust*60dd#/(height#+50dd#); %width#=expansion*height#*boldadjust %width#=.905*expansion*height#*boldadjust width#=.95*expansion*height#*boldadjust *sqrt(sqrt(18/height#/height#+0.82)); % From this all widths are derived xheight#=0.415height#*boldadjust; % Height of lowercase letters cap#=0.67height#*boldadjust; % Height of uppercase letters descender#=0.21height#*boldadjust; % Depth of descenders ascender#=0.685height#*boldadjust; % Height of lowercase l, b, k, etc. font_size height#; font_slant slant; font_normal_space width#/3; font_normal_stretch width#/6; font_normal_shrink width#/9; font_x_height xheight#; font_quad width#; % font_identifier - must be set in roman/italic driver file % font_coding_scheme - must be set in roman/italic driver file % THE WIDTHS OF STEMS, CURVES, SERIFS, ETC. if known light: uc_curve#=lc_curve#=0.054height#*boldness; uc_thick#=lc_thick#=0.051height#*boldness; uc_med#=lc_med#=0.049height#*boldness; uc_thin#=lc_thin#=0.020height#*serifadjust; dotwidth#=1.4uc_thick#/boldness*boldadjust; else: uc_curve#=0.082height#*boldness; % Curves of uppercase letters % uc_thin#=0.03height#*serifadjust; % Thin parts of uppercase letters uc_thin#=0.028height#*serifadjust; % Thin parts of uppercase letters uc_med#=0.075height#*boldness; % Medium parts of uppercase letters uc_thick#=0.080height#*boldness; % Thick parts of uppercase letters lc_curve#=0.072height#*boldness; % Curves of lowercase letters % lc_thin#=0.03height#*serifadjust; % Thin parts of lowercase letters lc_thin#=0.027height#*serifadjust; % Thin parts of lowercase letters lc_med#=0.065height#*boldness; % Medium parts of lowercase letters lc_thick#=0.070height#*boldness; % Thick parts of lowercase letters dotwidth#=1.4uc_thick#/boldness*boldadjust; fi if known smallcaps: u#=0.15height#-lc_extrawidth#/2; % White at either side somewhat larger U#=0.165height#-uc_extrawidth#/2; % Same for uppercase else: u#=0.1height#-lc_extrawidth#/2; % White at either side U#=0.11height#-uc_extrawidth#/2; % Same for uppercase fi vo#=0.01height#; % Vertical overshoot ho#=vo#; % Horizontal overshoot gap#=0.037height#; % Gaps in bowl of a, b, d, e, etc. tens=1.1; % Tension of serifs inclination=80; % Skew of vertical serifs on E, C,... % fine#=0.015height#*serifadjust; % For tips of serifs, etc. fine#=0.019height#*serifadjust; % For tips of serifs, etc. comma_depth#=0.16height#; % Depth of comma below baseline %ba#=0.576u#; % Bowl-adjust, subtracted from u# ba#=0.4u#; % Bowl-adjust, subtracted from u# norm_pentilt=20; %17; % Curve pens are slightly tilted o_norm_pentilt=9; % Pens for o & O are slightly tilted seriftilt=0; %7; % Tilt of serif'ed ends pair serifdir; serifdir=dir(seriftilt); % For convenience %serifht#=0.08height#*serifadjust; % Height of thin serifs serifht#=0.06height#*serifadjust; % Height of thin serifs triangleht#=0.10height#*serifadjust; % Half the height of triangular serif %triangleht#=0.14height#*serifadjust; % Half the height of triangular serif bowljoin#=0.44xheight#; % Join of bowl and stem above baseline lc_extrawidth#=(boldadjust-1)*lc_thick#; % Added to 2-stem characters uc_extrawidth#=(boldadjust-1)*uc_thick#; % Added to 2-stem characters if known sans: serifwd#=0; % How much serifs protrude trianglewd#=0; % Width of triangular serif else: serifwd#=0.06height#; %0.074height#; % How much serifs protrude trianglewd#=0.081height#; % Width of triangular serif fi pentilt=begingroup numeric a, b; (a,b)=dir(norm_pentilt/(boldness*boldness)); angle (a/expansion,b) endgroup; o_pentilt=begingroup numeric a, b; (a,b)=dir(o_norm_pentilt/(boldness*boldness)); angle (a/expansion,b) endgroup; %o_pentilt=atan(tan(o_norm_pentilt/boldness)/expansion); define_pixels(bowljoin, lc_med, uc_med); define_whole_blacker_pixels(serifwd, trianglewd); define_whole_vertical_blacker_pixels(serifht, triangleht); define_pixels(width, height, xheight, cap, descender, ascender); define_whole_blacker_pixels(comma_depth, gap); define_whole_blacker_pixels(uc_thick, uc_curve, dotwidth, lc_thick, lc_curve); define_whole_vertical_blacker_pixels(uc_thin, lc_thin); define_whole_pixels(u, U, ba); define_whole_blacker_pixels(fine); if fine=0: fine:=1 fi; define_corrected_pixels(vo); define_horizontal_corrected_pixels(ho); lowres_fix(lc_thick,lc_med) 1.2; lowres_fix(lc_thick,lc_curve) 1.2; lowres_fix(uc_thick,uc_med) 1.2; lowres_fix(uc_thick,uc_curve) 1.2; uc_bar=0.55cap; % Vertical position of bar in B, E,... % KERNING numeric k[]; k1=-3/2u#; % ?? k2=-5/4u#; % Between A and V k3=-u#; % Between A and o k4=-1/2u#; % Between A and u