%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   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