diff options
Diffstat (limited to 'fonts/bartel-chess-fonts/elch-bishop.mf')
-rw-r--r-- | fonts/bartel-chess-fonts/elch-bishop.mf | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/fonts/bartel-chess-fonts/elch-bishop.mf b/fonts/bartel-chess-fonts/elch-bishop.mf new file mode 100644 index 0000000000..f27a4f45e5 --- /dev/null +++ b/fonts/bartel-chess-fonts/elch-bishop.mf @@ -0,0 +1,318 @@ +%====================================================================== +% This is +% bishop.mf +% +% Copyright (C) 1989-93 by Elmar Bartel. +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 1, or (at your option) +% any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%====================================================================== +% +def slope(expr orig,middle,far,wd,angle) = + begingroup + save x, y, p; + path p.l,p.r; + pair inter; + + z0r= orig; + z1r= middle; + z2= far; + penpos0(wd,90+angle); + penpos1(wd,90); + penpos2(wd,90+angle); + forsuffixes e=l,r: + p.e:= z2e{dir angle}.. z1e{right} .. {dir angle}z0e; + endfor; + inter = p.l intersectiontimes p.l reflectedabout (orig,orig+up); + reverse p.r -- + subpath (0,xpart inter) of p.l .. + reverse subpath (0,xpart inter) of p.l + reflectedabout (orig,orig+up) -- + p.r reflectedabout (orig,orig+up) + endgroup +enddef; + +def MakeBishopPath = + + numeric TopDiameter; + TopDiameter = .08qs; + DefineFootBows( .13qs, % Distance to BottomSpace + .39qs, % BowOneWidth + .17qs, % FootHeight + .31, % BowTwoLoc + .12, % WidthToHeight + .87, % BowTwoLen + .65); % BowThreeLen + x4l + x4r = qs; + x4r - x4l = .45qs; + x4 = x3; + y4l = y4r = y4 = y3 + .16qs; % Sides of the shape with + % vertical tangents + + x5 = x4; + top (y5 + TopDiameter) = qs - TopSpace + .04qs; + + pair TopDir.l, TopDir.r; + TopDir.l = dir 35; + TopDir.r = (xpart TopDir.l, -ypart TopDir.l); + + numeric TopDiameter; + TopDiameter = .10qs; + + path LeftShape,RightShape,BishopPath; + LeftShape = z1l .. z2l .. z3l & z3l .. {up}z4l .. {TopDir.l}z5; + RightShape= z5{TopDir.r} .. {down}z4r .. z3r & z3r .. z2r .. z1r; + BishopPath = LeftShape & RightShape & Bow0 & cycle; + + path Peak; + Peak:= fullcircle scaled TopDiameter + shifted (z5+.5TopDiameter*up); + + path CrossV,CrossH; + + z7= .25[z3,z5]; + z8= .62[z3,z5]; + CrossV:= z7 .. z8; + CrossH= CrossV rotatedaround (.5[z7,z8],90); + + path Slope; + path s; + numeric angle; + + angle= 60; + x12 = SideSpace; + y12 = BottomSpace; + y11 = .5[y12,y10]; + x11 = .65[x12,x10]; + z10 = z0; + s= slope(z10,z11,z12,2.7thin,35); + Slope:= s .. point 0 of s & cycle; + +enddef; + +def MakeWhiteBishop = + pickup chess_pen; + clearit; + draw BishopPath; + forsuffixes $=2,3: draw Bow$; endfor + draw Peak; + draw CrossV; + draw CrossH; + %pickup inner_pen; + draw Slope; + WhiteMan:= currentpicture; +enddef; + +def MakeBlackBishop = + pickup chess_pen scaled 1.1; + clearit; + filldraw BishopPath; + forsuffixes $=2,3: undraw ShortenPath(Bow$,1.2thin); endfor + %undraw ShortenPath(ParallelPath(LeftShape,-thin),thin); + %undraw ShortenPath(ParallelPath(RightShape,-thin),thin); + filldraw Peak; + undraw CrossV; + undraw CrossH; + pickup inner_pen; + filldraw Slope; + BlackMan:= currentpicture; +enddef; + +def MakeOuterShape = + clearit; + pickup frame_pen; + filldraw BishopPath; + filldraw Peak; + filldraw Slope; + cullit; + OuterShape:= currentpicture; +enddef; + +MakeBishopPath; +MakeWhiteBishop; +MakeBlackBishop; +MakeNeutral(WhiteMan,BlackMan); +MakeOuterShape; + +%=========================================================== +%% this one for testing +%beginchar(Bishop+White+OnBlack, qs#, qs#, 0); +% "White bishop on black field"; +% MakeBlackField; +% currentpicture:= currentpicture - OuterShape; +% cullit; +% currentpicture:= currentpicture + WhiteMan; +% %currentpicture:= currentpicture + BlackMan; +%endchar; +%endinput +%=========================================================== + +beginchar(Bishop+White+OnWhite, qs#, qs#, 0); + "White bishop on white field"; + currentpicture:= WhiteMan; +endchar; + +beginchar(Bishop+White+OnWhite+LeftTurned, qs#, qs#, 0); + "White bishop on white field rotated to the left"; + currentpicture:= TurnLeft(WhiteMan); +endchar; + +beginchar(Bishop+White+OnWhite+RightTurned, qs#, qs#, 0); + "White bishop on white field rotated to the right"; + currentpicture:= TurnRight(WhiteMan); +endchar; + +beginchar(Bishop+White+OnWhite+UpSideDown, qs#, qs#, 0); + "White bishop on white field upside down"; + currentpicture:= TurnUpSideDown(WhiteMan); +endchar; + +beginchar(Bishop+Black+OnWhite, qs#, qs#, 0); + "Black bishop on white field"; + currentpicture:= BlackMan; +endchar; + +beginchar(Bishop+Black+OnWhite+LeftTurned, qs#, qs#, 0); + "Black bishop on white field rotated to the left"; + currentpicture:= TurnLeft(BlackMan); +endchar; + +beginchar(Bishop+Black+OnWhite+RightTurned, qs#, qs#, 0); + "Black bishop on white field rotated to the right"; + currentpicture:= TurnRight(BlackMan); +endchar; + +beginchar(Bishop+Black+OnWhite+UpSideDown, qs#, qs#, 0); + "Black bishop on white field upside down"; + currentpicture:= TurnUpSideDown(BlackMan); +endchar; + +beginchar(Bishop+Neutral+OnWhite, qs#, qs#, 0); + "Neutral bishop on white field"; + currentpicture:= NeutralMan; +endchar; + +beginchar(Bishop+Neutral+OnWhite+LeftTurned, qs#, qs#, 0); + "Neutral bishop on white field rotated to the left"; + currentpicture:= TurnLeft(NeutralMan); +endchar; + +beginchar(Bishop+Neutral+OnWhite+RightTurned, qs#, qs#, 0); + "Neutral bishop on white field rotated to the right"; + currentpicture:= TurnRight(NeutralMan); +endchar; + +beginchar(Bishop+Neutral+OnWhite+UpSideDown, qs#, qs#, 0); + "Neutral bishop on white field upside down"; + currentpicture:= TurnUpSideDown(NeutralMan); +endchar; + +beginchar(Bishop+White+OnBlack, qs#, qs#, 0); + "White bishop on black field"; + MakeBlackField; + currentpicture:= currentpicture - OuterShape; + cullit; + currentpicture:= currentpicture + WhiteMan; +endchar; + +beginchar(Bishop+White+OnBlack+LeftTurned, qs#, qs#, 0); + "White bishop on black field turned to the left"; + MakeBlackField; + currentpicture:= currentpicture - TurnLeft(OuterShape); + cullit; + currentpicture:= currentpicture + TurnLeft(WhiteMan); +endchar; + +beginchar(Bishop+White+OnBlack+RightTurned, qs#, qs#, 0); + "White bishop on black field turned to the right"; + MakeBlackField; + currentpicture:= currentpicture - TurnRight(OuterShape); + cullit; + currentpicture:= currentpicture + TurnRight(WhiteMan); +endchar; + +beginchar(Bishop+White+OnBlack+UpSideDown, qs#, qs#, 0); + "White bishop on black field upsidedown"; + MakeBlackField; + currentpicture:= currentpicture - TurnUpSideDown(OuterShape); + cullit; + currentpicture:= currentpicture + TurnUpSideDown(WhiteMan); +endchar; + +beginchar(Bishop+Neutral+OnBlack, qs#, qs#, 0); + "Neutral bishop on black field"; + MakeBlackField; + currentpicture:= currentpicture - OuterShape; + cullit; + currentpicture:= currentpicture + NeutralMan; +endchar; + +beginchar(Bishop+Neutral+OnBlack+LeftTurned, qs#, qs#, 0); + "Neutral bishop on black field turned to the left"; + MakeBlackField; + currentpicture:= currentpicture - TurnLeft(OuterShape); + cullit; + currentpicture:= currentpicture + TurnLeft(NeutralMan); +endchar; + +beginchar(Bishop+Neutral+OnBlack+RightTurned, qs#, qs#, 0); + "Neutral bishop on black field turned to the right"; + MakeBlackField; + currentpicture:= currentpicture - TurnRight(OuterShape); + cullit; + currentpicture:= currentpicture + TurnRight(NeutralMan); +endchar; + +beginchar(Bishop+Neutral+OnBlack+UpSideDown, qs#, qs#, 0); + "Neutral bishop on black field upsidedown"; + MakeBlackField; + currentpicture:= currentpicture - TurnUpSideDown(OuterShape); + cullit; + currentpicture:= currentpicture + TurnUpSideDown(NeutralMan); +endchar; + +beginchar(Bishop+Black+OnBlack, qs#, qs#, 0); + "Black bishop on black field"; + MakeBlackField; + currentpicture:= currentpicture - OuterShape; + cullit; + currentpicture:= currentpicture + BlackMan; +endchar; + +beginchar(Bishop+Black+OnBlack+LeftTurned, qs#, qs#, 0); + "Black bishop on black field turned to the left"; + MakeBlackField; + currentpicture:= currentpicture - TurnLeft(OuterShape); + cullit; + currentpicture:= currentpicture + TurnLeft(BlackMan); +endchar; + +beginchar(Bishop+Black+OnBlack+RightTurned, qs#, qs#, 0); + "Black bishop on black field turned to the right"; + MakeBlackField; + currentpicture:= currentpicture - TurnRight(OuterShape); + cullit; + currentpicture:= currentpicture + TurnRight(BlackMan); +endchar; + +beginchar(Bishop+Black+OnBlack+UpSideDown, qs#, qs#, 0); + "Black bishop on black field upsidedown"; + MakeBlackField; + currentpicture:= currentpicture - TurnUpSideDown(OuterShape); + cullit; + currentpicture:= currentpicture + TurnUpSideDown(BlackMan); +endchar; + +endinput + |