diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/cbfonts-all/cbbase.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/cbfonts-all/cbbase.mf | 362 |
1 files changed, 0 insertions, 362 deletions
diff --git a/Master/texmf-dist/fonts/source/public/cbfonts-all/cbbase.mf b/Master/texmf-dist/fonts/source/public/cbfonts-all/cbbase.mf deleted file mode 100644 index d435238f651..00000000000 --- a/Master/texmf-dist/fonts/source/public/cbfonts-all/cbbase.mf +++ /dev/null @@ -1,362 +0,0 @@ -% Copyright (C) 1997---2001, 2002 Claudio Beccari -% version 2.2b 2002/02/23 -% The greatest part of this file was written by Silvio Levy; CB aknowledges -% Silvio's work. -% CB added some material at the end and "corrected" some definitions, -% in particular those that produced overflows at high resolutions and -% magnifications. -% The file was renamed in order to distinguish it from Silvio's one. - -numeric cbbase; cbbase:=1; %don't read this file twice - -% make reference to file in subdirectories less painful -def readfrom(expr filename) = scantokens ("input " & filename); enddef; - -% we start by defining a few more font parameters: -boolean monowidth; %are the widths of all strokes roughly the same? -boolean straight; %are certain strokes straight? - -let old_font_setup = font_setup; -def font_setup = - define_whole_vertical_pixels(acc_ht,circ_ht,Circ_ht,iota_dp); %accent heights - old_font_setup; -enddef; - -%Since many of our characters are composite (for instance, accent+vowel), -%we avoid recomputing many pictures by saving them. -%But if we're using various definitions for the same letter (as when -%running 6test.mf) we can't use this trick, so we set working_hard:=true. - -boolean working_hard; %are we to recompute letters every time? -working_hard:=false; - -def this_letter = - italcorr ital; adjust_fit(fit_params); - if known savedpicture: currentpicture:=savedpicture; else: gen_letter; fi - if not working_hard: picture savedpicture; savedpicture:=currentpicture; fi -enddef; - -%The following routines are for use with double characters. -boolean is_double; is_double:=false; -let oldendchar=endchar; - -def begindoublechar(expr c,w_sharp,h_sharp,d_sharp) = - is_double:=true; beginchar(c,w_sharp,h_sharp,d_sharp); -enddef; - -def doublecharkern(expr k_sharp) = - if not monospace: k:=hround(k_sharp*hppp); r:=r+k; charwd:=charwd+k_sharp; fi -enddef; - -def middoublechar(expr w_sharp,h_sharp,d_sharp) = - scantokens extra_endchar; - forsuffixes e=r,l,w,charwd: numeric first.e; first.e:=e; endfor - w:=hround(w_sharp*hppp); h:=vround(h_sharp*hppp); d:=vround(d_sharp*hppp); - charwd:=w_sharp; charht:=max(charht,h_sharp); chardp:=max(chardp,d_sharp); - picture first.glyph; first.glyph=currentpicture; - clearxy; - clearit; - clearpen; -enddef; - -def endchar = - if is_double : - charwd:=first.charwd+charwd; - picture second_glyph; second_glyph=currentpicture shifted (first.r-l,0); - currentpicture:= first.glyph; addto currentpicture also second_glyph; - scantokens extra_endchar; - w:=first.w+w; r:=first.r-l+r; l:=first.l; - chardx:=first.w+w; interim xoffset:= -l; - if proofing>0: makebox(proofrule); fi - shipit; - if displaying>0: makebox(screenrule); showit; fi - endgroup; - is_double:=false - else : oldendchar - fi -enddef; - -% The new definition of endchar must be memorized so that -% the macro `iff' keeps working - -let endchar_=endchar; - -%By convention, we reserve the name z1' for the direction at z1, and so on. -%The direction at z1r is z1'r, or zdir1r. -vardef zdir[]@#= z@'@# enddef; -vardef assign_z@#(expr zz)= x@#:=xpart(zz); y@#:=ypart(zz) enddef; -vardef sgn(expr x)= if (x>0): 1 elseif (x<0): -1 else: 0 fi enddef; - -vardef double_circ_stroke text t = - forsuffixes e = l,r: path_.e:=t; endfor - if cycle path_.l: errmessage "Beware: `stroke' isn't intended for cycles"; fi - path_.l .. reverse path_.r .. cycle enddef; - -vardef drawloop(suffix $,$$,@@,@)= - numeric temp[], sup; - sup=superness; - forsuffixes e=r,l: - path curv[]e; numeric S[]e; - curv1e=pulled_super_arc.e($,$$)(.5superpull); - curv2e=pulled_super_arc.e(@,@@)(.5superpull); endfor - (S1r,S2r)=curv1r intersectiontimes curv2r; - (temp1,S2l)=curv1r intersectiontimes curv2l; - (S1l,temp2)=curv1l intersectiontimes curv2r; - for i=1 upto 9: - exitif (temp1>=S1r) and (temp2>=S2r); - begingroup - numeric S[]r, S[]l, temp[]; pair p; - interim superness:=(i/10)[sup,1]; - message"change in superness required; increased to "; show superness; - curv1r:=pulled_super_arc.r($,$$)(0); - curv2r:=pulled_super_arc.r(@,@@)(0); - (S1r,S2r)=curv1r intersectiontimes curv2r; - (temp1,S2l)=curv1r intersectiontimes curv2l; - (S1l,temp2)=curv1l intersectiontimes curv2r; - endgroup; - endfor; - if S1l=-1 : S1l:=2; fi - if S2l=-1 : S2l:=2; fi - filldraw stroke subpath(0,S1e+eps) of curv1e; - filldraw stroke subpath(0,S2e+eps) of curv2e; - filldraw subpath (S1r+eps,2) of curv1r...subpath(2,S2r+eps) of curv2r..cycle; -enddef ; - -% helpful macro for deciding the quadrant in gr_arc.$ ($=r,l) - -vardef signum(expr x)=if x<0: -1 else: 1 fi enddef; - - -vardef gr_arc.r(suffix $,$$,$$$)(expr min,max,tilt)= - pair center, corner; - if signum(y$$$r-y$r)*signum(x$$$r-x$r) < 0 : %first or third quadrant - center=(x$$$r,y$r); corner=(x$r,y$$$r); - else : - center=(x$r,y$$$r); corner=(x$$$r,y$r); - fi - z$r{corner-z$r}...superness[center,corner]{z$$$r-z$r}... - {z$$$r-corner}z$$$r -enddef; - -vardef gr_arc.l(suffix $,$$,$$$)(expr min,max,tilt)= - save p,q,wdth; - pair center, corner, temp; - numeric wdth, t, s; - path p,q; - if signum(y$$$r-y$r)*signum(x$$$r-x$r) < 0 : %first or third quadrant - center=(x$$$r,y$r); corner=(x$r,y$$$r); - if tilt>=0 : wdth:=min; other_wdth:=max; t:=2(1-tilt); - else : wdth:=max; other_wdth:=min; t:=-2tilt; fi - else : - center=(x$r,y$$$r); corner=(x$$$r,y$r); - if tilt>=0 : wdth:=max; other_wdth:=min; t:=2(1-tilt); - else : wdth:=min; other_wdth:=max; t:=-2tilt; fi - fi - p:=z$r{corner-z$r}...superness[center,corner]{z$$$r-z$r}... - {z$$$r-corner}z$$$r; - pos$$(wdth,angle direction t of p - 90); - z$$r=point t of p; - assign_z$$'l(direction t of p); - assign_z$$'r(z$$'l); - if other_wdth<=currentbreadth: errmessage "bad pos"; fi - temp:=point (2-t) of p- - (other_wdth-currentbreadth,0) rotated (angle direction (2-t) of p - 90); - boolean k[]; k1:=false; k2:=false; - if unknown x$l: - k1:=true; - assign_z$l(temp); - assign_z$'l(direction(2-t) of p); - if signum(y$$$r-y$r)*signum(x$$$r-x$r) < 0 : %first or third quadrant - y$l:=2ypart center-y$l; - x$'l:=-x$'l; - else: - x$l:=2xpart center-x$l; - y$'l:=-y$'l; - fi - fi - if unknown x$$$l: - k2:=true; - assign_z$$$l(temp); - assign_z$$$'l(direction(2-t) of p); - if signum(y$$$r-y$r)*signum(x$$$r-x$r) < 0 : %first or third quadrant - x$$$l:=2xpart center-x$$$l; - y$$$'l:=-y$$$'l; - else: - y$$$l:=2ypart center-y$$$l; - x$$$'l:=-x$$$'l; - fi - fi - q:=z$l{z$'l}...z$$l{z$$'l}...z$$$l{z$$$'l}; - if k1 : - t := xpart(q intersectiontimes (center---z$r)); - if t=-1 : t:=0; fi - assign_z$l(point t of q); - assign_z$'l(direction t of q); - assign_z$'r(corner-z$r); - z$l+z$r=2z$; - else: t:=0; - fi - if k2 : - s := xpart(q intersectiontimes (center---z$$$r)); - if s=-1 : s:=2; fi - assign_z$$$l(point s of q); - assign_z$$$'l(direction s of q); - assign_z$$$'r(z$$$r-corner); - z$$$l+z$$$r=2z$$$; - else: s:=2; - fi - subpath (t,s) of q -enddef; - -vardef doodah(suffix $,$$,$$$)= - if known x$$: - vardef ward(expr gr)= - sgn(xpart direction 1 of (z${zdir$}..(x$$,gr)..{zdir$$$}z$$$)) <> sgn(x$-x$$) - enddef; - y$$=solve ward(y$,y$$$); - else: - vardef ward(expr gr)= - sgn(ypart direction 1 of (z${zdir$}..(gr,y$$)..{zdir$$$}z$$$)) <> sgn(y$-y$$) - enddef; - x$$=solve ward(x$,x$$$); - fi - (z${zdir$}..z$$..{zdir$$$}z$$$) -enddef; - -forsuffixes e=r,l: - vardef club.e(suffix $,$$,$$$)= doodah($e,$$e,$$$e) enddef; endfor - -screen_rows:=600; screen_cols:=1000; - -vardef alpha_tail(suffix $,$$) = - pos$$(hair,180); top y$$=vround 4/3[bot y$l,top y$r]; %tip of hook - rt x$$l=hround(x$+(y$$-y$)+.5hair); %central arc is round -enddef; - -vardef pi_bar = - pos3(vstem,-90); rt x3=hround(w-.75u); top y3l=x_height; %top right - pos2(vstem,-90); y2=y3; x2=.25w; %top left - x1 if SansSerif: +.25hair else:-.5hair fi =hround.75u; y1-.5hair=4/3[top y2l,bot y2r]; %tip of bar - numeric slope; slope=angle((z2-z1)yscaled 2); pos1(hair,slope-90); - forsuffixes e=l,r: z1'e=(z2e-z1e)yscaled 2; endfor - if SansSerif: %bar - filldraw stroke z1e{z1'e}...z2e---z3e; - else: - filldraw circ_stroke z1e{z1'e}...z2e---z3e; - fi -enddef; - - -vardef cblpi_bar = - pos2(vstem,-90); top y2l=x_height; x2=.3w; %top left - x1-.5hair=hround.75u; y1=y2r-u; %tip of bar - numeric slope; slope=angle((z2-z1)yscaled 2); pos1(hair,slope-90); - forsuffixes e=l,r: z1'e=(z2e-z1e)yscaled 2; endfor - pos3(vstem,-90); x2+x3=w+.8u; z3=z2+whatever*dir(-4); % Tilt adjusted after Dimitri Fillippou - pos11(hair,slope-90); x11=w-u; y11l=h; %right tip - forsuffixes e=l,r: z11'e=(z11e-z3e)yscaled 2; endfor - filldraw double_circ_stroke z1e{z1'e}...z2e---z3e...{z11'e}z11e; %bar -enddef; -% -vardef cbltau_bar = - numeric cbtilt; cbtilt=angle(-slant,1)+180; - pos2(vstem,cbtilt); top y2l=x_height; x2=.25w; %top left - x1-.5hair=hround.75u; y1=bot y2r-.5u; %tip of bar - numeric slope; slope=angle((z2-z1)yscaled 2); pos1(hair,slope-90); - forsuffixes e=l,r: z1'e=(z2e-z1e)yscaled 2; endfor - pos3(vstem,cbtilt); x2+x3=w; z3=z2+whatever*dir(-4); % Tilt adjusted after Dimitri Fillippou - pos11(hair,slope-90); z11+z1=z2+z3; %right tip - forsuffixes e=l,r: z11'e=(z11e-z3e)yscaled 2; endfor - filldraw double_circ_stroke z1e{z1'e}...z2e---z3e...{z11'e}z11e; %bar -enddef; -%% Extension for font paramemeter calculations with splines -% --------------------------------------------------------------------------- -% -% -% -% some extra font parameters -% -def font_cap_height expr x = fontdimen 8: x enddef; -def font_asc_height expr x = fontdimen 9: x enddef; -def font_acc_cap_height expr x = fontdimen 10: x enddef; -def font_desc_depth expr x = fontdimen 11: x enddef; -def font_max_height expr x = fontdimen 12: x enddef; -def font_max_depth expr x = fontdimen 13: x enddef; -def font_digit_width expr x = fontdimen 14: x enddef; -def font_cap_stem expr x = fontdimen 15: x enddef; -def font_baselineskip expr x = fontdimen 16: x enddef; - -% Some booleans - -boolean slitex, straight, monowidth, barebones, cursive,cbleipzig,cbroman; -barebones:=false; cursive:=false; cbleipzig:=false; cbroman:=false; - -if unknown invisibile: boolean invisibile; invisibile:=false; fi -extra_endchar:=extra_endchar&"if invisibile: clearit;fi"; - -% For modern monotoniko spelling we need another boolean that might -% have been already defined in another driver file - -if unknown monotoniko: boolean monotoniko; monotoniko:=false; fi - -boolean small_caps; small_caps:=false; -numeric sclc; sclc:=1; - -boolean metrics; metrics:=false; - -boolean SansSerif; SansSerif:=false; - -% For ouline fonts -% The body is the solution of exercise 13.23 of MFbook -% Thanks to Don Hosek who added "minor" enhancements for writewhite -% printers and high resolution printers - -if unknown outlining: boolean outlining; outlining:=false; fi -% do outline only when explicitly told to do so by means of the declaration -% outlining:=true; -% in the font driver file - - - def outline = - cull currentpicture keeping (1,infinity);% start of solution of ex.13.23 - picture v; v:=currentpicture; - cull currentpicture keeping (1,1) withweight 3; - addto currentpicture also v - v shifted right - -v shifted left - v shifted up - v shifted down; - cull currentpicture keeping (1,4);% end of solution of ex.13.23 - % next code for high resolution typesetters - % replacing each pixel x with the following pattern of - % pixels in the currentpicture: - % X - % XxX - % X - % to create darker lines for outlines. - % Adjacent x pixels superimpose their X companions - if (pixels_per_inch >= 1200) : - v:=currentpicture; - addto currentpicture also v shifted right + - v shifted left + v shifted up + v shifted down; - cullit; - % and the next code is for medium resolution printers such - % as the Varityper(600dpi) and the APSu5(723dpi) or - % write-white laser printers such as the Xerox 8790 - % replacing pixel x with: - % X - % Xx - % to create slightly darker lines for outlines. - % Adjacent x pixels (again) superimpose their X companions - elseif (pixels_per_inch >= 600) - or (write_white=1): % See below - addto currentpicture also currentpicture shifted left; - addto currentpicture also currentpicture shifted up; - fi - enddef; - - -% Specify write_white:=1 in MF command line or define new modes that -% include write_white:=1 among their parameters -% otherwise the default holds true: - -if unknown write_white: write_white:=0; fi - -readfrom("cbspline"); |