[comp.lang.postscript] Postscript chess board and pieces wanted

edward@csvaxa.UUCP (Edward Wilkinson) (04/20/88)

Does anyone  have any Postscript chess  pieces, both upside-down & the
right way up?  What  about a chess  board with border? Many thanks  in
advance to any replies.

p.s. Short for the World title! (in a few years, anyway)

-- 
Ed Wilkinson @ Computer Centre, Massey University, Palmerston North, NZ
uucp: {uunet,watmath!cantuar}!vuwcomp!csvaxa!edward   DTE: 530163000005
Janet/Greybook: E.Wilkinson@nz.ac.massey      Phone: +64 63 69099 x8587
CSnet/ACSnet/Internet: E.Wilkinson@massey.ac.nz    New Zealand = GMT+12

eichin@athena.mit.edu (Mark W. Eichin) (04/27/88)

In article <212@csvaxa.UUCP> E.Wilkinson@massey.ac.nz writes:
>Does anyone  have any Postscript chess  pieces, both upside-down & the
>right way up?  What  about a chess  board with border? Many thanks  in
>advance to any replies.

I have a chess printing file, derived from (1) the Cookbook example
program `Making A User Defined Font' and (2) the bitmap chess
characters from the GNUchess xchess program. I constructed it in about
3 hours for the MIT student newspaper, The Tech; the style of print is
much like a normal newspaper chess column (all pieces rightsideup,
grey/white squares.) It is a header file; to draw a chessboard,
include something like
36 START
(RNBQKBNR)
(PPPPPPPP)
(        )
(        )
(        )
(        )
(pppppppp)
(rnbqkbnr)
showboard

to draw a starting chessboard. It is nearly 40K long, but the bitmaps
look fairly good from 1/4 inch to 1 inch in size. If you want it,
email me (if you can anonymous ftp, tell me that and I'll put it
somewhere); if I get more than 15 requests in a week, I'll post it.  I
don't read comp.lang.postscript often (thesis time!) so I will not see
posted requests.
				Mark Eichin
			<eichin@athena.mit.edu>
		SIPB Member & Project Athena ``Watchmaker'' 
[You should be able to find athena.mit.edu; if not, try via bloom-beacon.]

anw@nott-cs.UUCP (04/28/88)

In article <212@csvaxa.UUCP> E.Wilkinson@massey.ac.nz writes:
> Does anyone  have any Postscript chess  pieces, both upside-down & the
> right way up?  [...]

	No replies seen here yet, so perhaps my version will serve.  I was
planning to bundle this up when "comp.lang.postscript" was asking for
examples of PostScript;  but natural modesty, diffidence, and my novitiate
status* in PS prevented me.  Unshar the following;  it may do what you
want;  it does most of what I want.  See the "README" for much more info.
I've added Black and White Grasshoppers (upside-down Queens) (4 lines total)
to "C.font" to show how easy it is.  Most other Fairy pieces are equally
easy -- Imitators might be a slight problem!

	Am I alone in being slightly miffed that the standard Adobe fonts,
Hershey fonts etc include *lots* of Bridge symbols, but no Chess?
______________
* This was my first non-trivial PostScript exercise.

-- 
Andy Walker, Maths Dept., Nottm Univ.
anw@maths.nott.ac.uk
------------------------------[ cut here ]-------------------------------------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  MANIFEST README C.font C.start C.end Example
# Wrapped by anw@maths.nott.ac.uk on Thu Apr 28 16:23:13 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f MANIFEST -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"MANIFEST\"
else
echo shar: Extracting \"MANIFEST\" \(313 characters\)
sed "s/^X//" >MANIFEST <<'END_OF_MANIFEST'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST		   1		list of files
X README			   1		discussion
X C.font			   1		PS font/board file
X C.start		   1		   draw board & set chess font
X C.end			   1		   tidy up
X Example		   1		Run thro pic | *roff | laserwriter
END_OF_MANIFEST
if test 313 -ne `wc -c <MANIFEST`; then
    echo shar: \"MANIFEST\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(6392 characters\)
sed "s/^X//" >README <<'END_OF_README'
X	Herewith a 90% solution to the chess-font problem.  It consists of
Xthree PostScript files, "C.font", "C.start", "C.end" that can be integrated
Xwith a "troff" file to produce chess diagrams and pieces.  The intention
Xis that a chess paper should consist of something like:
X
X	usual troff headers
X	.cf C.font	\" interpolate the font and board macros into the o/p
X	text text text
X	.cf C.start	\" draw the board and set the chess font
X	diagram
X	.cf C.end	\" tidy up
X	text text text
X	.cf C.start
X	diagram
X	.cf C.end
X	text text text, etc.
X
XTo be slightly more accurate, the intention is that an as-yet-unwritten
Xchess pre-processor should filter the chess paper, inserting the "C.font"
Xstuff, and replacing each diagram found by the "start ... end" stuff around
XTroff commands to position and display the pieces.  In the usual Unix way,
Xthe input would look like
X
X	text text text
X	.CS [ optional parameters for diagram size, etc ]
X	   Forsythe notation for diagram.
X	   Annotations
X	.CE
X	text text text
X
Xwith some sensible notation for inline figurines.
X
XIn the current state of the art, this is done instead by using "pic" to do
Xthe drawing and positioning.  In principle, the "pic" stuff would look like
X
X	.PS
X	<commands to draw the board, and scale to right size>
X	"K" at 2,3	\" two along, three up, ie b3
X	"p" at 7,5	\" 7 along, 5 up, ie g5
X	<etc>
X	"\fIWhite to move\fR" at 10,5	\" caption in Italic font
X	<etc>
X	.PE
X
XIn practice, there are silly complications caused, eg, by the necessity of
Xallowing output to non-LaserWriter devices, and by the fact that Troff
Xmis-optimises some motions, so the real text is much more complicated
X(see the example of the famous Reti ending in the "Example" file given),
Xbut all of this is obviously perfectly easy for the hypothetical chess
Xpre-processor.
X
XThe chess font is not installed as a proper font known to Troff, so all
Xthe chess pieces are kludged up behind the scenes in PostScript shovelled
Xthrough the DITroff->PS editor.  We have a much-hacked Troff (and need to
Xhave to get reasonably professional output using 40-odd fonts more-or-less
Xsimultaneously into a PDP 11/44), so the official routes aren't available
Xto me.  Your mileage may be better;  but, to be honest, I've managed "as
Xis".  We have a proper Hershey font interpreter, which we use for hacking
XGothic, Script, Chinese, etc., characters which aren't in the Laser's
Xnormal repertoire;  so it might be worth preparing a Hershey description
Xof the chess pieces for use in ordinary text (as figurines), but I haven't
Xyet felt the need.
X
X	If you know much about PostScript, note that the chess font can't
Xbe cached;  this is because the pieces use both white and black pixels.
XEg, a black bishop includes a white halo, then a black flood-fill of the
Xoutline, then white fills of the inside of the mitre and of the diamond
Xdecoration.  The alternative of defining WK-on-Bsquare, WK-on-Wsquare,
XBK-on-Bsquare, etc pieces, using only write-black codes, would be very
Xmuch more complicated both to define and to use, would make figurines in
Xthe text harder, but would be much faster to run in text that used lots and
Xlots of diagrams.
X
X	If your system is similar to ours (some hacked Adobe package,
Xconverting DITroff for the Apple LW+), you can try [takes *ages*, 'cos
Xof the large pieces at the end -- take them away if you like!]
X
X	pic Example | your-troff -ms [flags] | your-usual-filters
X
X(I just have to say "runoff -Plwriter Example" and it all happens);  if
Xthat doesn't work, you'll have to piggle with the "C.*" files.  In
Xparticular, some of the positioning may be wrong:  it seems to be system-
Xdependent.  Things may go badly awry if your system doesn't have the same
X"copy-through" convention as ours:  the ".cf" and "\!" troff requests are
Xused to pass information straight through to the DITroff->PS converter;
Xwhat "straight through" means in relation to partial lines, positioning,
Xetc., depends on how many bugs in this mechanism your site has cured;  and
Xthe converter passes straight through as PS lines between "%" and ".".
XThe only other likely catastrophe that I can see is if your PS prologue
Xdoesn't use "pagesave" to save and restore the LW state.  If you use TEX
Xrather than Troff, you're on your own.  Well, perhaps in a crowd, but
Xwithout me.
X
X	Please note the minimal copyright restrictions on "C.font":  if
Xyou intend to make money from my work, I would like an Hon Mention and a
Xmodest slice of the action;  otherwise do what you like with it.  Feel
Xfree to use the other files even if you make money from them (How?).  The
X"C.start" file is utterly stupid:
X	"initmatrix" should `never' be used, 'cos it resets PS to the
X		default co-ordinate system, thereby defeating any attempt
X		to do clever scaling;
X	the current position has to be moved in an obscure way to put the
X		board in the correct relation to the "pic" co-ordinates;
X	comes out wrong in double spacing ("pic" bug, really);
X	only allows 1.6" board and 12-pt pieces;
Xbut I haven't done anything about it yet.
X
X	There are surprisingly many chess fonts used in the literature.
XThe one implemented here is an approximation to my favourite.  The two
Xprincipal rivals are the one much used in older books and in E. European
Xbooks with an incredibly ornate K and much more elaborate pieces generally,
Xand one with a "square-on" bishop-with-a-cross, instead of the rotated
Xbishop here, where you can see the inside of the mitre.  I've changed the
XN somewhat;  attempts to copy the "real" font all came out looking like a
Xpantomime horse with a nosebag, and the present more stylised version both
Xlooks better and scales better.  Let me know if you do better!
X
X	The knights should face *left*.  We had a curious episode whereby
Xa diagram came out perfectly OK last year, but this year came out with the
Xpieces reflected (this only matters for B & N).  I therefore changed signs
Xon all the motions for B & N.  If your diagrams come out with the Ns facing
X*right*, you'll have to do the same.  I can't explain this other than that
Xour text processing systems are much hacked;  but whether the change was a
Xnew bug or a fix, I don't know.  For similar reasons, you may find something
Xcurious happening with the big pieces in "Example".
X
X	All comments, suggestions, improvements welcomed.
X
X	Andrew N. Walker,
X	Mathematics Department, The University, Nottingham NG7 2RD, UK.
X	e-mail:  anw@maths.nott.ac.uk
END_OF_README
if test 6392 -ne `wc -c <README`; then
    echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f C.font -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"C.font\"
else
echo shar: Extracting \"C.font\" \(7891 characters\)
sed "s/^X//" >C.font <<'END_OF_C.font'
X%
X
X%	This file is
X
X%		Copyright 1988 A. N. Walker
X
X%	Explicit permission is hereby given to use this file freely for
X%	educational or research or non-profitmaking purposes, provided
X%	that this notice is retained.  Permission for other uses should
X%	be sought from Dr A. N. Walker, Department of Mathematics, The
X%	University, Nottingham NG7 2RD, UK;  anw@maths.nott.ac.uk.
X
X	pagesave restore
X	/Cfont 50 dict def
X	Cfont begin
X	/FontType 3 def
X	/FontMatrix [ 0.001 0 0 0.001 0 0 ] def
X	/FontBBox [ 0 0 0 0 ] def
X	/Encoding 256 array def
X	0 1 255 { Encoding exch /.notdef put } for
X	Encoding 8#113 /WK put		% ASCII 'K'
X	Encoding 8#121 /WQ put		% ASCII 'Q'
X	Encoding 8#122 /WR put		% ASCII 'R'
X	Encoding 8#102 /WB put		% ASCII 'B'
X	Encoding 8#116 /WN put		% ASCII 'N'
X	Encoding 8#120 /WP put		% ASCII 'P'
X	Encoding 8#153 /BK put		% ASCII 'k'
X	Encoding 8#161 /BQ put		% ASCII 'q'
X	Encoding 8#162 /BR put		% ASCII 'r'
X	Encoding 8#142 /BB put		% ASCII 'b'
X	Encoding 8#156 /BN put		% ASCII 'n'
X	Encoding 8#160 /BP put		% ASCII 'p'
X% Next two lines added to show how to do grasshoppers
X	Encoding 8#107 /WG put		% ASCII 'G'
X	Encoding 8#147 /BG put		% ASCII 'g'
X	/CharProcs 30 dict def
X	CharProcs begin
X% Should perhaps do something more exotic in .notdef, so that unassigned
X% pieces actually show up.  Left as an exercise
X		/.notdef { } def
X		/diamond {		% size & centre on stack
X			moveto dup neg 0 rmoveto
X			dup dup neg rlineto dup dup rlineto
X			dup neg exch rlineto closepath } def
X		/WK {	2 setmiterlimit 325 -100 moveto
X			600 100 350 400 125 250 curveto
X			0 250 rlineto -250 0 rlineto 0 -250 rlineto
X			-350 400 -600 100 -325 -100 curveto
X			0 -250 rlineto
X			-100 -500 100 -500 325 -350 curveto
X			closepath currentgray dup dup 30 setlinewidth
X			gsave 100 setlinewidth 1 setgray stroke grestore
X			gsave 1 exch sub setgray fill grestore
X			0 setgray stroke setgray
X			0 eq { 325 } { 275 } ifelse
X			dup dup neg 3 copy
X			-350 moveto 0 -300 3 -1 roll -350 800 arcto
X			4 { pop } repeat -350 lineto
X			-100 moveto 0 -50 3 -1 roll -100 800 arcto
X			4 { pop } repeat -100 lineto
X			15 0 -185 Cfont /CharProcs get /diamond get exec
X			15 -250 -210 Cfont /CharProcs get /diamond get exec
X			15 250 -210 Cfont /CharProcs get /diamond get exec
X			currentgray 0 eq { 125 } { 75 } ifelse
X			dup dup neg 3 copy dup dup
X			4 { 0 375 moveto rlineto } repeat
X			currentgray 0 eq {
X				0 -45 moveto 125 250 lineto
X				-250 0 rlineto closepath
X			} if
X			stroke } def
X		/WQ {	2 setmiterlimit 0 75 moveto
X			-150 440 50 -80 280 arc
X			-250 25 lineto -440 200 50 -60 300 arc
X			-325 -100 lineto 0 -250 rlineto
X			-100 -500 100 -500 325 -350 curveto
X			0 250 rlineto 440 200 50 -120 240 arc
X			250 25 lineto 150 440 50 -100 260 arc
X			closepath currentgray dup dup 30 setlinewidth
X			gsave 100 setlinewidth 1 setgray stroke grestore
X			gsave 1 exch sub setgray fill grestore
X			0 setgray stroke setgray
X			0 eq { 325 } { 275 } ifelse
X			dup dup neg 3 copy
X			-350 moveto 0 -300 3 -1 roll -350 800 arcto
X			4 { pop } repeat -350 lineto
X			-100 moveto 0 -50 3 -1 roll -100 800 arcto
X			4 { pop } repeat -100 lineto
X			15 0 -185 Cfont /CharProcs get /diamond get exec
X			15 -250 -210 Cfont /CharProcs get /diamond get exec
X			15 250 -210 Cfont /CharProcs get /diamond get exec
X			stroke } def
X		/WR {	-325 -450 moveto 650 0 rlineto
X			0 50 rlineto -100 175 rlineto 0 400 rlineto
X			50 75 rlineto 0 150 rlineto
X			-86 0 rlineto -30 -100 rlineto
X			-86 0 rlineto -30 100 rlineto
X			-86 0 rlineto -30 -100 rlineto
X			-86 0 rlineto -30 100 rlineto -86 0 rlineto
X			0 -150 rlineto 50 -75 rlineto
X			0 -400 rlineto -100 -175 rlineto closepath
X			gsave 100 setlinewidth 1 setgray stroke grestore
X			gsave 1 currentgray sub setgray fill grestore
X			30 setlinewidth
X			gsave 0 setgray stroke grestore newpath
X			currentgray 0 eq { -225 } { -195 } ifelse
X			dup -225 moveto dup -2 mul 0 rlineto
X			dup 175 moveto -2 mul 0 rlineto stroke } def
X		/WB {	2 setmiterlimit 400 -500 moveto
X			-100 100 -300 0 -400 100 rcurveto
X			-100 -100 -300 0 -400 -100 rcurveto
X			0 100 rlineto
X			100 100 300 0 400 100 rcurveto
X			100 -100 300 0 400 -100 rcurveto
X			closepath
X			-200 -350 moveto 0 200 rlineto
X			-200 0 -150 215 0 325 curveto
X			75 420 40 -90 270 arc
X			340 100 340 100 200 -150 curveto
X			0 -200 rlineto -200 50 rlineto closepath
X			30 setlinewidth currentgray
X			gsave	0 325 moveto
X				-150 215 -200 0 -200 -150 curveto
X				-340 100 -340 100 -75 380 curveto
X				-75 420 40 -90 270 arc
X				closepath 1 setgray
X				gsave 100 setlinewidth stroke grestore
X				gsave fill grestore
X				0 setgray stroke
X			grestore
X			gsave dup 1 exch sub setgray fill grestore
X			0 setgray stroke setgray
X			15 0 -225 Cfont /CharProcs get /diamond get exec
X			currentgray 0 eq { 200 } { 150 } ifelse
X			dup dup neg 3 copy
X			-350 moveto 20 rlineto -20 rlineto
X			-150 moveto 30 rlineto -30 rlineto stroke } def
X		/WN {	2 setmiterlimit -450 -450 moveto
X			-450 200 -150 350 50 400 curveto
X			25 100 rlineto 75 -200 rlineto
X			75 150 rlineto 0 -150 rlineto
X			125 -125 325 -400 275 -450 rcurveto
X			-75 -75 rlineto -100 130 rlineto 0 -200 rlineto
X			-50 -25 -150 100 -100 150 rcurveto
X			-50 -50 -150 75 -125 150 rcurveto
X			-125 -300 250 -250 250 -450 curveto
X			closepath currentgray dup 30 setlinewidth
X			gsave 100 setlinewidth 1 setgray stroke grestore
X			gsave 1 exch sub setgray fill grestore
X			0 setgray stroke setgray
X			15 200 150 Cfont /CharProcs get /diamond get exec
X			stroke currentgray 0 eq { [ 100 100 ] 0 setdash
X			-410 -450 moveto -410 200 -130 330 60 380 curveto
X			50 setlinewidth stroke } if } def
X		/WP {	1 currentgray sub setgray
X			Cfont /CharProcs get /BP get exec
X			-75 150 moveto 150 0 rlineto stroke } def
X		/BK {	1 currentgray sub setgray
X			Cfont /CharProcs get /WK get exec
X			15 0 180 Cfont /CharProcs get /diamond get exec
X			265 -95 moveto 480 150 280 380 50 -50 curveto
X			-265 -95 moveto -480 150 -280 380 -50 -50 curveto
X			stroke } def
X		/BQ {	1 currentgray sub setgray
X			Cfont /CharProcs get /WQ get exec } def
X		/BR {	1 currentgray sub setgray
X			Cfont /CharProcs get /WR get exec } def
X		/BB {	1 currentgray sub setgray
X			Cfont /CharProcs get /WB get exec } def
X		/BN {	1 currentgray sub setgray
X			Cfont /CharProcs get /WN get exec
X			-430 -430 moveto
X			-430 200 -150 350 30 370 curveto
X			-150 250 -390 200 -390 -430 curveto fill } def
X		/BP {	300 -450 moveto
X			200 -300  200 -300 75 -250 curveto
X			125 -50 125 -50 75 150 curveto
X			125 150 100 0 90 arc
X			0 300 100 -30 210 arc
X			-125 150 100 90 180 arc
X			150 0 rlineto
X			-125 -50 -125 -50 -75 -250 curveto
X			-200 -300 -200 -300 -300 -450 curveto
X			closepath
X			gsave 100 setlinewidth 1 setgray stroke grestore
X			gsave fill grestore
X			50 setlinewidth 0 setgray stroke } def
X% Next two lines added to show how to do upside-down queens (grasshoppers)
X		/WG {	180 rotate Cfont /CharProcs get /WQ get exec } def
X		/BG {	180 rotate Cfont /CharProcs get /BQ get exec } def
X	end
X	/BuildChar {			% font, char on stack
X		1000 0 setcharwidth
X		exch begin Encoding exch get CharProcs exch get end exec
X	} def
X	end
X	/ChessFont Cfont definefont pop
X	/board {			% startx, starty on stack
X		translate
X		currentlinewidth 72 5 div dup dup scale div 3 div
X		setlinewidth newpath -0.2 dup dup moveto 8.2 lineto
X		8.2 dup dup lineto -0.2 lineto closepath
X		gsave 1 setgray fill grestore stroke
X		currentlinewidth 3 div setlinewidth
X		-0.075 dup dup moveto 8.075 lineto
X		8.075 dup dup lineto -0.075 lineto closepath stroke
X		gsave	currentlinewidth 12 div setlinewidth
X			1 16 div 1 8 div 7 {
X				dup 0 moveto dup 8 exch sub dup dup rlineto
X				exch 0 exch moveto dup rlineto stroke
X			} for
X			1 setgray
X			0 1 7 { dup 2 mod 1 exch sub
X				4 {	2 copy newpath moveto
X					1 0 rlineto 0 1 rlineto -1 0 rlineto
X					closepath gsave fill grestore stroke
X					2 add
X				} repeat pop pop
X			} for
X		grestore
X		-0.5 dup translate
X	} def
X	/pagesave save def
X.
END_OF_C.font
if test 7891 -ne `wc -c <C.font`; then
    echo shar: \"C.font\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f C.start -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"C.start\"
else
echo shar: Extracting \"C.start\" \(247 characters\)
sed "s/^X//" >C.start <<'END_OF_C.start'
X%
X	gsave matrix currentmatrix initmatrix
X	-1 12 mul 72 div -53 30 div 72 mul rmoveto	% botch!
X	%	0 -12 rmoveto		% include this for double spaced o/p
X	currentpoint board setmatrix
X	/ChessFont findfont [ 12 point neg 0 0 3 copy ] makefont setfont
X.
END_OF_C.start
if test 247 -ne `wc -c <C.start`; then
    echo shar: \"C.start\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f C.end -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"C.end\"
else
echo shar: Extracting \"C.end\" \(14 characters\)
sed "s/^X//" >C.end <<'END_OF_C.end'
X%
X	grestore
X.
END_OF_C.end
if test 14 -ne `wc -c <C.end`; then
    echo shar: \"C.end\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f Example -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"Example\"
else
echo shar: Extracting \"Example\" \(2141 characters\)
sed "s/^X//" >Example <<'END_OF_Example'
X.\"pic
X.\"roff -ms
X.\"
X.\" pipe this through the mythical chess pre-processor | pic | *roff -ms etc
X.if t .cf C.font
X.SH
XExample
X.PP
XThe following all looks fine on our LW;
XI can't answer for yours!
XAnyway, consider the following well-known study:
X.PS
Xscale = 5
Xline right 8 then up 8 then left 8 then down 8
X.if t .cf C.start
XA :  -1/2-1/60,-1/2+1/10
X"." at 0,0
X"K" at A + 8,8 ljust
X"." at 0,0
X"k" at A + 1,6 ljust
X"." at 0,0
X"P" at A + 3,6 ljust
X"." at 0,0
X"p" at A + 8,5 ljust
X.if t .cf C.end
Xtextwid = 16
X"\fBR. R\*'eti\fP" at 10,6 ljust
X"\fIKagan's Neueste Schachnachrichten, 1921\fP" at 10,5 ljust
X"\fIWhite to play and draw\fP" at 10,2 ljust
Xreset textwid
X.PE
XThe
X.I pic
Xfor the above can be generated easily by a pre-processor which understands
XForsythe notation and where to put annotations,
X.I e.g.:
X.DS
X.ft CW
X\&.CS
X7K; 8; k1P5; 7p; 32.
XRU B "R. R\e*'eti"  \e" Right-Upper annotation in Bold
X\&... etc ...
X\&.CE
X.ft P
X.DE
X(As a matter of fact, it would be quite easy to generate the
X.I pic
X.I output
Xand save a pipe.)
XIf you know what you're doing, you can do cleverer things with the
X.I pic
X(this comment is only meaningful if you study the source of this output).
XFor example, here is the start position;
XI've replaced some pawns with grasshoppers (upside-down queens)
Xto show the possibilities.
X.PS
Xscale = 5
Xline right 8 then up 8 then left 8 then down 8
X.if t .cf C.start
XA :  1/2-1/60,-1/2+1/10
Xdefine rank % A + 0,$1 ljust %
Xdefine file % $1 at rank(8); $2 at rank(7); $3 at rank(2); $4 at rank(1) %
Xdefine goright % A : A + 1,0 %
X	file("r", "p", "P", "R"); goright
X	file("n", "g", "G", "N"); goright
X	file("b", "p", "P", "B"); goright
X	file("q", "p", "P", "Q"); goright
X	file("k", "p", "P", "K"); goright
X	file("b", "p", "P", "B"); goright
X	file("n", "g", "G", "N"); goright
X	file("r", "p", "P", "R")
X.if t .cf C.end
X.PE
X.if !t .ig
XSimilarly, here are some big pieces:
X.sp 1i
X\s1\fI\&.\fP\s0
X.br
X.\" The above stupidity is 'cos some troffs re-order things!  Grrrr!
X\!%
X\! save /ChessFont findfont [ 48 point neg 0 0 3 copy ] makefont setfont
X\! (KqRbNp) dup stringwidth exch neg exch neg rmoveto show restore
X\!.
X.ft R
X..
END_OF_Example
if test 2141 -ne `wc -c <Example`; then
    echo shar: \"Example\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 1 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

liam@cs.qmc.ac.uk (William Roberts) (04/30/88)

Sender:

Followup-To:

Distribution:

Keywords:


I also have a chess font, with characters for each of the
pieces in all four (piece colour, square colour) combinations.
There are also some pieces to go around the edge to make a
frame.

For good measure, I have the necessary stuff to make it into a
ditroff font and connect it to TranScript, so that you can have
chessboards etc in ditroff, even without psfig :-)

A typical board is described as

0 1 1 1 1 1 1 1 1 2
7 r o . : k : . u 3
7 s b s p : p s . 3
7 . s . : p t . s 3
7 : . : . : . : . 3
7 . c . S P : . : 3
7 : . O B : N : . 3
7 P S P T . S P S 3
7 U . : . L . : R 3
6 5 5 5 5 5 5 5 5 4

where the coding is conventional, except that the letters move
along one to indicate a black background square (k->l, b->c and
so on, with some kludge for p, q and r). The characters are
described as outlines and the black squares are indicated by
cross-hatching. Note that space is a zero-width character.

THE OFFER: if someone can send me good descriptions for
draughts pieces as PostScript outlines, then I will incorporate
those and mail the whole lot to comp.sources

(I know draughts pieces are only boring, circular things, but I
want a nice looking king/emperor piece and haven't got the time
to work on it myself).
-- 

William Roberts         ARPA: liam@cs.qmc.ac.uk  (gw: cs.ucl.edu)
Queen Mary College      UUCP: liam@qmc-cs.UUCP
LONDON, UK              Tel:  01-975 5250

richard@gryphon.CTS.COM (Richard Sexton) (05/03/88)

In article <456@sequent.cs.qmc.ac.uk> liam@cs.qmc.ac.uk (William Roberts) writes:
>I also have a chess font, with characters for each of the
>
>THE OFFER: if someone can send me good descriptions for
>draughts pieces as PostScript outlines, then I will incorporate
 ^^^^^^^^
        Checkers

>LONDON, UK              Tel:  01-975 5250

Lift, lorry, shop, lucazaid.


-- 
               "Words of wisdom Lloyd, words of wisdom"
richard@gryphon.CTS.COM                          rutgers!marque!gryphon!richard

edwards@bgsuvax.UUCP (Bruce Edwards) (05/04/88)

In article <3770@gryphon.CTS.COM>, richard@gryphon.CTS.COM (Richard Sexton) writes:
> In article <456@sequent.cs.qmc.ac.uk> liam@cs.qmc.ac.uk (William Roberts) writes:
> >I also have a chess font, with characters for each of the
> >
> >THE OFFER: if someone can send me good descriptions for
> >draughts pieces as PostScript outlines, then I will incorporate
>  ^^^^^^^^
>         Checkers
> 
> >LONDON, UK              Tel:  01-975 5250
> 
> Lift, lorry, shop, lucazaid.

You're wrong! Draughts pieces look like the lids of Marmite jars :-) :-)

eichin@athena.mit.edu (Mark W. Eichin) (05/05/88)

In article <4909@bloom-beacon.MIT.EDU> I (Mark W. Eichin) write:
>In article <212@csvaxa.UUCP> E.Wilkinson@massey.ac.nz writes:
>>Does anyone  have any Postscript chess  pieces, both upside-down & the
>>right way up?  What  about a chess  board with border? Many thanks  in
>>advance to any replies.
>... If you want it,
>email me (if you can anonymous ftp, tell me that and I'll put it
>somewhere); if I get more than 15 requests in a week, I'll post it.  I
>don't read comp.lang.postscript often (thesis time!) so I will not see
>posted requests.
>				Mark Eichin
>			<eichin@athena.mit.edu>
>		SIPB Member & Project Athena ``Watchmaker'' 
>[You should be able to find athena.mit.edu; if not, try via bloom-beacon.]

Well, in the past week (27 Apr 88-4 May 88) I have received 34
requests for the file in various forms, including several *after* the
other font posting who wanted to see this one anyhow.

This font was used in the MIT student newspaper The Tech for at least
one chess reporting column. (In fact, the person writing the column
came to SIPB and asked if we had anything, was reasonably polite, so I
sat down and wrote this one... it only took 3-4 hours, and that is the
sort of thing SIPB does.)

If you can anonymous ftp, SIPB.MIT.EDU:~ftp/pub/chess.ps contains the
file (without this message, ready to use.) [SIPB.MIT.EDU is
18.80.0.13, for those of you without nameservers.]

% ls -l chess.ps
-rw-r--r--  1 eichin   mit         37807 Mar  7 16:38 chess.ps
% sum chess.ps 
30038    37

If you can't ftp, here is the actual file, as promised. Note the
instructions at the end (in postscript comments.)

Enjoy!

				Mark Eichin
			<eichin@athena.mit.edu>
		SIPB Member & Project Athena ``Watchmaker'' 


#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	chess.ps
# This archive created: Wed May  4 20:24:24 1988
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'chess.ps'
then
	echo shar: "will not over-write existing file 'chess.ps'"
else
cat << \SHAR_EOF > 'chess.ps'
%!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Chess printing file... derived from a cookbook bitmap font
% example. Chess characters from xchess (gnuchess project.)
% Mark Eichin <eichin@athena.mit.edu> [eichin:19880307.1637EST]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Cookbook Example Program from First Printing, Revised 7 Jan 1985
% Program: Making a User Defined Font     Number: 25
%-----------------------------------------------------------------------------
%
/makebits { 80 80 true [80 0 0 -80 0 80] } def
					    % The following program
					    % demonstrates the construction of
					    % a user defined font. The font
					    % will only have two characters
					    % defined ("a" and "b") and will
					    % illustrate how both bitmaps and
					    % analytic shapes may be used as
					    % font characters. The character
					    % "a" will print a turkey
					    % (constructed as a bitmap), and
					    % the character "b" will print a
					    % bullseye.
/BuildCharDict 30 dict def                  % This dictionary is used by the
/BuildCharDict2 30 dict def                  % This dictionary is used by the
					    % BuildChar procedure for local
					    % variables.
/ExampleFont 30 dict def                     % Allocate the font dictionary.
/ExampleFont2 30 dict def                     % Allocate the font dictionary.
ExampleFont begin                           % Leave room for the FontID. Build

  /CharacterDefs 30 dict def                 % Define the various character
					    % the required entries in the font
					    % dictionary.
  /FontType 3 def                           % FontType 3 tells PostScript that
					    % this is a user defined font.
  /FontMatrix [1 0 0 1 0 0] def             % Use the identity matrix for the
					    % font coordinate system.
  /FontBBox [0 0 1 1]def                    % The largest character in the
					    % font will be 1 unit by 1 unit.
  /Encoding 256 array def                   % Allocate the Encoding array.
					    % Build the encoding vector that
					    % will define "a" and "b".
  0 1 255 {Encoding exch /.notdef put} for  % Initialize all entries in the
					    % encoding vector with ".notdef".
  Encoding (b) 0 get /bishop put
  Encoding (k) 0 get /king put
  Encoding (n) 0 get /knight put
  Encoding (p) 0 get /pawn put
  Encoding (q) 0 get /queen put
  Encoding (r) 0 get /rook put
  Encoding (_) 0 get /shade put
  Encoding ( ) 0 get /unshade put
  Encoding (B) 0 get /bishop put
  Encoding (K) 0 get /king put
  Encoding (N) 0 get /knight put
  Encoding (P) 0 get /pawn put
  Encoding (Q) 0 get /queen put
  Encoding (R) 0 get /rook put






					    % drawing procedures and put them
					    % in the CharacterDefs dictionary.
  CharacterDefs /.notdef {} put             % There should always be a
					    % description for the undefined
					    % character ``.notdef'' which does
					    % nothing.
  CharacterDefs /unshade { } put
%%%%%%%%% Insert chessfont file here.

CharacterDefs /bishop { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

00e0
e000
0000
0000

0000
01f1
f000
0000

0000
0000
01f1
f000

0000
0000
0000
01f1

f000
0000
0000
0000

00e0
e000
0000
0000

0000
0040
4000
0000

0000
0000
01f0
a000

0000
0000
0000
03f9

1000
0000
0000
0000

07fe
0800
0000
0000

0000
0ffe
0800
0000

0000
0000
1fff
0800

0000
0000
0000
1fff

0c00
0000
0000
0000

3fff
8400
0000
0000

0000
7fff
c400
0000

0000
0000
7fff
c400

0000
0000
0000
ff1f

e600
0000
0000
0000

ff1f
e200
0000
0000

0001
ff1f
f200
0000

0000
0001
f803
f200

0000
0000
0003
f803

fa00
0000
0000
0003

f803
fa00
0000
0000

0007
ff1f
fe00
0000

0000
0007
ff1f
fe00

0000
0000
0007
ff1f

fe00
0000
0000
0007

ff1f
fe00
0000
0000

000f
ff1f
fe00
0000

0000
000f
ff1f
fe00

0000
0000
000f
ff1f

ff00
0000
0000
001f

ffff
ff00
0000
0000

001f
ffff
ff00
0000

0000
001f
ffff
ff00

0000
0000
001f
ffff

ff00
0000
0000
001f

ffff
ff00
0000
0000

000f
ffff
fe00
0000

0000
000f
ffff
fe00

0000
0000
000f
ffff

fe00
0000
0000
000f

ffff
fe00
0000
0000

0007
ffff
fc00
0000

0000
0007
ffff
fc00

0000
0000
0003
ffff

f800
0000
0000
0003

ffff
f800
0000
0000

0001
ffff
f000
0000

0000
0001
ffff
f000

0000
0000
0001
ffff

f000
0000
0000
0000

ffff
e000
0000
0000

0000
8000
2000
0000

0000
0000
8000
2000

0000
0000
0000
ffff

e000
0000
0000
0000

7fbf
c000
0000
0000

0000
5f1f
4000
0000

0000
0000
4e0e
4000

0000
0000
0000
4e0e

4000
0000
0000
0000

5f1f
4000
0000
0000

0000
7fbf
e000
0000

0000
0000
ffff
e000

0000
0000
0000
8000

2000
0000
0000
0000

8000
2000
0000
0000

0001
ffff
f000
0000

0000
0001
ffff
f000

0000
0000
0003
ffff

f800
0000
0000
0000

01f0
0000
0000
0000

0000
01f0
0000
0000

0000
0000
03f8
0000

0000
0000
0000
07fc

0000
0000
0000
0000

0ffe
0000
0000
0000

0000
1fff
0000
0000

0000
1ff8
3fbf
83ff

8000
0000
7fff
ffbf

ffff
e000
0003
ffff

ff1f
ffff
fc00
000f

ffff
ff1f
ffff
ff00

0003
ffff
fc0f
ffff

fc00
0001
f00f
f003

fe00
f800
0003
0000

0000
0000
0c00
0006

0000
0000
0000
0600

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /bishop_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

00e0
e000
0000
0000

0000
01b1
b000
0000

0000
0000
0111
1000

0000
0000
0000
01b1

b000
0000
0000
0000

00e0
e000
0000
0000

0000
0040
4000
0000

0000
0000
01f0
a000

0000
0000
0000
0319

1000
0000
0000
0000

060e
0800
0000
0000

0000
0c02
0800
0000

0000
0000
1803
0800

0000
0000
0000
1001

0c00
0000
0000
0000

3001
8400
0000
0000

0000
6001
c400
0000

0000
0000
4000
4400

0000
0000
0000
c0e0

6600
0000
0000
0000

80a0
2200
0000
0000

0001
80a0
3200
0000

0000
0001
07bc
1200

0000
0000
0003
0404

1a00
0000
0000
0002

07bc
0a00
0000
0000

0006
00a0
0e00
0000

0000
0004
00a0
0200

0000
0000
0004
00a0

0200
0000
0000
0004

00a0
0200
0000
0000

000c
00a0
0200
0000

0000
0008
00a0
0200

0000
0000
0008
00e0

0300
0000
0000
0018

0000
0100
0000
0000

0010
0000
0100
0000

0000
0010
0000
0100

0000
0000
0010
0000

0100
0000
0000
0018

0000
0300
0000
0000

0008
0000
0200
0000

0000
0008
0000
0200

0000
0000
0008
0000

0200
0000
0000
000c

0000
0600
0000
0000

0004
0000
0400
0000

0000
0006
0000
0c00

0000
0000
0002
0000

0800
0000
0000
0003

0000
1800
0000
0000

0001
0000
1000
0000

0000
0001
0000
1000

0000
0000
0001
8000

3000
0000
0000
0000

ffff
e000
0000
0000

0000
8000
2000
0000

0000
0000
8000
2000

0000
0000
0000
ffff

e000
0000
0000
0000

4040
4000
0000
0000

0000
60e0
c000
0000

0000
0000
71b1
c000

0000
0000
0000
71b1

c000
0000
0000
0000

60e0
c000
0000
0000

0000
4040
6000
0000

0000
0000
ffff
e000

0000
0000
0000
8000

2000
0000
0000
0000

8000
2000
0000
0000

0001
8000
3000
0000

0000
0001
0000
1000

0000
0000
0003
ffff

f800
0000
0000
0000

0110
0000
0000
0000

0000
0110
0000
0000

0000
0000
0318
0000

0000
0000
0000
060c

0000
0000
0000
0000

0c06
0000
0000
0000

0000
18e3
0000
0000

0000
1ff8
30a1
83ff

8000
0000
700f
e1b0

fe00
e000
0003
c000

0310
0000
3c00
000e

0000
0718
0000
0700

0003
1ff8
1c0e
03ff

8c00
0001
f00f
f003

fe00
f800
0003
0000

0000
0000
0c00
0006

0000
0000
0000
0600

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /king { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

01c0
0000
0000
0000

0000
01c0
0000
0000

0000
0000
07f0
0000

0000
0000
0000
07f0

0000
0000
0000
0000

01c0
0000
0000
0000

0000
01c0
0000
0000

0000
0000
07f0
0000

0000
0000
0000
0ff8

0000
0000
0000
0000

0ff8
0000
0000
001f

f800
0c18
003f
f800

007f
fe00
1ddc
00ff

fe00
00ff
ff00
1ddc

01ff
ff00
01ff
ffc0

1ddc
07ff
ff80
03ff

fff0
1ddc
0fff
ffc0

07ff
fff8
1ddc
1fff

1fe0
07f8
03fc
1ddc

3fe0
47e0
0ff3
f9fe

0c18
7fcf
f3f0
0fe7

fc7f
0ff8
7e3f
fbf0

0fcf
ff3f
8ff8
fcff

f9f0
1fdf
ffbf
cff9

fdff
fdf8
1f9f
ff9f

c7f1
fbff
fcf8
1fbf

ffcf
f7f3
f3ff
fef8

1fbf
ffe7
f7f7
f7ff

fef8
3fbf
fff3
ffff

e7fc
3efc
3f3c
3ffb

ff7f
cfbc
3efc
3f7c

3f79
fe3f
9f9c
3efc

3f7c
3e7d
fc1f
9fdc

3efc
3f7c
1efc
fe3f

3fdc
fefc
3f7f
defe

ff7f
7fd9
fefc
1f7f

ddfe
7ffe
7fdb
9ef8

1f7f
cdff
7ffe
ffd3

3ef8
1f79
edff
7ffe

ffd4
7cf8
1f7c
65ff

3ffe
ffc5
fdf8
1f7f

15ff
bf7c
ffcb
fdf8

1fbf
c1ff
be3d
ffc3

fdf8
0fbf
f1ff
9c1d

ffc7
fdf8
0fbf
f9ff

de3d
ff8f
f9f0
0f9f

fdff
df7d
ffbf
fbf0

0fdf
fcff
cff9
ffbf

fbf0
0fcf
feff
effb

ff3f
fbf0
07ef
fe7f

effb
ff7f
fbe0
07ef

ff7f
effb
fe7f
f3e0

07e7
ff7f
effb
feff

f7e0
03f7
ff3f
f777

feff
e7c0
03f3
ffbf

f637
fcff
efc0
01fb

ff9f
f777
fdff
cf80

01f9
ffdf
f7f7
f9ff

df80
00fd
ffdf
f7f7

fbff
9f00
007e
ffcf

f7f7
fbff
7e00
007e

7fff
f7f7
fffe
7e00

003f
3fff
f7f7
fffe

fc00
003f
9fff
f7f7

fffc
f800
001f
dfc0

07f0
00f9
f800
000f

c01f
ffff
fe03
f000

0007
fffd
ef7b
dfff

e000
0003
ffb8
c631

8eff
c000
0001
f71d

ef7b
dc77
8000
0000

e3bf
ffff
fee3
0000

0000
77ff
0000
3ff6

0000
0000
7fc0
7fff

80fe
0000
0000
601f

fe3f
fe06
0000
0000

7fff
f80f
fffe
0000

0000
63ff
e003
ffc6

0000
0000
60ff
f80f

ff06
0000
0000
603f

fe3f
fc06
0000
0000

60ff
ffff
ff06
0000

0000
63ff
0000
3fc6

0000
0000
7fc0
7fff

80fe
0000
0000
601f

ffff
fe06
0000
0000

7fff
ffff
fffe
0000

0000
7fff
ffff
fffe

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /king_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
03e0

0000
0000
0000
0000

0220
0000
0000
0000

0000
0e38
0000
0000

0000
0000
0808
0000

0000
0000
0000
0808

0000
0000
0000
0000

0e38
0000
0000
0000

0000
0220
0000
0000

0000
0000
0220
0000

0000
0000
0000
1e3c

0000
0000
0000
0000

1004
0000
0000
001f

f800
3006
003f
f800

0070
0e00
21c2
00e0

0e00
00c0
0300
2362

0180
0300
0180
01c0

2222
0700
0180
0300

0070
2222
0c00
00c0

0600
0018
2222
1800

e060
0407
fc0c
2362

301f
b820
0c0c
0606

31c6
6030
0c30
0818

0383
1004
41c0
0430

0830
00c1
9004
c300

0610
1820
0040
d1c5

8200
0218
1060
0060

5e6d
0400
0308
1040

0030
7c3e
0c00
0108

1040
0018
1818
0800

0108
3040
000c
0000

1803
c10c
20c3
c004

0080
3043
c104
2083

c086
01c0
6063
c104

2083
c182
03e0
6023

c104
2083
e103
01c0

c023
0104
3080
2101

0080
8026
010c
1080

2201
8001
8024
6108

1080
3200
8001
002c

c108
1086
1200
8001

002b
8308
1083
9a00

c001
003a
0208
1080

ea00
4083
0034
0208

1840
3e00
41c2
003c

0218
0840
0e00
63e2

0038
0218
0840
0600

21c2
0070
0610
0860

0200
2082
0040
0410

0820
0300
3006
0040

0430
0c30
0100
1004

00c0
0430
0410
0180

1004
0080
0420
0410

0080
1004
0180
0c20

0618
0080
1004
0100

0860
0208
00c0
0888

0100
1840
030c
0040

09c8
0300
10c0
0104

0060
0888
0200
2080

0186
0020
0808
0600

2180
0082
0020
0808

0400
6300
00c1
0030

0808
0400
8200
0041

8000
0808
0001
8600

0060
8000
0808
0001

0c00
0030
8000
0808

0003
0800
0018
40ff

f80f
ff06
1800
000c

7f80
0000
01fc
3000

0004
0002
1084
2000

6000
0003
0047
39ce

7100
c000
0001
88e2

1084
2388
8000
0000

dc40
0000
011d
0000

0000
4800
ffff
c009

0000
0000
403f
8000

7f03
0000
0000
5fe0

01c0
01fa
0000
0000

4000
07f0
0002
0000

0000
5c00
1ffc
003a

0000
0000
5f00
07f0

00fa
0000
0000
5fc0

01c0
03fa
0000
0000

5f00
0000
00fa
0000

0000
5c00
ffff
c03a

0000
0000
403f
8000

7f02
0000
0000
5fe0

0000
01fa
0000
0000

4000
0000
0002
0000

0000
7fff
ffff
fffe

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /knight { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

4000
0000
0000
0000

0000
4000
0000
0000

0000
0000
e000
0000

0000
0000
0030
e000

0000
0000
0000
0018

f000
0000
0000
0000

001c
f000
0000
0000

0000
000c
f000
0000

0000
0000
000f
f800

0000
0000
0000
000f

ff00
0000
0000
0000

0007
fffe
0000
0000

0000
0007
fff0
0000

0000
0000
0007
ffff

c000
0000
0000
0007

ffff
0000
0000
0000

001f
fdff
fc00
0000

0000
00ff
fe7f
f000

0000
0000
01ff
ff1f

ff80
0000
0000
07f0

3fc7
fe00
0000
0000

0f87
cff3
fff0
0000

0000
1fbf
fff8
ff80

0000
0000
7ffc
7ffe

7ff8
0000
0000
fff8

7fff
3fe0
0000
0003

ffff
ffff
8ffe
0000

0003
ffff
ffff
e7f8

0000
0007
ffff
ffff

f3ff
c000
000f
ffff

ffff
f9fc
0000
001f

ffff
ffff
fcff
e000

003f
ffff
ffff
fe7f

0000
003f
ffff
ffff

7f3f
e000
007f
ffff

fffe
7fbf
8000
00ff

ffff
fffc
ffdf
f800

00ff
ffff
fffd
ffcf

c000
01ff
ffff
fff9

ffef
fc00
01ff
ffff

fff3
fff7
e000
03ff

ffff
fecf
fff3
fe00

07ff
ffff
f8bf
fffb

e000
07ff
ffff
c1ff

cff9
ff00
0fff
fffe

01ff
9ffd
f000
0fff

ff00
01fe
3ffe
ff80

1ffc
fe00
0181
fffe

7800
18f9
fc00
03ff

fffe
7fe0
19f1
f800

03ff
f3fe
7c00
1fe1

f000
07ff
c7ff
7fe0

0fc3
e000
0ff8
3fff

3c00
0f87
c000
0f03

ffff
3ff0
0607
8000

1fff
ffff
3e00
000f

0000
3fff
ffff
3ff0

000e
0000
7fff
ffff

3e00
0000
0000
7fff

ffff
9ff0
0000
0000

ffff
ffff
9f00
0000

0001
ffff
ffff
9ff0

0000
0001
ffff
ffff

9f00
0000
0003
ffff

ffff
9ff8
0000
0003

ffff
ffff
8f80
0000

0007
ffff
ffff
8ffc

0000
000f
ffff
ffff

cf80
0000
001f
ffff

ffff
cffc
0000
003f

ffff
ffff
cf80
0000

003f
ffff
ffff
cffc

0000
007f
ffff
ffff

cf80
0000
00ff
ffff

ffff
cffc
0000
00ff

ffff
ffff
cf80
0000

00ff
ffff
ffff
cffc

0000
01ff
ffff
ffff

cf80
0000
01ff
ffff

ffff
cffc
0000
03ff

ffff
ffff
cf80
0000

07ff
ffff
ffff
cffc

0000
07ff
ffff
ffff

cf80
0000
0fff
ffff

ffff
cffc
0000
0fff

ffff
ffff
cf80
0000

1fff
ffff
ffff
cffc

0000
1fff
ffff
ffff

cf80
0000
3fff
ffff

ffff
cffc
0000
3fff

ffff
ffff
cf80
0000

7fff
ffff
ffff
cffc

0000
7fff
ffff
ffff

cf80
0000
7fff
ffff

ffff
cffc
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /knight_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

4000
0000
0000
0000

0000
4000
0000
0000

0000
0000
e000
0000

0000
0000
0030
a000

0000
0000
0000
0018

b000
0000
0000
0000

001c
9000
0000
0000

0000
000c
9000
0000

0000
0000
000f
9f80

0000
0000
0000
000c

00f0
0000
0000
0000

0004
001f
8000
0000

0000
0004
000c
0000

0000
0000
0004
0007

c000
0000
0000
0004

0003
0000
0000
0000

001c
0001
fc00
0000

0000
00f0
0000
1000

0000
0000
0180
0000

1f80
0000
0000
070f

8000
0200
0000
0000

0c1a
e000
03f0
0000

0000
1832
2000
0080

0000
0000
701e
e000

00f8
0000
0000
c407

8000
0020
0000
0001

8800
0000
003e
0000

0003
1000
0002
0008

0000
0006
2000
0002

000f
c000
000c
4000

0006
0004
0000
0018

8000
0004
0007
e000

0031
0000
0004
0001

0000
0022
0000
0004

0001
e000
0064
0000

0008
0000
8000
00c8

0000
0008
0800
f800

0090
0200
0018
1000

4000
01a0
0300
0030

3000
7c00
0100
0100

03c0
6000
2000
0300

0180
0e80
c300
3e00

0600
00c0
7881
8200

2000
0400
0073
c186

0600
3f00
0c00
01fe

0138
0c00
1000
0807

8300
01e0
0800
1f80

180c
8600
0100
1000

0800
1019
8c00
0300

3000
0fe0
1031
1800

0200
c000
0400
1861

3000
0603
8000
07e0

08c3
6000
0c0c
0000

0400
0f86
4000
0878

0000
07f0
060c
4000

19c0
0000
0200
0008

4000
3000
0000
03f0

000d
c000
6000
0000

0200
0003
0000
4000

0000
03f0
0000
0000

c000
0000
0100
0000

0001
8000
0000
01f0

0000
0001
0000
0000

0100
0000
0003
0000

0000
01f8
0000
0002

0000
0000
0080
0000

0006
0000
0000
00fc

0000
000c
0000
0000

0080
0000
0018
0000

0000
00fc
0000
0030

0000
0000
0080
0000

0020
0000
0000
00fc

0000
0060
0000
0000

0080
0000
00c0
0000

0000
00fc
0000
0080

0000
0000
0080
0000

0080
0000
0000
00fc

0000
0180
0000
0000

0080
0000
0100
0000

0000
00fc
0000
0300

0000
0000
0080
0000

0600
0000
0000
00fc

0000
0400
0000
0000

0080
0000
0c00
0000

0000
00fc
0000
0800

0000
0000
0080
0000

1800
0000
0000
00fc

0000
1000
0000
0000

0080
0000
3000
0000

0000
00fc
0000
2000

0000
0000
0080
0000

6000
0000
0000
00fc

0000
4000
0000
0000

0080
0000
7fff
ffff

ffff
fffc
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask
} put
CharacterDefs /pawn { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

01f8
0000
0000
0000

0000
07fe
0000
0000

0000
0000
0fff
0000

0000
0000
0000
0fff

0000
0000
0000
0000

1fff
8000
0000
0000

0000
1fff
8000
0000

0000
0000
1fff
8000

0000
0000
0000
1fff

8000
0000
0000
0000

1fff
8000
0000
0000

0000
0fff
0000
0000

0000
0000
0fff
0000

0000
0000
0000
07fe

0000
0000
0000
0000

03fc
0000
0000
0000

0000
1fff
8000
0000

0000
0000
3fff
c000

0000
0000
0000
7fff

f000
0000
0000
0001

ffff
fc00
0000
0000

0007
ffff
ff00
0000

0000
001f
ffff
ffc0

0000
0000
0000
0fff

8000
0000
0000
0000

0fff
8000
0000
0000

0000
0fff
8000
0000

0000
0000
1fff
c000

0000
0000
0000
1fff

c000
0000
0000
0000

1fff
c000
0000
0000

0000
3fff
e000
0000

0000
0000
3fff
e000

0000
0000
0000
3fff

e000
0000
0000
0000

7fff
f000
0000
0000

0000
7fff
f000
0000

0000
0000
ffff
f800

0000
0000
0001
ffff

fc00
0000
0000
0001

ffff
fc00
0000
0000

0003
ffff
fe00
0000

0000
0007
ffff
ff00

0000
0000
0007
ffff

ff00
0000
0000
0007

ffff
ff00
0000
0000

000f
ffff
ff80
0000

0000
000f
ffff
ff80

0000
0000
001f
ffff

ffc0
0000
0000
001f

ffff
ffc0
0000
0000

001f
ffff
ffc0
0000

0000
001f
ffff
ffc0

0000
0000
001f
ffff

ffc0
0000
0000
001f

ffff
ffc0
0000
0000

001f
ffff
ffc0
0000

0000
001f
ffff
ffc0

0000
0000
000f
ffff

ff80
0000
0000
000f

ffff
ff80
0000
0000

000f
ffff
ff80
0000

0000
0007
ffff
ff00

0000
0000
0007
ffff

ff00
0000
0000
0007

ffff
ff00
0000
0000

0003
ffff
fe00
0000

0000
0003
ffff
fe00

0000
0000
0001
ffff

fc00
0000
0000
0001

ffff
fc00
0000
0000

0000
ffff
f800
0000

0000
0000
7fff
f000

0000
0000
0000
7fff

f000
0000
0000
0000

3fff
e000
0000
0000

0000
3fff
e000
0000

0000
0007
ffff
ff00

0000
0000
003f
ffff

ffe0
0000
0000
00ff

ffff
fff8
0000
0000

01ff
ffff
fffc
0000

0000
07ff
ffff
ffff

0000
0000
0fff
ffff

ffff
8000
0000
1fff

ffff
ffff
c000
0000

3fff
ffff
ffff
e000

0000
3fff
ffff
ffff

e000
0000
7fff
ffff

ffff
f000
0000
7fff

ffff
ffff
f000
0000

7fff
ffff
ffff
f000

0000
ffff
ffff
ffff

f800
0000
ffff
ffff

ffff
f800
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /pawn_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

01f8
0000
0000
0000

0000
070e
0000
0000

0000
0000
0c03
0000

0000
0000
0000
0801

0000
0000
0000
0000

1801
8000
0000
0000

0000
1000
8000
0000

0000
0000
1000
8000

0000
0000
0000
1000

8000
0000
0000
0000

1801
8000
0000
0000

0000
0801
0000
0000

0000
0000
0c03
0000

0000
0000
0000
070e

0000
0000
0000
0000

03fc
0000
0000
0000

0000
1fff
8000
0000

0000
0000
3000
c000

0000
0000
0000
6000

7000
0000
0000
0001

c000
1c00
0000
0000

0007
0000
0700
0000

0000
001f
ffff
ffc0

0000
0000
0000
0800

8000
0000
0000
0000

0800
8000
0000
0000

0000
0800
8000
0000

0000
0000
1800
c000

0000
0000
0000
1000

4000
0000
0000
0000

1000
4000
0000
0000

0000
3000
6000
0000

0000
0000
2000
2000

0000
0000
0000
2000

2000
0000
0000
0000

6000
3000
0000
0000

0000
4000
1000
0000

0000
0000
c000
1800

0000
0000
0001
8000

0c00
0000
0000
0001

0000
0400
0000
0000

0003
0000
0600
0000

0000
0006
0000
0300

0000
0000
0004
0000

0100
0000
0000
0004

0000
0100
0000
0000

000c
0000
0180
0000

0000
0008
0000
0080

0000
0000
0018
0000

00c0
0000
0000
0010

0000
0040
0000
0000

0010
0000
0040
0000

0000
0010
0000
0040

0000
0000
0010
0000

0040
0000
0000
0010

0000
0040
0000
0000

0010
0000
0040
0000

0000
0018
0000
00c0

0000
0000
0008
0000

0080
0000
0000
0008

0000
0080
0000
0000

000c
0000
0180
0000

0000
0004
0000
0100

0000
0000
0004
0000

0100
0000
0000
0006

0000
0300
0000
0000

0002
0000
0200
0000

0000
0003
0000
0600

0000
0000
0001
0000

0400
0000
0000
0001

8000
0c00
0000
0000

0000
c000
1800
0000

0000
0000
4000
1000

0000
0000
0000
6000

3000
0000
0000
0000

2000
2000
0000
0000

0000
3000
6000
0000

0000
0007
f800
ff00

0000
0000
003e
1e03

81e0
0000
0000
00e0

03fe
0038
0000
0000

0180
0000
000c
0000

0000
0700
0000
0007

0000
0000
0c00
0000

0001
8000
0000
1800

0000
0000
c000
0000

3000
0000
0000
6000

0000
2000
0000
0000

2000
0000
6000
0000

0000
3000
0000
4000

0000
0000
1000
0000

4000
0000
0000
1000

0000
c000
0000
0000

1800
0000
ffff
ffff

ffff
f800
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /queen { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0380
0000
0000

0000
0000
07c0
0000

0000
0000
0000
07c0

0000
0000
0000
0000

07c0
0000
0000
0000

0000
0380
0000
0000

0000
0000
0180
0000

0000
0000
0700
0180

0000
0000
0000
0f80

0180
00e0
0000
0000

0f80
0180
01f0
0000

0000
0f80
03c0
01f0

0000
0000
0700
03c0

01f0
0000
0000
0200

03c0
00e0
0000
0000

0300
03c0
00c0
0000

0000
0300
03c0
00c0

0000
0000
0300
03c0

00c0
0000
0000
0380

03c0
01c0
0000
0000

0380
03c0
01c0
0000

0000
0380
07e0
01c0

0000
0000
03c0
07e0

03c0
0000
3800
03c0

07e0
03c0
0000
7c00

03c0
07e0
03c0
0070

7c00
03e0
07e0
07c0

00f8
7c00
03e0
07e0

07c0
00f8
3c00
03e0

07e0
07c0
00f8
0e00

03f0
07e0
0fc0
0070

0600
03f0
07e0
0fc0

00c0
0700
03f0
0ff0

0fc0
01c0
0380
03f8

0ff0
1fc0
0180
0380

03f8
0ff0
1fc0
0380

03c0
03f8
0ff0
1fc0

0780
03e0
03f8
0ff0

1fc0
0780
03e0
03fc

0ff0
3fc0
0f80
03f0

03fc
0ff0
3fc0
1f80

01f8
03fc
0ff0
3fc0

1f80
01f8
03fe
0ff0

7fc0
3f80
01fc
03fe

1ff8
7fc0
3f00
01fc

03fe
1ff8
7fc0
7f00

01fe
03ff
1ff8
ffc0

ff00
01ff
03ff
1ff8

ffc0
ff00
00ff
03ff

1ff8
ffc1
ff00
00ff

83ff
9ff9
ffc1
ff00

00ff
c3ff
9ff9
ffc3

ff00
00ff
c3ff
9ff9

ffc7
fe00
00ff
e3ff

ffff
ffc7
fe00
00ff

f3ff
ffff
ffcf
fe00

007f
f3ff
ffff
ffdf

fe00
007f
fbff
ffff

ffdf
fe00
007f
ffff

ffff
ffff
fe00
007f

ffff
ffff
ffff
fe00

007f
ffff
ffff
ffff

fe00
003f
ffff
ffff

ffff
fc00
003f
ffff

ffff
ffff
fc00
003f

ffff
ffff
ffff
fc00

003f
ffff
ffff
ffff

fc00
003f
ffff
8001

ffff
fc00
001f
ffc0

3ffc
03ff
f800
000f

801f
fe7f
f801
f800

000c
3fff
f81f
fffc

3000
0007
e7ff
e007

ffe7
e000
0003
81ff

f81f
ff81
c000
0001

007f
fe7f
fe00
c000

0001
81ff
ffff
ff81

8000
0000
e7ff
8001

ffe7
0000
0000
ffc0

3ffc
03ff
0000
0001

801f
ffff
f801
8000

0001
3fff
ffff
fffc

8000
0001
ffff
ffff

ffff
8000
0003
ffff

ffff
ffff
c000
0003

ffff
ffff
ffff
c000

0003
ffff
ffff
ffff

c000
0007
ffff
ffff

ffff
e000
0007
ffff

ffff
ffff
e000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /queen_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0380
0000
0000

0000
0000
06c0
0000

0000
0000
0000
0440

0000
0000
0000
0000

06c0
0000
0000
0000

0000
0380
0000
0000

0000
0000
0180
0000

0000
0000
0700
0180

0000
0000
0000
0d80

0180
00e0
0000
0000

0880
0180
01b0
0000

0000
0d80
03c0
0110

0000
0000
0700
0240

01b0
0000
0000
0200

0240
00e0
0000
0000

0300
0240
00c0
0000

0000
0300
0240
00c0

0000
0000
0300
0240

00c0
0000
0000
0380

0240
01c0
0000
0000

0280
0240
0140
0000

0000
0280
0660
0140

0000
0000
02c0
0420

0340
0000
3800
0240

0420
0240
0000
6c00

0240
0420
0240
0070

4400
0260
0420
0640

00d8
6c00
0220
0420

0440
0088
3c00
0220

0420
0440
00d8
0e00

0230
0420
0c40
0070

0600
0210
0420
0840

00c0
0700
0210
0c30

0840
01c0
0380
0218

0810
1840
0180
0280

0208
0810
1040
0380

02c0
0208
0810
1040

0680
0260
0208
0810

1040
0480
0220
020c

0810
3040
0c80
0330

0204
0810
2040
1880

0118
0204
0810
2040

1080
0108
0206
0810

6040
3180
010c
0202

1818
4040
2100
0104

0202
1008
4040
6100

0106
0203
1008
c040

c100
0183
0201
1008

8040
8100
0081
0201

1008
8041
8100
0081

8201
9009
8041
0100

0080
c200
9009
0043

0300
0080
4200
9009

0046
0200
0080
6200

f00f
0044
0200
00c0

3200
0000
004c
0200

0040
1200
0000
0058

0200
0040
1a00
0000

0050
0200
0040
0e00

0000
0070
0200
0040

0000
0000
0000
0200

0060
0000
0000
0000

0600
0020
0000
0000

0000
0400
0020
0000

0000
0000
0400
0020

0000
0000
0000
0400

0020
0000
0000
0000

0400
0030
0000
7ffe

0000
0c00
0018
003f

c003
fc00
0800
0008

7fe0
0180
07fe
1800

000c
c000
07e0
0003

3000
0006
1800
1ff8

0018
6000
0002
7e00

07e0
007e
4000
0002

ff80
0180
01ff
4000

0002
7e00
0000
007e

4000
0003
1800
7ffe

0018
c000
0001
003f

c003
fc00
8000
0001

7fe0
0000
07fe
8000

0001
0000
0000
0000

8000
0001
0000
0000

0000
8000
0003
0000

0000
0000
c000
0002

0000
0000
0000
4000

0002
0000
0000
0000

4000
0006
0000
0000

0000
6000
0007
ffff

ffff
ffff
e000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /rook { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

1fff
0000
0000
0000

0000
1fff
0000
0000

0000
0780
1fff
003c

0000
0001
ff80
1fff

003f
f000
0003
ff80

1fff
003f
f800
0003

ff80
1fff
003f
f800

0003
ff80
1fff
003f

f800
0003
ff80
ffff

e03f
f800
0003
ffbf

8000
3fbf
f800
0003

ffe0
3fff
80ff
f800

0003
f80f
ffff
fe03

f800
0002
03ff
e000

fff8
0800
0003
fff8

0ffe
03ff
f800
0003

fe03
bfff
b80f
f800

0000
03ff
bfff
bff8

0000
0000
03ff
bfff

bff8
0000
0000
03ff

bfff
bff8
0000
0000

03ff
bfff
bff8
0000

0000
03ff
bfff
bff8

0000
0000
03ff
bfff

bff8
0000
0000
03ff

bfff
bff8
0000
0000

03ff
bfff
bff8
0000

0000
03ff
bfff
bff8

0000
0000
03fe
0000

0ff8
0000
0000
0200

ff7f
e008
0000
0000

03ff
ff7f
fff8
0000

0000
03ff
ff7f
fff8

0000
0000
03ff
ff7f

fff8
0000
0000
03ff

ff7f
fff8
0000
0000

03ff
ff7f
fff8
0000

0000
03ff
ff7f
fff8

0000
0000
03ff
ff7f

fff8
0000
0000
03ff

ff7f
fff8
0000
0000

03ff
ff7f
fff8
0000

0000
03ff
ff7f
fff8

0000
0000
03ff
ff7f

fff8
0000
0000
03ff

f001
fff8
0000
0000

0200
07fc
0008
0000

0000
03ff
bfff
bff8

0000
0000
03ff
bfff

bff8
0000
0000
03ff

bfff
bff8
0000
0000

03ff
bfff
bff8
0000

0000
03ff
bfff
bff8

0000
0000
03ff
bfff

bff8
0000
0000
03ff

bfff
bff8
0000
0000

03ff
bfff
bff8
0000

0000
03ff
bfff
bff8

0000
0000
03ff
bfff

bff8
0000
0000
03ff

bfff
bff8
0000
0000

0200
0000
0008
0000

0000
03ff
ffbf
fff8

0000
0000
03ff
ffbf

fff8
0000
0000
03ff

ffbf
fff8
0000
0000

03ff
ffbf
fff8
0000

0000
03ff
ffbf
fff8

0000
0000
03ff
ffbf

fff8
0000
0000
03ff

ffbf
fff8
0000
0000

03ff
ffbf
fff8
0000

0000
03ff
ffbf
fff8

0000
0000
03ff
ffbf

fff8
0000
0000
03ff

ffbf
fff8
0000
0000

03ff
ffbf
fff8
0000

0000
0200
0000
0008

0000
0000
1fff
ffff

ffff
0000
0000
3000

0000
0001
8000
0000

6000
0000
0000
c000

0000
4000
0000
0000

4000
0000
4000
0000

0000
4000
0000
ffff

ffff
ffff
e000
0001

8000
0000
0000
3000

0003
0000
0000
0000

1800
0006
0000
0000

0000
0c00
0004
0000

0000
0000
0400
0004

0000
0000
0000
0400

0007
ffff
ffff
ffff

fc00
0007
ffff
ffff

ffff
fc00
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /rook_outline { makebits { <
0000
0000
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000

1fff
0000
0000
0000

0000
1001
0000
0000

0000
0780
1001
003c

0000
0001
fc80
1001

0027
f000
0003
0080

1001
0020
1800
0002

0080
1001
0020
0800

0002
0080
1001
0020

0800
0002
0080
f001

e020
0800
0002
00bf

8000
3fa0
0800
0002

00e0
0000
00e0
0800

0002
0000
3fff
8000

0800
0002
000f
e000

fe00
0800
0002
03f8

0000
03f8
0800
0003

fe00
4000
400f
f800

0000
0200
4000
4008

0000
0000
0200
4000

4008
0000
0000
0200

4000
4008
0000
0000

0200
4000
4008
0000

0000
0200
4000
4008

0000
0000
0200
4000

4008
0000
0000
0200

4000
4008
0000
0000

0200
4000
4008
0000

0000
0200
4000
4008

0000
0000
0201
ffff

f008
0000
0000
03ff

0080
1ff8
0000
0000

0200
0080
0008
0000

0000
0200
0080
0008

0000
0000
0200
0080

0008
0000
0000
0200

0080
0008
0000
0000

0200
0080
0008
0000

0000
0200
0080
0008

0000
0000
0200
0080

0008
0000
0000
0200

0080
0008
0000
0000

0200
0080
0008
0000

0000
0200
0080
0008

0000
0000
0200
0080

0008
0000
0000
0200

0ffe
0008
0000
0000

03ff
f803
fff8
0000

0000
0200
4000
4008

0000
0000
0200
4000

4008
0000
0000
0200

4000
4008
0000
0000

0200
4000
4008
0000

0000
0200
4000
4008

0000
0000
0200
4000

4008
0000
0000
0200

4000
4008
0000
0000

0200
4000
4008
0000

0000
0200
4000
4008

0000
0000
0200
4000

4008
0000
0000
0200

4000
4008
0000
0000

03ff
ffff
fff8
0000

0000
0200
0040
0008

0000
0000
0200
0040

0008
0000
0000
0200

0040
0008
0000
0000

0200
0040
0008
0000

0000
0200
0040
0008

0000
0000
0200
0040

0008
0000
0000
0200

0040
0008
0000
0000

0200
0040
0008
0000

0000
0200
0040
0008

0000
0000
0200
0040

0008
0000
0000
0200

0040
0008
0000
0000

0200
0040
0008
0000

0000
03ff
ffff
fff8

0000
0000
1e00
0000

000f
0000
0000
3000

0000
0001
8000
0000

6000
0000
0000
c000

0000
4000
0000
0000

4000
0000
4000
0000

0000
4000
0000
ffff

ffff
ffff
e000
0001

8000
0000
0000
3000

0003
0000
0000
0000

1800
0006
0000
0000

0000
0c00
0004
0000

0000
0000
0400
0004

0000
0000
0000
0400

0007
ffff
ffff
ffff

fc00
0007
ffff
ffff

ffff
fc00
0000
0000

0000
0000
0000
0000

0000
0000
0000
0000>} imagemask } put
CharacterDefs /shade { makebits { <
2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111

2222
2222
2222
2222

2222
4444
4444
4444

4444
4444
8888
8888

8888
8888
8888
1111

1111
1111
1111
1111>} imagemask } put

%%%%%%%%% End of chessfont file here.




  /BuildChar                                % The procedure BuildChar is
    { BuildCharDict begin                   % called everytime a character
					    % from this font must be
					    % constructed.
	/char exch def                      % The character code is provided
					    % as an argument to this
					    % procedure.
	/fontdict exch def                  % So is the font dictionary.
									
	/charname fontdict /Encoding get    % Convert the character code to
	  char get def                      % the corresponding name by
					    % looking it up in the encoding
					    % vector.
	/charproc fontdict /CharacterDefs   % Now retrieve the procedure by
	  get charname get def              % that name from the CharacterDefs
					    % dictionary.
	1 0 0 0 1 1 setcachedevice          % Using the ``setcachedevice''
					    % operator enables the characters
					    % from this font to be cached.
	gsave charproc grestore             % Call the procedure which renders
					    % the character.
      end
    } def
end                                         % Now we are done specifying all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

/ExampleFont2 30 dict def                     % Allocate the font dictionary.
ExampleFont2 begin
  
  /CharacterDefs 30 dict def                 % Define the various character
  ExampleFont /CharacterDefs get CharacterDefs copy pop

					    % the required entries in the font
  /Encoding 256 array def                   % Allocate the Encoding array.
  0 1 255 {Encoding exch /.notde

liam@cs.qmc.ac.uk (William Roberts) (05/07/88)

Sender:

Followup-To:

Distribution:

Keywords:


The chess font I previously offered owes all of its nice chess
pieces to the font posted by Andy Walker - I just reorganised
it a bit and added the tie-in with Adobe TranScript and ditroff.

I will add the "fairy chess" pieces to my font, but I am still
waiting to receive those designs for draughts pieces....
-- 

William Roberts         ARPA: liam@cs.qmc.ac.uk  (gw: cs.ucl.edu)
Queen Mary College      UUCP: liam@qmc-cs.UUCP
LONDON, UK              Tel:  01-975 5250