summaryrefslogtreecommitdiff
path: root/fonts/bartel-chess-fonts/pkbishop.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/bartel-chess-fonts/pkbishop.mf
Initial commit
Diffstat (limited to 'fonts/bartel-chess-fonts/pkbishop.mf')
-rw-r--r--fonts/bartel-chess-fonts/pkbishop.mf298
1 files changed, 298 insertions, 0 deletions
diff --git a/fonts/bartel-chess-fonts/pkbishop.mf b/fonts/bartel-chess-fonts/pkbishop.mf
new file mode 100644
index 0000000000..8aa99fa922
--- /dev/null
+++ b/fonts/bartel-chess-fonts/pkbishop.mf
@@ -0,0 +1,298 @@
+% This is
+% pkbishop.mf
+%
+% Copyright (C) 1989-92 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( .10qs, % Distance to BottomSpace
+ .44qs, % BowOneWidth
+ .20qs, % FootHeight
+ .40, % BowTwoLoc
+ .13, % WidthToHeight
+ .88, % BowTwoLen
+ .80); % BowThreeLen
+ x4l + x4r = qs;
+ x4r - x4l = .60qs;
+ x4 = x3;
+ y4l = y4r = y4 = y3 + .15qs; % Sides of the shape with
+ % vertical tangents
+
+ x5 = x4;
+ top (y5 + TopDiameter) = qs - TopSpace;
+
+ pair TopDir.l, TopDir.r;
+ TopDir.l = dir 45;
+ TopDir.r = (xpart TopDir.l, -ypart TopDir.l);
+
+ numeric TopDiameter;
+ TopDiameter = .08qs;
+
+ path LeftShape,RightShape,BishopPath;
+ LeftShape = z1l .. z2l .. z3l .. {up}z4l .. {TopDir.l}z5;
+ RightShape= z5{TopDir.r} .. z4r{down} .. z3r .. z2r .. z1r;
+ BishopPath = LeftShape & RightShape & Bow0 & cycle;
+
+ path Peak;
+ Peak:= fullcircle scaled TopDiameter
+ shifted (z5+.5TopDiameter*up);
+
+ path CrossV,CrossH;
+
+ z7= .2[z3,z5];
+ z8= .7[z3,z5];
+ CrossV:= z7 .. z8;
+ CrossH= CrossV rotatedaround (.5[z7,z8],90);
+
+ path Slope;
+ numeric angle;
+
+ angle= 60;
+ x12 = SideSpace;
+ y12 = BottomSpace;
+ z11 = .5[z12,z10];
+ z10 = z0;
+ Slope= slope(z10,z11,z12,1.2thin,50) .. cycle;
+
+enddef;
+
+def MakeWhiteBishop =
+ pickup chess_pen;
+ clearit;
+ draw BishopPath;
+ forsuffixes $=1,2,3: draw Bow$; endfor
+ draw Peak;
+ draw CrossV;
+ draw CrossH;
+ pickup inner_pen;
+ draw Slope;
+ WhiteMan:= currentpicture;
+enddef;
+
+def MakeBlackBishop =
+ pickup chess_pen;
+ clearit;
+ filldraw BishopPath;
+ forsuffixes $=1,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;
+
+%-----------------------------------------------------------------------
+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;