summaryrefslogtreecommitdiff
path: root/fonts/chess/bdfchess/chess10f.mf
blob: c54c3eda59acec7c23029b8f003f06e5538d149b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
% This is `chess10f.mf' version 1.2 as of 6/91
% METAfounded by Piet Tutelaers (internet: rcpt@urc.tue.nl)
% Same font as `chessf10.mf' but knight looks to the right side
% instead of left side according with the recommation of FIDE
% Frank Hassel
% generates a font consisting of chess figurines

mode_setup;
input chessbase;
vardef N(expr D, col, row) =
  clearxy;
  path knight, ear, eye, nose, mouth, neck;
  def moved = scaled D shifted (col*D, row*D) enddef;
  
  pickup thin_pen;
% the knight's contour
  z1=(1-.5,.82); z2=(1-.5,.075); z11=(1-.45,.93); z12=(1-.375,.85); z13=(1-.25,.925);
  z14=(1-.26,.8); z15=(1-.22,.75); z16=(1-.18,.7); z17=(1-.18,.66); z18=(1-.07,.42);
  z19=(1-.07,.36); z20=(1-.14,.3); z21=(1-.17,.3); z22=(1-.175,.275); z23=(1-.225,.28);
  z24=(1-.29,.38); z25=(1-.41,.46); z26=(1-.49,.51); z27=(1-.435,.295); z28=(1-.32,.165);
  z29=(1-.31,y2); z30=(1-.93,y2); z31=(1-.87,.5); z32=(1-.7,.78);
  knight = ((z1--z11--z12--z13--z14) &
     (z14..z15..z16..z17..z18..z19..z20..z21) &
     (z21..z22..z23..z24..z25..z26) &
     (z26..z27..z28..z29) & 
     (z29--z30) &
   (z30..z31..z32..z1)& cycle);
% draw contour of knight
erase fill knight moved;
     draw knight moved;
% draw inner parts
  z4=(1-.22,.62); z41=(1-.25,.67); z42=(1-.29,.705); z43=(1-.31,.7); z44=(1-.3,.68);
  eye = (z4..z41..z42..z43 & z43..z44..z4 & cycle);
  z5=(1-.1,.36); z51=(1-.1,.39); z52=(1-.135,.43); z53=(1-.15,.4); z54=(1-.13,.38);
  nose = (z5..z51..z52..z53..z54..z5 & cycle);
 z21'=(1-.2,.34); draw (z21'--z21) moved; %mouth
     z26'=(1-.54,.63); draw (z26'..z26{z24-z26}) moved; %neck
     draw (z12--z14) moved; % ear
     fill eye moved; fill nose moved;
 enddef;
  

def figurine(expr code) =
   beginchar(code, d#, 1d#, 0d#);
	pickup pencircle scaled thin;
	thin_pen:=savepen ; % for drawing pieces
	pickup pencircle scaled thick;
	thick_pen:=savepen; % for drawing inside pieces
	define_whole_pixels(d);
	scantokens code(d, 0, -0.08);
   endchar;
enddef;

M=1; % number of squares
d#:=10pt#/M;   % size per square
thin#:=1/3pt#; thick#:=5/6pt#; define_blacker_pixels(thin, thick);
light=0; dark=1; white=0; black=1;
background:=light; color:=white;

figurine("K");
figurine("Q");
figurine("R");
figurine("B");
figurine("N");
figurine("p");

end;