summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bg/bg.mf
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/bg/bg.mf')
-rw-r--r--macros/latex/contrib/bg/bg.mf1098
1 files changed, 1098 insertions, 0 deletions
diff --git a/macros/latex/contrib/bg/bg.mf b/macros/latex/contrib/bg/bg.mf
new file mode 100644
index 0000000000..57fde2d563
--- /dev/null
+++ b/macros/latex/contrib/bg/bg.mf
@@ -0,0 +1,1098 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% bg.mf : A character set to draw backgammon matches in LaTeX %
+% %
+% Copyright by J. Richter 1994 %
+% %
+% Distribution and use is free, as long as you don't change this file %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+mode_setup;
+
+size# := 30pt#; % Length of the edge of one square
+number_shadepoints := 15; % Numbers of pixels for black point per row
+
+pensize# := size#/100;
+
+define_pixels(size, pensize);
+
+whitecheckersize := size-3*pensize;
+blackcheckersize := size;
+digitpensize := 5*pensize;
+
+erasediameter := size/2;
+
+font_x_height size#;
+font_quad size#;
+
+%%%%%%%%%%%%%%%%
+% upwhitepoint %
+%%%%%%%%%%%%%%%%
+
+def upwhitepoint(expr i) =
+
+pickup pencircle scaled pensize;
+
+draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size);
+draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt);
+
+enddef; % upwhitepoint
+
+%%%%%%%%%%%%%%%%%%
+% downwhitepoint %
+%%%%%%%%%%%%%%%%%%
+
+def downwhitepoint(expr i) =
+
+pickup pencircle scaled pensize;
+
+draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt);
+draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size);
+
+enddef; % downwhitepoint
+
+%%%%%%%%%%%%%%%%
+% upblackpoint %
+%%%%%%%%%%%%%%%%
+
+def upblackpoint(expr i) =
+
+boolean first_time;
+
+x := 0;
+y := 0;
+
+if 2*round(i/2)=i:
+ offset := 0;
+else :
+ offset := size/(2number_shadepoints);
+fi;
+
+pickup pencircle scaled 2pensize;
+
+for y = 1 upto number_shadepoints :
+ if offset = 0 :
+ offset := size/(2number_shadepoints)
+ else :
+ offset := 0;
+ fi;
+ for x = 0 upto number_shadepoints - 1:
+ if (0.1*(i+y/number_shadepoints)*size< x*(size/number_shadepoints)+offset) and
+ ((1-(i+y/number_shadepoints)*0.1)*size > x*(size/number_shadepoints)+offset):
+ drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints));
+ fi;
+ endfor;
+endfor;
+
+pickup pencircle scaled pensize;
+
+draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size);
+draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt);
+
+enddef; % upblackpoint
+
+%%%%%%%%%%%%%%%%%%
+% downblackpoint %
+%%%%%%%%%%%%%%%%%%
+
+def downblackpoint(expr i) =
+
+boolean first_time;
+
+x := 0;
+y := 0;
+if 2*round(i/2)=i:
+ offset := size/(2number_shadepoints);
+else :
+ offset := 0;
+fi;
+
+pickup pencircle scaled 2pensize;
+
+for y = 1 upto number_shadepoints :
+ if offset = 0 :
+ offset := size/(2number_shadepoints)
+ else :
+ offset := 0;
+ fi;
+ for x = 0 upto number_shadepoints - 1:
+ if (0.1*(i+(1-y/number_shadepoints))*size< x*(size/number_shadepoints)+offset) and
+ ((1-(i+(1-y/number_shadepoints))*0.1)*size > x*(size/number_shadepoints)+offset):
+ drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints));
+ fi;
+ endfor;
+endfor;
+
+pickup pencircle scaled pensize;
+
+draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt);
+draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size);
+
+enddef; % upblackpoint
+
+%%%%%%%%%%%%%%%%
+% whitechecker %
+%%%%%%%%%%%%%%%%
+
+def whitechecker =
+
+pickup pencircle scaled 3pensize;
+
+erase fill fullcircle scaled whitecheckersize shifted (size/2, size/2);
+draw fullcircle scaled whitecheckersize shifted (size/2, size/2);
+
+enddef; % whitechecker
+
+%%%%%%%%%%%%%%%%
+% blackchecker %
+%%%%%%%%%%%%%%%%
+
+def blackchecker =
+
+pickup pencircle scaled 3pensize;
+
+fill fullcircle scaled blackcheckersize shifted (size/2, size/2);
+
+enddef; % blackchecker
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros to draw the digits from 0 to 9 %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+def drawdigit_zero(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+draw (xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*size/2){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/2){up}..cycle;
+
+enddef; %drawdigit_zero
+
+def drawdigit_one(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+draw (xstart+scale*0,ystart+scale*3size/4)--(xstart+scale*size/4,ystart+scale*size)--(xstart+scale*size/4,ystart+scale*0);
+draw (xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0);
+
+enddef; %drawdigit_one
+
+def drawdigit_two(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+draw (xstart+scale*0,ystart+scale*3size/4){up}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*3size/4){down}..(xstart+scale*0,ystart+scale*0){dir 270};
+draw(xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0);
+
+enddef; %drawdigit_two
+
+def drawdigit_three(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+draw (xstart+scale*0,ystart+scale*7size/8){dir 45}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*13size/16){down}..(xstart+scale*size/8,ystart+scale*55size/100){left};
+draw (xstart+scale*size/8,ystart+scale*55size/100){right}..(xstart+scale*size/2,ystart+scale*5size/16){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/8){up};
+
+enddef; %drawdigit_three
+
+def drawdigit_four(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+draw (xstart+scale*size/2,ystart+scale*size/4)--(xstart+scale*0,ystart+scale*size/4)--(xstart+scale*3size/8,ystart+scale*size)--(xstart+scale*3size/8,ystart+scale*0)
+
+enddef; %drawdigit_four
+
+def drawdigit_five(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+draw (xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*size)--(xstart+scale*0,ystart+scale*55size/100){dir 13}..(xstart+scale*size/2,ystart+scale*size/4){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/4){up}
+
+enddef; %drawdigit_five
+
+def drawdigit_six(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+draw (xstart+scale*size/2,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*3size/10){down}..(xstart+scale*size/4,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*3size/10){up}..(xstart+scale*size/4,ystart+scale*6size/10){left}..(xstart+scale*0,ystart+scale*3size/10){down}
+
+enddef; %drawdigit_six
+
+def drawdigit_seven(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+draw (xstart+scale*0,ystart+scale*size)--(xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*0)
+
+enddef; %drawdigit_seven
+
+def drawdigit_eight(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+diameter1 := scale*0.9size/2;
+diameter2 := scale*1.1size/2;
+draw fullcircle scaled diameter1 shifted (xstart+scale*size/4,ystart+scale*1.55size/2);
+draw fullcircle scaled diameter2 shifted (xstart+scale*size/4,ystart+scale*0.55size/2);
+
+enddef; %drawdigit_eight
+
+def drawdigit_nine(expr xstart,ystart,scale) =
+
+pickup pencircle xscaled digitpensize yscaled pensize;
+
+draw (xstart+scale*0,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*7size/10){up}..(xstart+scale*size/4,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*7size/10){down}..(xstart+scale*size/4,ystart+scale*4size/10){right}..(xstart+scale*size/2,ystart+scale*7size/10){up}
+
+enddef; %drawdigit_nine
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The numbers from 1 to 24 to number the boardpoints %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(128, size#, size#, 0);
+
+drawdigit_one(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(129, size#, size#, 0);
+
+drawdigit_two(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(130, size#, size#, 0);
+
+drawdigit_three(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(131, size#, size#, 0);
+
+drawdigit_four(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(132, size#, size#, 0);
+
+drawdigit_five(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(133, size#, size#, 0);
+
+drawdigit_six(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(134, size#, size#, 0);
+
+drawdigit_seven(0.44size,0.35size,0.3)
+
+endchar;
+
+beginchar(135, size#, size#, 0);
+
+drawdigit_eight(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(136, size#, size#, 0);
+
+drawdigit_nine(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(137, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_zero(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(138, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_one(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(139, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_two(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(140, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_three(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(141, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_four(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(142, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_five(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(143, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_six(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(144, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_seven(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(145, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_eight(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(146, size#, size#, 0);
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_nine(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(147, size#, size#, 0);
+
+drawdigit_two(0.32size,0.35size,0.3)
+drawdigit_zero(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(148, size#, size#, 0);
+
+drawdigit_two(0.32size,0.35size,0.3)
+drawdigit_one(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(149, size#, size#, 0);
+
+drawdigit_two(0.32size,0.35size,0.3)
+drawdigit_two(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(150, size#, size#, 0);
+
+drawdigit_two(0.32size,0.35size,0.3)
+drawdigit_three(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(151, size#, size#, 0);
+
+drawdigit_two(0.32size,0.35size,0.3)
+drawdigit_four(0.55size,0.35size,0.3)
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% checkers with numbers on it %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+code := 142;
+
+for background = 1 upto 5:
+
+for colour = 1 upto 2:
+
+code := code + 10;
+
+beginchar(code, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+drawdigit_six(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+1, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_seven(0.44size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+2, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_eight(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+3, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_nine(0.425size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+4, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_zero(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+5, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_one(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+6, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_two(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+7, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_three(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+8, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_four(0.55size,0.35size,0.3)
+
+endchar;
+
+beginchar(code+9, size#, size#, 0);
+
+if background = 2: downwhitepoint(4) fi
+if background = 3: downblackpoint(4) fi
+if background = 4: upwhitepoint(4) fi
+if background = 5: upblackpoint(4) fi
+
+if colour = 1: whitechecker
+else: blackchecker
+fi
+
+erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
+
+
+drawdigit_one(0.32size,0.35size,0.3)
+drawdigit_five(0.55size,0.35size,0.3)
+
+endchar;
+
+endfor;
+
+endfor;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% white points without checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("a", size#, size#, 0);
+
+upwhitepoint(0)
+
+endchar;
+
+beginchar("b", size#, size#, 0);
+
+upwhitepoint(1)
+
+endchar;
+
+beginchar("c", size#, size#, 0);
+
+upwhitepoint(2)
+
+endchar;
+
+beginchar("d", size#, size#, 0);
+
+upwhitepoint(3)
+
+endchar;
+
+beginchar("e", size#, size#, 0);
+
+upwhitepoint(4)
+
+endchar;
+
+beginchar("k", size#, size#, 0);
+
+downwhitepoint(0)
+
+endchar;
+
+beginchar("l", size#, size#, 0);
+
+downwhitepoint(1)
+
+endchar;
+
+beginchar("m", size#, size#, 0);
+
+downwhitepoint(2)
+
+endchar;
+
+beginchar("n", size#, size#, 0);
+
+downwhitepoint(3)
+
+endchar;
+
+beginchar("o", size#, size#, 0);
+
+downwhitepoint(4)
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% black points without checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("f", size#, size#, 0);
+
+upblackpoint(0)
+
+endchar;
+
+beginchar("g", size#, size#, 0);
+
+upblackpoint(1)
+
+endchar;
+
+beginchar("h", size#, size#, 0);
+
+upblackpoint(2)
+
+endchar;
+
+beginchar("i", size#, size#, 0);
+
+upblackpoint(3)
+
+endchar;
+
+beginchar("j", size#, size#, 0);
+
+upblackpoint(4)
+
+endchar;
+
+beginchar("p", size#, size#, 0);
+
+downblackpoint(0)
+
+endchar;
+
+beginchar("q", size#, size#, 0);
+
+downblackpoint(1)
+
+endchar;
+
+beginchar("r", size#, size#, 0);
+
+downblackpoint(2)
+
+endchar;
+
+beginchar("s", size#, size#, 0);
+
+downblackpoint(3)
+
+endchar;
+
+beginchar("t", size#, size#, 0);
+
+downblackpoint(4)
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% white points with white checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("A", size#, size#, 0);
+
+upwhitepoint(0)
+whitechecker
+
+endchar;
+
+beginchar("B", size#, size#, 0);
+
+upwhitepoint(1)
+whitechecker
+
+endchar;
+
+
+beginchar("C", size#, size#, 0);
+
+upwhitepoint(2)
+whitechecker
+
+endchar;
+
+beginchar("D", size#, size#, 0);
+
+upwhitepoint(3)
+
+whitechecker
+endchar;
+
+beginchar("E", size#, size#, 0);
+
+upwhitepoint(4)
+whitechecker
+
+endchar;
+
+beginchar("K", size#, size#, 0);
+
+downwhitepoint(0)
+whitechecker
+
+endchar;
+
+beginchar("L", size#, size#, 0);
+
+downwhitepoint(1)
+whitechecker
+
+endchar;
+
+beginchar("M", size#, size#, 0);
+
+downwhitepoint(2)
+whitechecker
+
+endchar;
+
+beginchar("N", size#, size#, 0);
+
+downwhitepoint(3)
+
+whitechecker
+endchar;
+
+beginchar("O", size#, size#, 0);
+
+downwhitepoint(4)
+whitechecker
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% white points with black checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("0", size#, size#, 0);
+
+upwhitepoint(0)
+blackchecker
+
+endchar;
+
+beginchar("1", size#, size#, 0);
+
+upwhitepoint(1)
+blackchecker
+
+endchar;
+
+
+beginchar("2", size#, size#, 0);
+
+upwhitepoint(2)
+blackchecker
+
+endchar;
+
+beginchar("3", size#, size#, 0);
+
+upwhitepoint(3)
+
+blackchecker
+endchar;
+
+beginchar("4", size#, size#, 0);
+
+upwhitepoint(4)
+blackchecker
+
+endchar;
+
+beginchar("P", size#, size#, 0);
+
+downwhitepoint(0)
+blackchecker
+
+endchar;
+
+beginchar("Q", size#, size#, 0);
+
+downwhitepoint(1)
+blackchecker
+
+endchar;
+
+beginchar("R", size#, size#, 0);
+
+downwhitepoint(2)
+blackchecker
+
+endchar;
+
+beginchar("S", size#, size#, 0);
+
+downwhitepoint(3)
+
+blackchecker
+endchar;
+
+beginchar("T", size#, size#, 0);
+
+downwhitepoint(4)
+blackchecker
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% black points with white checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("F", size#, size#, 0);
+
+upblackpoint(0);
+whitechecker;
+
+endchar;
+
+beginchar("G", size#, size#, 0);
+
+upblackpoint(1);
+whitechecker;
+
+endchar;
+
+beginchar("H", size#, size#, 0);
+
+upblackpoint(2);
+whitechecker;
+
+endchar;
+
+beginchar("I", size#, size#, 0);
+
+upblackpoint(3);
+
+whitechecker;
+endchar;
+
+beginchar("J", size#, size#, 0);
+
+upblackpoint(4);
+whitechecker;
+
+endchar;
+
+beginchar("U", size#, size#, 0);
+
+downblackpoint(0);
+whitechecker;
+
+endchar;
+
+beginchar("V", size#, size#, 0);
+
+downblackpoint(1);
+whitechecker;
+
+endchar;
+
+
+beginchar("W", size#, size#, 0);
+
+downblackpoint(2);
+whitechecker;
+
+endchar;
+
+beginchar("X", size#, size#, 0);
+
+downblackpoint(3);
+
+whitechecker;
+endchar;
+
+beginchar("Y", size#, size#, 0);
+
+downblackpoint(4);
+whitechecker;
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% black points with black checkers %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("5", size#, size#, 0);
+
+upblackpoint(0)
+blackchecker
+
+endchar;
+beginchar("6", size#, size#, 0);
+
+upblackpoint(1)
+blackchecker
+
+endchar;
+
+
+beginchar("7", size#, size#, 0);
+
+upblackpoint(2)
+blackchecker
+
+endchar;
+
+beginchar("8", size#, size#, 0);
+
+upblackpoint(3)
+
+blackchecker
+endchar;
+
+beginchar("9", size#, size#, 0);
+
+upblackpoint(4)
+blackchecker
+
+endchar;
+
+beginchar("u", size#, size#, 0);
+
+downblackpoint(0)
+blackchecker
+
+endchar;
+
+beginchar("v", size#, size#, 0);
+
+downblackpoint(1)
+blackchecker
+
+endchar;
+
+beginchar("w", size#, size#, 0);
+
+downblackpoint(2)
+blackchecker
+
+endchar;
+
+beginchar("x", size#, size#, 0);
+
+downblackpoint(3)
+
+blackchecker
+endchar;
+
+beginchar("y", size#, size#, 0);
+
+downblackpoint(4)
+blackchecker
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%
+% An empty square %
+%%%%%%%%%%%%%%%%%%%
+
+beginchar("z", size#, size#, 0);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% A (left or right) border %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("Z", pensize#, size#, 0);
+
+pickup pencircle scaled pensize;
+
+draw (0pt,0pt)--(0pt,size);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% An (upper or lower) border %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar("-", size#, pensize#, 0);
+
+pickup pencircle scaled pensize;
+
+draw (0pt,0pt)--(size,0pt);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% A "boarderthick" filler %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+beginchar(0, pensize#, pensize#, 0);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%
+% A black Checker %
+%%%%%%%%%%%%%%%%%%%
+
+beginchar("@", size#, size#, 0);
+
+blackchecker
+
+endchar;
+
+
+%%%%%%%%%%%%%%%%%%%
+% A white Checker %
+%%%%%%%%%%%%%%%%%%%
+
+beginchar("*", size#, size#, 0);
+
+whitechecker
+
+endchar;
+
+end
+