[comp.sources.games] v02i089: cursive - cursive banner program

games-request@tekred.UUCP (11/19/87)

Submitted by: Jan Wolter <umix!umich!eecs.umich.edu!palam.eecs.umich.edu!janc@uunet.uu.net>
Comp.sources.games: Volume 2, Issue 89
Archive-name: cursive.shr

	[I tried it and it really works.  Neat, too!  -br]

#! /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 shell archive."
# Contents:  README Makefile cursive.6 cursive.c cursive.h font.c
# Wrapped by billr@tekred on Thu Nov 19 10:10:23 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(424 characters\)
sed "s/^X//" >README <<'END_OF_README'
XThis is a program for generating horizontal cursive banners.  It's main
Xuse is for generating cute signatures for email.  It is copyrighted by
XJan Wolter, but may be distributed freely.  Have what fun you can...
X
X				  ___                _     __  _
X				 (   >              ' )   /   // _/_
X				  __/___.  ____      / / / __|/  /  _  __
X				 / / (_/|_/ / <__   (_(_/ (_) \_<__</_/ (__
X				<_/
X					janc@crim.eecs.umich.edu
X
END_OF_README
if test 424 -ne `wc -c <README`; then
    echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"Makefile\"
else
echo shar: Extracting \"Makefile\" \(466 characters\)
sed "s/^X//" >Makefile <<'END_OF_Makefile'
XCFLAGS = -g
X
Xcursive: cursive.o x.o xs.o
X	cc -g -o cursive cursive.o x.o xs.o
X
Xx.o: x.c
X
Xxs.o: xs.c
X
Xx.c: font.c
X	xstr font.c
X
Xxs.c: font.c
X	xstr font.c
X
X# This is for use if you haven't got the xstr command.  The program works
X# the same, but is slightly bigger.
X
Xlcursive: cursive.o font.o
X	cc -g -o lcursive cursive.o font.o
X
Xcursive.shar: cursive.c font.c cursive.h cursive.6 Makefile shar
X	shar cursive.c font.c cursive.h cursive.6 Makefile shar > cursive.shar
END_OF_Makefile
if test 466 -ne `wc -c <Makefile`; then
    echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cursive.6 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cursive.6\"
else
echo shar: Extracting \"cursive.6\" \(1300 characters\)
sed "s/^X//" >cursive.6 <<'END_OF_cursive.6'
X.TH CURSIVE 6 "24 July 1985"
X.UC
X.SH NAME
Xcursive \- print text in cursive script
X.SH SYNOPSIS
X.B /usr/games/cursive
X[
X.BI \-i n
X]
X[
X.BI \-t n
X]
X[message]
X.SH DESCRIPTION
X.I Cursive
Xprints a line of text in a rather crude cursive script.
XIt is intended for use mainly for the generation of decorative signatures
Xfor electronic mail.
XIf message text is given on the command line, that text is used.
XOtherwise the text will be read from standard input up to an end of file.
XThe
X.B \-i
Xoption sets the minimum spacing between adjacent characters.
XThe default is
X.B \-i1 .
XThe
X.B \-t
Xoption sets the length of the trailing lines on the end of each word.
XThe default is
X.B \-t1 .
X.PP
XThe '_' character is treated in a special way.  It may be inserted in
Xthe text anywhere you wish to lengthen a connecting line between two
Xletters.
X.SH BUGS
XMany ASCII characters are not defined, notably the numbers and symbols.
XPunctuation is mostly available.
XSome characters are rather ugly.
XThe author has lousy handwriting.
X.SH AUTHOR
XJan Wolter.  UUCP mail to janc@crim.eecs.umich.edu
X.SH COPYRIGHT
XThis program and the cursive font it generates are copyrighted by Jan Wolter.
XBoth may be freely used and distributed in any way whatsoever, so long as
Xthe author's name is left in the source code and documentation.
END_OF_cursive.6
if test 1300 -ne `wc -c <cursive.6`; then
    echo shar: \"cursive.6\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cursive.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cursive.c\"
else
echo shar: Extracting \"cursive.c\" \(6630 characters\)
sed "s/^X//" >cursive.c <<'END_OF_cursive.c'
X/*		CURSIVE SIGNATURE PROGRAM		Version 0.10
X *              (c) 1985 - Jan Wolter
X *
X *  Purpose:	This program translates text into crude cursive script.
X *		It works on any terminal with a fairly normal character
X *		set (must have backslashes and underscores and suchlike).
X *		The font includes all upper and lower case letters, most
X *		punctuation, and a few symbols.  No numbers are included
X *		(It's difficult to make a nice italicized set of numbers).
X *		Cursive was originally written to generate fancy signatures
X *		for electronic mail messages, but other uses may occur to
X *		you.  The attractiveness of the font varies greatly with
X *		the display device.
X *
X *  Usage:	If no command line arguments are given, cursive reads the
X *		text to translate from standard input.  Otherwise the args
X *		are translated (e.g. "cursive Jan Wolter" prints my name).
X *		Output is always to standard output.  A couple command line
X *		arguments are recognized:
X *
X *		  -in	Sets the amount of space to insert between letters.
X *			The default is "-i1".  "-i0" gives interesting
X *			results.
X *		  -tn	Sets the length of the trailing line off the end
X *			of each word.  The default is "-t1".
X *
X *		One character in the text is treated in a special way:
X *
X *		  '_'   Can be inserted in text to slightly lengthen the
X *			the spacing between two letters, or add a longer
X *			tail to the end of a word.
X *
X *  Internals:	Unfortunately, the program is a kludge and the font is
X *		somewhat difficult to edit.  It should be easy to port
X *		though.  Systems with short integers or unsigned characters
X *		should be no problem.  You should probably run "xstr" on the
X *		font.c file, but if you haven't got "xstr", just compiling it
X *		the usual way works fine.
X *
X *  Copyright:	Both the cursive program and the font it generates are
X *		copyrighted by yours truly.  However, both may be used
X *		and distributed freely.  You even have my permission to
X *		sell it, or include in it a system that you sell.  I only
X *		ask that my name be retained on this program, or any direct
X *		decendents of this program with approximately the same
X *		visibility as in this posting.
X *
X *  Mail:	I'm interested in any comments you have on this program.
X *		I can be mailed at "janc@crim.eecs.umich.edu".  Better yet,
X *		if you are into teleconferencing, call M-Net at (313) 994-6333
X *		and type "newuser" at the "login:" prompt to give yourself an
X *		account.  Send mail to janc, or join the "ugames" conference.
X *
X *		Have fun,
X *				  ___                _     __  _
X *				 (   >              ' )   /   // _/_
X *				  __/___.  ____      / / / __|/  /  _  __
X *				 / / (_/|_/ / <__   (_(_/ (_) \_<__</_/ (__
X *				<_/
X */
X
X#include <stdio.h>
X#include "cursive.h"
X
Xchar *buffer[6];	/* memory buffers to build up line in */
Xint c[6];		/* current index in each of the buffer lines */
Xint tail[6];		/* which buffer lines have tails in them */
Xint lasttail;		/* which line was the last letter's tail */
Xint space;		/* how much white space before the next letter */
Xint interspace = 1;	/* how much to spread adjacent letters out */
Xint taillen = 1;	/* how long the tails on ends of words should be */
Xchar firstletter;	/* is this the first letter on the line? */
Xchar message[256] = "";	/* message to print */
X
Xchar *malloc();
X
Xmain(argc,argv)
Xint argc;
Xchar **argv;
X{
Xint i;
Xchar *s,*m;
Xchar ch;
X
X	m = message;
X	for (i = 1; i < argc; i++)
X	{
X		if (*argv[i] == '-')
X			switch(ch = argv[i][1])
X			{
X			case 'i':
X			case 't':
X				s = argv[i]+2;
X				if (*s == '\000')
X					if (++i < argc)
X						s = argv[i];
X				if (*s < '0' || *s > '9')
X				{
X					printf("%s: Illegal value %s\n",
X						argv[0],s);
X					exit(1);
X				}
X				if (ch == 'i')
X					interspace = atoi(s);
X				else
X					taillen = atoi(s);
X				break;
X			default:
X				printf("usage: %s [-tn] [-in] message\n",
X					argv[0]);
X				exit(1);
X			}
X		else
X		{
X			if (m != message)
X				*(m++) = ' ';
X			for (s=argv[i]; *s != '\000'; s++)
X				*(m++) = *s;
X		}
X	}
X	/* Do the deed */
X	if (m != message)
X	{
X		/* Message from the arg list */
X		*(m++) = 0;
X		prline(message);
X	}
X	else
X	{
X		/* Message from standard input */
X		while (gets(message) != NULL)
X			prline(message);
X	}
X}
X
X
X/* Add the given letter to the end of the current line */
X
Xplace(let)
Xstruct letter *let;
X{
Xint i,j,n;
Xint col;
Xint max = -10000;
Xchar pad;
Xchar *l;
X
X	if (firstletter)
X	{
X		col = space;		/* Leading spaces */
X		firstletter = 0;
X	}
X	else
X	{
X		/* Find the furthest left position we can place this letter */
X		for(i=0; i<6; i++)
X		{
X			if (let->line[i][0] != '\000' &&
X			    (col = c[i] - let->spcs[i]) > max)
X				max = col;
X		}
X
X		/* Insert some spaces between letters */
X		col = max + space + interspace;
X	}
X
X	for(i=0; i<6; i++)
X
X		/* If Nothing on this Line, Skip It */
X		if (let->line[i][0] != '\000')
X		{
X			/* Number of Spaces to Put on this Line? */
X			n = col - c[i] + let->spcs[i];
X
X			/* Flyers off Ends of Letters */
X			if (tail[i])
X				for (j = 0;
X				     j < 5 && n > space + 2; j++,n--)
X					buffer[i][c[i]++] = '_';
X
X			/* Connecting Lines Between Letters */
X			pad = (lasttail == i && let->tailin == i) ? '_' : ' ';
X
X			/* In the middle of the intersection of South and */
X			/* East University, someone is playing the piano. */
X			for ( ; n > 0; n--)
X				buffer[i][c[i]++] = pad;
X
X			/* Copy in the letter text */
X			for (l = let->line[i]; *l != '\000'; l++)
X				buffer[i][c[i]++] = *l;
X
X			tail[i] = (i == let->tailout);
X		}
X
X	lasttail = let->tailout;
X	space = 0;
X}
X
X/* Lengthen the last trailer by n */
Xtailer(n)
Xint n;
X{
Xint j;
X	if (lasttail >= 0)
X		for (j = 0; j < n; j++)
X			buffer[lasttail][c[lasttail]++] = '_';
X}
X
X/* Handle a line */
Xprline(s)
Xchar *s;
X{
Xint l,i;
Xchar *ch;
Xshort lcode;
X
X	lasttail = -1;
X	firstletter = 1;
X	space = 0;
X	/* Get some memory to put the output into */
X	l = strlen(s) * (CHARWIDTH + interspace);
X	for (i=0;i<6;i++)
X	{
X		buffer[i] = malloc((unsigned)l);
X		tail[i] = c[i] = 0;
X	}
X
X	/* do each letter */
X	for (ch=s; *ch != '\000'; ch++)
X	{
X
X		*ch &= '\177';
X		/* Find the letter */
X		lcode = (lasttail != 2) ? code1[*ch] : code2[*ch];
X		if (lcode >= 0)
X			place(&list[lcode]);
X		else
X			/* Various Special characters */
X			switch(lcode)
X			{
X			case SP:
X				/* Insert white space before next letter */
X				tailer(taillen);
X				space += 3;
X				lasttail = -1;
X				break;
X			case ST:
X				/* Lengthen the last tail */
X				if (lasttail >= 0)
X					buffer[lasttail][c[lasttail]++] = '_';
X				break;
X			}
X	}
X	tailer(taillen);
X
X	/* print the line and release the memory */
X	for (i=0;i<6;i++)
X	{
X		buffer[i][c[i]++] = '\n';
X		write(1,buffer[i],c[i]);
X		free(buffer[i]);
X	}
X}
END_OF_cursive.c
if test 6630 -ne `wc -c <cursive.c`; then
    echo shar: \"cursive.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cursive.h -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cursive.h\"
else
echo shar: Extracting \"cursive.h\" \(544 characters\)
sed "s/^X//" >cursive.h <<'END_OF_cursive.h'
Xstruct letter {
X	char *line[6];			/* What's on each of the six lines */
X	char spcs[6];			/* Number of leading spaces for each */
X	short tailin,tailout;		/* Where the lines in and out go */
X	};
X
X/* Special Codes for Character Table */
X
X#define XX  -1		/* Ignore character */
X#define SP  -2          /* Space */
X#define ST  -3          /* Extend trailer */
X#define SA  -4		/* Alternate font number */	/* Not used */
X#define SN  -5		/* Numbers */			/* Not used */
X
X#define CHARWIDTH 10
X
Xextern struct letter list[];
Xextern short code1[], code2[];
END_OF_cursive.h
if test 544 -ne `wc -c <cursive.h`; then
    echo shar: \"cursive.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f font.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"font.c\"
else
echo shar: Extracting \"font.c\" \(11667 characters\)
sed "s/^X//" >font.c <<'END_OF_font.c'
X/* CURSIVE FONT FILE
X *
X * This font is copyrighted by Jan Wolter.  See notes in "cursive.c".
X *
X * Several of the letters are rather ugly, but the wonder is not how
X * well it sings.  A few uppercase letters are a bit too tall.  The
X * font has to some extent been chosen to make my name look good to me.
X * Those of you with different names will have to take pot luck, or fix
X * it to taste.  Editing this file must be done with some care.  The
X * numbers on the defines must match the index numbers of the letter
X * in the list[] structure.  The six numbers after the character are how
X * many blank spaces must be added to the beginning of each of the six
X * scan lines to make them line up.  The last two numbers are the scan
X * line numbers in which the character is connected to the preceeding and
X * succeeding characters.  -1 means it isn't.  There are two versions of
X * each lower case letter, one with the line coming in on line 2, and one
X * with the line coming in on line 3.
X */
X
X#include "cursive.h"
X
Xstruct letter list[] = {
X
X#define LA  0		/* a type 1 */ 
X	{ {
X	"",
X	"",
X	 "__.",
X	"(_/|",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LB  1		/* b type 1 */
X	{ {
X	"",
X	  "/",
X 	 "/_",
X	"/_)",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	3,2
X	},
X
X#define LC  2		/* c type 1 */
X	{ {
X	"",
X	"",
X	 "_.",
X	"(_",
X	"",
X	""}
X	,
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LD  3		/* d type 1 */
X	{ {
X	"",
X	    "/",
X	 "__/",
X	"(_/",
X	"",
X	""
X	},
X	{0,4,1,0,0,0},
X	3,3
X	},
X
X#define LE  4		/* e type 1 */
X	{ {
X	"",
X	"",
X	 "_",
X	"</",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LF  5		/* f type 1 */
X	{ {
X	"",
X	    "/)",
X	   "// ",
X	  "//",
X	 "/>",
X	"</ "
X	},
X	{0,4,3,2,1,0},
X	3,3
X	},
X
X#define LG  6		/* g type 1 */
X	{ {
X	"",
X	"",
X	 "_,",
X	"(_)",
X	 "/|",
X	"|/"
X	},
X	{0,0,1,0,1,0},
X	3,3
X	},
X
X#define LH  7		/* h type 1 */
X	{ {
X	"",
X	  "/",
X	 "/_",
X	"/ /",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	3,3
X	},
X
X#define LI  8		/* i type 1 */
X	{ {
X	"",
X	"",
X	 "o",
X	"<",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LJ  9		/* j type 1 */
X	{ {
X	"",
X	"",
X	    "o",
X	   "/",
X	  "/",
X	"-'"
X	},
X	{0,0,4,3,2,0},
X	3,3
X	},
X
X#define LK 10		/* k type 1 */
X	{ {
X	"",
X	  "/",
X	 "/_ ",
X	"/ <",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	3,3
X	},
X
X#define LL 11		/* l type 1 */
X	{ {
X	   "_",
X	  "//",
X	 "//",
X	"</",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	3,3
X	},
X
X#define LM 12		/* m type 1 */
X	{ {
X	"",
X	"",
X	 "______",
X	"/ / / <",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LN 13		/* n type 1 */
X	{ {
X	"",
X	"",
X	 "____",
X	"/ / <",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LO 14		/* o type 1 */
X	{ {
X	"",
X	"",
X	 "_",
X	"(_)",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,2
X	},
X
X#define LP 15		/* p type 1 */
X	{ {
X	"",
X	"",
X	   "_",
X	  "/_)",
X	 "/",
X	"'"
X	},
X	{0,0,3,2,1,0},
X	3,3
X	},
X
X#define LQ 16		/* q type 1 */
X	{ {
X	"",
X	"",
X	 "_,",
X	"(_)",
X	 "/>",
X	"|/"
X	},
X	{0,0,1,0,1,0},
X	3,3
X	},
X
X#define LR 17		/* r type 1 */
X	{ {
X	"",
X	"",
X	 "__",
X	"/ (",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LS 18		/* s type 1 */
X	{ {
X	"",
X	"",
X	 "_",
X	"/_)",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LT 19		/* t type 1 */
X	{ {
X	"",
X	 "_/_",
X	 "/",
X	"<_",
X	"",
X	""
X	},
X	{0,1,1,0,0,0},
X	3,3
X	},
X
X#define LU 20		/* u type 1 */
X	{ {
X	"",
X	"",
X	 ". .",
X	"(_/",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LV 21		/* v type 1 */
X	{ {
X	"",
X	"",
X	", ",
X	"\\/",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	3,2
X	},
X
X#define LW 22		/* w type 1 */
X	{ {
X	"",
X	"",
X	 ", , ,",
X	"(_(_/",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LX 23		/* x type 1 */
X	{ {
X	"",
X	"",
X	 "_.,",
X	"/ /\\",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	3,3
X	},
X
X#define LY 24		/* y type 1 */
X	{ {
X	"",
X	"",
X	 "__  ,",
X	"/ (_/",
X	   "/",
X	  "'"
X	 },
X	{0,0,1,0,3,2},
X	3,3
X	},
X
X#define LZ 25		/* z type 1 */
X	{ {
X	"",
X	"",
X	 "__.",
X	"/  |",
X	  "(|",
X	""
X	},
X	{0,0,1,0,2,0},
X	3,3
X	},
X
X#define NA 26		/* a type 2 */
X	{ {
X	"",
X	"",
X	 "__.",
X	"(_/|",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	2,3
X	},
X
X#define NB 27		/* b type 2 */
X	{ {
X	"",
X	  "/",
X	 "/_",
X	"/_)",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	2,2
X	},
X
X#define NC 28		/* c type 2 */
X	{ {
X	"",
X	"",
X	"__.",
X	"(_",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define ND 29		/* d type 2 */
X	{ {
X	"",
X	    "/",
X	"___/",
X	"(_/",
X	"",
X	""
X	},
X	{0,4,0,0,0,0},
X	2,3
X	},
X
X#define NE 30		/* e type 2 */
X	{ {
X	"",
X	"",
X	 "/>",
X	"(_",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	2,3
X	},
X
X#define NF 31		/* f type 2 */
X	{ {
X	"",
X	    "/)",
X	   "//",
X	  "/_",
X	 "/>",
X	"</"
X	},
X	{0,4,3,2,1,0},
X	2,3
X	},
X
X#define NG 32		/* g type 2 */
X	{ {
X	"",
X	"",
X	"__,",
X	"(_)",
X	 "/|",
X	"|/"
X	},
X	{0,0,0,0,1,0},
X	2,3
X	},
X
X#define NH 33		/* h type 2 */
X	{ {
X	"",
X	  "/",
X	 "/_",
X	"/ /",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	2,3
X	},
X
X#define NI 34		/* i type 2 */
X	{ {
X	"",
X	"",
X	 "o",
X	"<_",
X	"",
X	""
X	},
X	{0,0,1,0,0,0},
X	2,3
X	},
X
X#define NJ 35		/* j type 2 */
X	{ {
X	"",
X	"",
X	   "_o",
X	   "/_",
X	  "/",
X	"-'"
X	},
X	{0,0,3,3,2,0},
X	2,3
X	},
X
X#define NK 36		/* k type 2 */
X	{ {
X	"",
X	  "/",
X	 "/_",
X	"/ <",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	2,3
X	},
X
X#define NL 37		/* l type 2 */
X	{ {
X	  "_",
X	 "//",
X	"|/",
X	 "\\",
X	"",
X	""
X	},
X	{2,1,0,1,0,0},
X	2,3
X	},
X
X#define NM 38		/* m type 2 */
X	{ {
X	"",
X	"",
X	"_______",
X	"/ / / <",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define NN 39		/* n type 2 */
X	{ {
X	"",
X	"",
X	"_____",
X	"/ / <",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define NO 40		/* o type 2 */
X	{ {
X	"",
X	"",
X	"___",
X	"(_)",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,2
X	},
X
X#define NP 41		/* p type 2 */
X	{ {
X	"",
X	"",
X	  "__",
X	  "/_)",
X	 "/",
X	"'"
X	},
X	{0,0,2,2,1,0},
X	2,3
X	},
X
X#define NQ 42		/* q type 2 */
X	{ {
X	"",
X	"",
X	"__,",
X	"(_)",
X	 "/>",
X	"|/"
X	},
X	{0,0,0,0,1,0},
X	2,3
X	},
X
X#define NR 43		/* r type 2 */
X	{ {
X	"",
X	"",
X	",_",
X	 "(",
X	"",
X	""
X	},
X	{0,0,0,1,0,0},
X	2,3
X	},
X
X#define NS 44		/* s type 2 */
X	{ {
X	"",
X	"",
X	"___ ",
X	 "\\_)_",
X	"",
X	""
X	},
X	{0,0,0,1,0,0},
X	2,3
X	},
X
X#define NT 45		/* t type 2 */
X	{ {
X	"",
X	 "_/_",
X	"_/",
X	"(_",
X	"",
X	""
X	},
X	{0,1,0,0,0,0},
X	2,3
X	},
X
X#define NU 46		/* u type 2 */
X	{ {
X	"",
X	"",
X	"_. .",
X	"(_/",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define NV 47		/* v type 2 */
X	{ {
X	"",
X	"",
X	"  .",
X	"\\/",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define NW 48		/* w type 2 */
X	{ {
X	"",
X	"",
X	"_, , ,",
X	"(_(_/",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	2,3
X	},
X
X#define NX 49		/* x type 2 */
X	{ {
X	"",
X	"",
X	"_.,",
X	 "/\\",
X	"",
X	""
X	},
X	{0,0,0,1,0,0},
X	2,3
X	},
X
X#define NY 50		/* y type 2 */
X	{ {
X	"",
X	"",
X	"_  ,",
X	"(_/__",
X	 "/",
X	"'"
X	},
X	{0,0,0,0,1,0},
X	2,3
X	},
X
X#define NZ 51		/* z type 2 */
X	{ {
X	"",
X	"",
X	"__.",
X	  "|",
X	 "(|",
X	""
X	},
X	{0,0,0,2,1,0},
X	2,3
X	},
X
X#define UA 52		/* A */
X	{ {
X	   "__",
X	  "/  )",
X	 "/--/",
X	"/  (",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	3,3
X	},
X
X#define UB 53		/* B  */
X	{ {
X	   "__",
X	  "/  )",
X	 "/--<",
X	"/___/",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	3,3
X	},
X
X#define UC 54		/* C */
X	{ {
X	   "__",
X	  "/  )",
X	 "/",
X	"(__/",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	-1,-1
X	},
X
X#define UD 55		/* D  */
X	{ {
X	   "__",
X	  "/  )",
X	 "/  /",
X	"/__/",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	3,3
X	},
X
X#define UE 56		/* E */
X	{ {
X	   "__",
X	  "/  `",
X	 "/--",
X	"(___,",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	-1,-1
X	},
X
X#define UF 57		/* F */
X	{ {
X	   "_____",
X	   " /  '",
X	 ",-/-,",
X	"(_/",
X	"",
X	""
X	},
X	{3,3,1,0,0,0},
X	-1,-1
X	},
X
X#define UG 58		/* G */
X	{ {
X	  "()  ,",
X	  "/`-'|",
X	 "/   /",
X	"/__-<",
X	"",
X	""
X	},
X	{2,2,1,0,0,0},
X	-1,3
X	},
X
X#define UH 59		/* H */
X	{ {
X	 "_    ,",
X	"' )  /",
X	 "/--/",
X	"/  (",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,3
X	},
X
X#define UI 60		/* I */
X	{ {
X	     "_",
X	    "| )",
X	",---|/",
X	 "\\_/ \\",
X	"",
X	""
X	},
X	{5,4,0,1,0,0},
X	-1,3
X	},
X
X#define UJ 61		/* J */
X	{ {
X	  "___",
X	 "(   >",
X	  "__/",
X	 "/ /",
X	"<_/",
X	""
X	},
X	{2,1,2,1,0,0},
X	-1,2
X	},
X
X#define UK 62		/* K */
X	{ {
X	 "_   ,",
X	"' ) /",
X	 "/-<",
X	"/   )",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,-1
X	},
X
X#define UL 63		/* L */
X	{ {
X	   "_",
X	 "_//",
X	 "/",
X	"/___",
X	"",
X	""
X	},
X	{3,1,1,0,0,0},
X	-1,-1
X	},
X
X#define UM 64		/* M */
X	{ {
X	 "_ _ _",
X	"' ) ) )",
X	 "/ / /",
X	"/ ' (",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,3
X	},
X
X#define UN 65		/* N */
X	{ {
X	 "_ __",
X	"' )  )",
X	 "/  /",
X	"/  (",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,3
X	},
X
X#define UO 66		/* O */
X	{ {
X	   "__",
X	  "/ ')",
X	 "/  /",
X	"(__/",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	-1,-1
X	},
X
X#define UP 67		/* P */
X	{ {
X	 "_ __",
X	"' )  )",
X	 "/--'",
X	"/",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,-1
X	},
X
X#define UQ 68		/* Q */
X	{ {
X	   "__",
X	  "/  )",
X	 "/  /",
X	"(_\\/",
X	   "`",
X	""
X	},
X	{3,2,1,0,3,0},
X	-1,-1
X	},
X
X#define UR 69		/* R */
X	{ {
X	 "_ __",
X	"' )  )",
X	 "/--'",
X	"/  \\",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,3
X	},
X
X#define US 70		/* S */
X	{ {
X	  "()",
X	  "/\\",
X	 "/  )",
X	"/__/_",
X	"",
X	""
X	},
X	{2,2,1,0,0,0},
X	-1,3
X	},
X
X#define UT 71		/* T */
X	{ {
X	  "______",
X	    "/  ",
X	 "--/",
X	"(_/",
X	"",
X	""
X	},
X	{2,4,1,0,0,0},
X	-1,-1
X	},
X
X#define UU 72		/* U */
X	{ {
X	 "_    _",
X	"' )  /",
X	 "/  /",
X	"(__/",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,0
X	},
X
X#define UV 73		/* V */
X	{ {
X	 "_    ",
X	"' )  /",
X	 "(  /",
X	  "\\/",
X	"",
X	""
X	},
X	{1,0,1,2,0,0},
X	-1,0
X	},
X
X#define UW 74		/* W */
X	{ {
X	 "_     ",
X	"' )   /",
X	 "/ / /",
X	"(_(_/",
X	"",
X	""
X	},
X	{1,0,1,0,0,0},
X	-1,0
X	},
X
X#define UX 75		/* X */
X	{ {
X	 "_   ,",
X	"' \\ /",
X	   "X",
X	  "/ \\",
X	"",
X	""
X	},
X	{1,0,3,2,0,0},
X	-1,3
X	},
X
X#define UY 76		/* Y */
X	{ {
X	 "_    ,",
X	"' )  /",
X	 "/  /",
X	"(__/",
X	 "//",
X	"(/"
X	},
X	{1,0,1,0,1,0},
X	-1,3
X	},
X
X#define UZ 77		/* Z */
X	{ {
X	"___",
X	  "/",
X	 "/",
X	"/__",
X	"",
X	""
X	},
X	{0,2,1,0,0,0},
X	-1,-1
X	},
X
X#define PE 78	 	/* ! */
X	{ {
X	   "/",
X	  "/",
X	 "'",
X	"o",
X	"",
X	""
X	},
X	{3,2,1,0,0,0},
X	-1,-1
X	},
X
X#define PU 79		/* " */
X	{ {
X	"o o",
X	"' '",
X	"",
X	"",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	},
X
X#define PX 80		/* # */
X	{ {
X	   "/ /",
X	 "-/-/-",
X	"-/-/-",
X	"/ /",
X	"",
X	""
X	},
X	{3,1,0,0,0,0},
X	-1,-1
X	},
X
X#define PK 81		/* $ */
X	{ {
X	  ",-/-",
X	 "(_/",
X	  "/ )",
X	"-/-'",
X	"",
X	""
X	},
X	{2,1,2,0,0,0},
X	-1,-1
X	},
X
X#define PF 82		/* ' */
X	{ {
X	"o",
X	"'",
X	"",
X	"",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	},
X
X#define PC 83		/* , */
X	{ {
X	"",
X	"",
X	"",
X	"o",
X	"'",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	},
X
X#define PM 84		/* - */
X	{ {
X	"",
X	"",
X	"---",
X	"",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	},
X
X#define PP 85		/* . */
X	{ {
X	"",
X	"",
X	"",
X	"o",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	},
X
X#define PD 86		/* : */
X	{ {
X	"",
X	  "o",
X	"",
X	"o",
X	"",
X	""
X	},
X	{0,2,0,0,0,0},
X	-1,-1
X	},
X
X#define PS 87		/* ; */
X	{ {
X	"",
X	  "o",
X	"",
X	"o",
X	"'",
X	""
X	},
X	{0,2,0,0,0,0},
X	-1,-1
X	},
X
X#define PQ 88		/* ? */
X	{ {
X	  "__",
X	  "__)",
X	 "/",
X	"o",
X	"",
X	""
X	},
X	{2,2,1,0,0,0},
X	-1,-1
X	},
X
X#define PB 89		/* ` */
X	{ {
X	"o",
X	"`",
X	"",
X	"",
X	"",
X	""
X	},
X	{0,0,0,0,0,0},
X	-1,-1
X	}
X	};
X
Xshort code1[] = {
X     /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 */
X	XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
X	XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
X	SP, PE, PU, PX, PK, XX, XX, PF, XX, XX, XX, XX, PC, PM, PP, XX,
X	SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, PD, PS, XX, XX, XX, PQ,
X	XX, UA, UB, UC, UD, UE, UF, UG, UH, UI, UJ, UK, UL, UM, UN, UO,
X	UP, UQ, UR, US, UT, UU, UV, UW, UX, UY, UZ, XX, XX, XX, XX, ST,
X	PB, LA, LB, LC, LD, LE, LF, LG, LH, LI, LJ, LK, LL, LM, LN, LO,
X	LP, LQ, LR, LS, LT, LU, LV, LW, LX, LY, LZ, XX, XX, XX, XX, XX };
X
Xshort code2[] = {
X     /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 */
X	XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
X	XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
X	SP, PE, PU, PX, PK, XX, XX, PF, XX, XX, XX, XX, PC, PM, PP, XX,
X	SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, PD, PS, XX, XX, XX, PQ,
X	XX, UA, UB, UC, UD, UE, UF, UG, UH, UI, UJ, UK, UL, UM, UN, UO,
X	UP, UQ, UR, US, UT, UU, UV, UW, UX, UY, UZ, XX, XX, XX, XX, ST,
X	PB, NA, NB, NC, ND, NE, NF, NG, NH, NI, NJ, NK, NL, NM, NN, NO,
X	NP, NQ, NR, NS, NT, NU, NV, NW, NX, NY, NZ, XX, XX, XX, XX, XX };
END_OF_font.c
if test 11667 -ne `wc -c <font.c`; then
    echo shar: \"font.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0