HP LaserJet driver part 1 of 2

sources-request at panda.UUCP sources-request at panda.UUCP
Wed Sep 25 23:52:14 AEST 1985


Mod.sources:  Volume 3, Issue 18
Submitted by: philabs!ron1!ron (Ron Saad)


Enclosed is the shar format source for a ditroff driver that I implemented
for the HP LaserJet.

                                  Ron Saad  (4Z4UY) Sys Adm -
                                  Center for Advanced Technology
                                  in Telecommunications
                                  Polytechnic Institute of New York

UUCP:   ...{ihnp4,seismo}!{philabs,cmcl2}!ron1!ron
MAIL:   333 Jay St.  Brooklyn, N.Y. 11201
PHONE:  (718) 643-7303

#! /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 the files:
#	README
#	asctab.h
#	glyph.h
#	spectab.h
# This archive created: Mon Sep 23 23:09:20 1985
export PATH; PATH=/bin:$PATH
echo shar: extracting "'README'" '(3528 characters)'
if test -f 'README'
then
	echo shar: will not over-write existing file "'README'"
else
sed 's/^	X//' << \SHAR_EOF > 'README'
	XFollowing is a driver (filter, postprocessor?) for getting ditroff
	Xoutput on the HP LaserJet printer. It is by no means a finished
	Xproduct. It still needs a lot of work, partly for cleanup and partly
	Xfor making it really usable.
	X
	XThe major drawback of the filter is that the output is GIGANTIC,
	Xbecause it issues positioning commands for EVERY character. This also
	Xmakes the printing EXTREMELY SLOW.  (but don't get discouraged, it's
	Xstill usable ...)
	X
	XThe only fix to that problem is to use the LaserJet's default spacing
	Xfor characters, and add width tables for troff to handle the different
	Xspacings of the LaserJet. This has the advantage of reducing the output
	Xsize considerably, along with the time required to print it, BUT - you
	Xalso have to settle for the LaserJet's spacing, which is rather wide
	Xand unattractive (*my opinion*).  Also, the width tables I have don't
	Xagree TOO well with vfont - they expect the Sys 5 stuff - so that could
	Xuse some work too.
	X
	XThe 'draw' functions are not implemented in this filter. I was too lazy
	Xto add them since it's a bit of work and I am not using pic for
	Xanything right now, but if you have the 'draw.c' file that came with
	XDWB (or maybe the equivalent from Berkeley, which I don't have) than
	Xyou can do this yourself.
	X
	XThe fonts in rasti10 look nicer than the ones in vfont.  However, the
	Xglyphs are placed in different positions in the font file, so they need
	Xcode tables to drive them. I never got around to adding the code
	Xtables, but if I do I'll make them available.
	X
	XThere is a 'bug' that I haven't fixed yet - the Laserjet barfs on long
	Xpages. It will not take a positioning command to go to vertical 7600,
	Xfor example, even though it's less than 11 inches. I haven't had enough
	Xtime to look into this and find out exactly how much it WILL let me
	Xuse, but instead I massage all my input files to use a page length
	Xof 10 inches ...
	XThis should not be hard to fix, and if you do, let me know about it.
	X
	XMany people asked for the ^S/^Q filter. I have received many responses
	Xtelling me that this can be achieved via the LITOUT bit, and as many
	Xtelling me that it can't be achieved through LITOUT because of a bug in
	Xthe device driver. I have also received a few versions of fixes for
	Xthis problem. I am therefore leaving out this problem, as it seems to
	Xhave been dealt with extensively. If anybody REALLY wants it, drop me a
	Xline and I'll mail it to you (along with all the other proposed
	Xsolutions I received).
	X
	XFinally, I have lost my HP LaserJet to an AT&T 6300 in an adjacent
	Xoffice. Rumors are we are getting an X2700 (II), but financial
	Xdecisions have not been completed yet. Therefore it seems that
	Xenhancements to this filter will not be top priority in the near future
	X(anybody want to donate a LaserJet to an educational institute ? :-)
	X
	XIf you wish to add the width tables yourself, the information is
	Xavailable from Hewlet Packard. Just call them.  If you need any info
	Xfrom me, feel free to contact  me either through the net (uucp address
	Xbelow) or through the phone...
	X
	XAnd just one thing. If you do make modifications/enhancements/etc,
	XPLEASE let me know? send over whatever you have so that we could share
	Xit with the rest of the net?
	X
	X------------the opinions expressed above etc. etc.  --------------
	X
	X					Ron Saad  (4Z4UY) Sys Adm -
	X					Center for Advanced Technology
	X					in Telecommunications
	X					Polytechnic Institute of New York
	X
	XUUCP:   ...{ihnp4,seismo}!{philabs,cmcl2}!ron1!ron
	XMAIL:   333 Jay St.  Brooklyn, N.Y. 11201
	XPHONE:  (718) 643-7303
SHAR_EOF
if test 3528 -ne "`wc -c < 'README'`"
then
	echo shar: error transmitting "'README'" '(should have been 3528 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'asctab.h'" '(1440 characters)'
if test -f 'asctab.h'
then
	echo shar: will not over-write existing file "'asctab.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'asctab.h'
	X/*
	X * $Header: asctab.h,v 1.1 85/08/15 14:55:33 ron Exp $
	X */
	X
	X/*
	X * asctab.h - Copyright (c) 1985 by Ron Saad
	X *
	X * This code may be freely distributed in source
	X * for non commercial purposes.
	X * Please keep this notice intact.
	X */
	X
	X/*
	X * $Log:	asctab.h,v $
	X * Revision 1.1  85/08/15  14:55:33  ron
	X * Initial revision
	X * 
	X * 
	X */
	X
	Xchar *asctab[] ={
	X	/*
	X	 * these should be things that are "easy"
	X	 * to generate with esc seq and the
	X	 *  cartridge data, not needing a raster map,
	X	 *  plus things that are not available on the
	X	 *  special font in raster form
	X	 */
	X	"\\|", "\033&a+12H", /* 1/6 em space ?? */
	X	"\\^", "\033&a+36H", /* 1/2 em space ?? */
	X	"em", "-", /* FIX THIS TO DO 3/4 EM */
	X	"hy", "-",
	X	"\\-", "\033&a+30H-",	/* curr fnt minus - spacing problem */
	X	/* "mi", "\033&a+30H-",	/* SHOULD BE ON SPEC FONT */
	X	"ce", "\277",
	X		/* does not work - maybe because we have
	X		 * the B cartridge instead of the F one
	X		 */
	X	"dg", "|\033&a-30H-",	/* looks lousy - do better */
	X	"aa", "'",
	X	"ga", "`",
	X	"en", "-",
	X	/* "ru", "_", /* use the bit map instead */
	X	"l.", ".",
	X	"br", "|",
	X	"vr", "|",
	X	"fm", "'",
	X	"or", "|",
	X	"fi", "f\033&a-25Hi",	/* fake ligature */
	X	"ff", "f\033&a-25Hf",	/* fake ligature */
	X	"fl", "f\033&a-25Hl",	/* fake ligature */
	X	"Fi", "f\033&a-30Hf\033&a-25Hi",	/* fake ligature */
	X	"Fl", "f\033&a-30Hf\033&a-25Hl",	/* fake ligature */
	X	/* "sl", "\033&a-50H/", /* spacing problem - is on the spec font */
	X	0, 0,
	X};
	X
SHAR_EOF
if test 1440 -ne "`wc -c < 'asctab.h'`"
then
	echo shar: error transmitting "'asctab.h'" '(should have been 1440 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'glyph.h'" '(1470 characters)'
if test -f 'glyph.h'
then
	echo shar: will not over-write existing file "'glyph.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'glyph.h'
	X/*
	X * $Header: glyph.h,v 1.1 85/08/15 15:07:31 ron Exp $
	X */
	X
	X/*
	X * $Log:	glyph.h,v $
	X * Revision 1.1  85/08/15  15:07:31  ron
	X * Initial revision
	X * 
	X * 
	X */
	X
	Xstruct f_header
	X  {
	X	short		f_magic ;
	X		/*
	X		 * Should be 0436 - for vfont. rasti10 uses
	X		 * just 0 (i think)
	X		 */
	X	unsigned short	f_size ;
	X		/*
	X		 * Total size of raster section
	X		 * of the font file.
	X		 */
	X		/*
	X		 * the following are used for vfont, but seem to
	X		 * be consistently 0 for rasti10. this gives us
	X		 * a way to distinguish between them.
	X		 */
	X	short		f_maxx ;	/* Largest x of character */
	X	short		f_maxy ;	/* Largest y of character */
	X	short		f_xtnd ;	/* Largest extender */
	X  } ;
	X
	Xstruct c_param
	X  {
	X	unsigned short	c_addr ;
	X		/*
	X		 * Offset in file where character
	X		 * is located. doesn't include the
	X		 * size of the c_param and f_header
	X		 * structures - see F_OFFSET below
	X		 */
	X	short		c_size ;	/* Size in bytes of character	*/
	X	char		c_up ;
	X	char		c_down ;
	X		/*
	X		 * c_up + c_down = heigth of raster in
	X		 * font file, in rows, for vfont. rasti10 wants
	X		 * c_up + c_down + 1.
	X		 */
	X	char		c_left ;
	X	char		c_right ;
	X		/*
	X		 * c_right + c_left = width of raster in
	X		 * font file, in bits (dots), for vfont. rasti10 wants
	X		 * c_right + c_left + 1.
	X		 */
	X	char		c_width ;
	X		/*
	X		 * Width, including space required
	X		 * to print character.
	X		 * rasti10 may not use this. be careful.
	X		 */
	X  } ;
	X
	X
	X#define	F_OFFSET	((long)(sizeof(struct f_header)+ \
	X			    256*sizeof(struct c_param)))
SHAR_EOF
if test 1470 -ne "`wc -c < 'glyph.h'`"
then
	echo shar: error transmitting "'glyph.h'" '(should have been 1470 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'spectab.h'" '(4258 characters)'
if test -f 'spectab.h'
then
	echo shar: will not over-write existing file "'spectab.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'spectab.h'
	X/*
	X * $Header: spectab.h,v 1.1 85/08/15 15:07:15 ron Exp $
	X */
	X
	X/*
	X * spectab.h - Copyright (c) 1985 by Ron Saad
	X *
	X * This code may be freely distributed in source
	X * for non commercial purposes.
	X * Please keep this notice intact.
	X */
	X
	X/*
	X * $Log:	spectab.h,v $
	X * Revision 1.1  85/08/15  15:07:15  ron
	X * Initial revision
	X * 
	X * 
	X */
	X
	Xchar *spectab[] ={
	X	/*
	X	 * these are the names of the characters
	X	 *  on the Special font, in same order as
	X	 *  described in the 'Berkeley Font Catalog'.
	X	 *  The index of the name is supposed to give
	X	 *  the position of that character in the
	X	 *  character description table, from which
	X	 *  we directly grab a pointer to the binary
	X	 *  bit map starting position.
	X	 */
	X	"",	/* space */
	X	"if",	/* infinity */
	X	"ip",	/* improper superset */
	X	"pt",	/* proportional to */
	X	"rh",	/* right hand */
	X	"cu",	/* cup (union) */
	X	"rn",	/* root en extender */
	X	"bs",	/* bell sign - seems to have disappeared from
	X		the troff output according to the DWB manual */
	X	"+-",	/* plus-minus */
	X	"<=",	/* <= */
	X	">=",	/* >= */
	X	"sr",	/* square root */
	X	"ts",	/* terminal sigma */
	X	"is",	/* integral sign */
	X	"sl",	/* slash */
	X	"bv",	/* bold vertical */
	X	"lf",	/* left floor (big bracket) */
	X	"rf",	/* right floor (big bracket) */
	X	"lc",	/* left ceiling (big bracket) */
	X	"rc",	/* right ceiling (big bracket) */
	X	"lt",	/* left top (big brace) */
	X	"lb",	/* left bottom (big brace) */
	X	"rt",	/* right top (big brace) */
	X	"rb",	/* right bottom (big brace) */
	X	"lk",	/* left center (big brace) */
	X	"rk",	/* right center (big brace) */
	X	"sb",	/* subset of */
	X	"sp",	/* superset of */
	X	"ca",	/* cap (intersection) */
	X	"no",	/* not */
	X	"lh",	/* left hand */
	X	"mo",	/* member of */
	X	"",
	X	"",
	X	"\"",	/* - not in DWB manual */
	X	"#",	/* - not in DWB manual */
	X	"",
	X	"",
	X	"",
	X	"\\'",	/* name not in Berekeley, but looks like
	X		an accute accent. will never be used since
	X		"aa" occurs in asctab first. */
	X	"gr",	/* gradient */
	X	"",
	X	"mu",	/* multiply */
	X	"pl",	/* math plus */
	X	"",
	X	"mi",	/* math minus */
	X	"",
	X	"di",	/* divide */
	X	"==",	/* identically equal */
	X	"~=",	/* approximately equal */
	X	"ap",	/* approximates */
	X	"!=",	/* not equal */
	X	"<-",	/* left arrow */
	X	"->",	/* right arrow */
	X	"ua",	/* up arrow */
	X	"da",	/* down arrow */
	X	"sc",	/* section */
	X	"**",	/* math star */
	X	"",
	X	"",
	X	"",	/* really a '<' */
	X	"eq",	/* name not in Berekeley */
	X	"",	/* really a '>' */
	X	"",
	X	"",	/* looks like the '@' */
	X	"*A",	/* Alpha (mapped into English on font pos 1) */
	X	"*B",	/* Betta (mapped into English on font pos 1) */
	X	"*G",	/* Gamma */
	X	"*D",	/* Delta */
	X	"*E",	/* Epsilon (mapped into English on font pos 1) */
	X	"*Z",	/* Zetta (mapped into English on font pos 1) */
	X	"*Y",	/* Etta (mapped into English on font pos 1) */
	X	"*H",	/* Theta */
	X	"*I",	/* Iotta (mapped into English on font pos 1) */
	X	"*K",	/* Kappa (mapped into English on font pos 1) */
	X	"*L",	/* Lambda */
	X	"*M",	/* Mu (mapped into English on font pos 1) */
	X	"*N",	/* Nu (mapped into English on font pos 1) */
	X	"*C",	/* Xi */
	X	"*O",	/* Omicron (mapped into English on font pos 1) */
	X	"*P",	/* Pi */
	X	"*R",	/* Rho (mapped into English on font pos 1) */
	X	"*S",	/* Sigma */
	X	"*T",	/* Tau (mapped into English on font pos 1) */
	X	"*U",	/* Upsilon */
	X	"*F",	/* Phi */
	X	"*X",	/* Chi (mapped into English on font pos 1) */
	X	"*Q",	/* Psi */
	X	"*W",	/* Omega */
	X	"dd",	/* double dagger - not in DWB manual */
	X	"br",	/* box vertical rule */
	X	"ib",	/* improper subset */
	X	"\\e",	/* backslash - not in DWB manual */
	X	"ci",	/* circle */
	X	"",		/* really a '^' */
	X	/* "ul",	/* underrule - name not in Berkeley */
	X	"ru",	/* try a rule - name not in Berkeley */
	X	"\\`",	/* grave accent ("ga" listed in asctab) */
	X	"*a",	/* alpha */
	X	"*b",	/* betta */
	X	"*g",	/* gamma */
	X	"*d",	/* delta */
	X	"*e",	/* epsilon */
	X	"*z",	/* zetta */
	X	"*y",	/* etta */
	X	"*h",	/* theta */
	X	"*i",	/* iotta */
	X	"*k",	/* kappa */
	X	"*l",	/* lambda */
	X	"*m",	/* mu */
	X	"*n",	/* nu */
	X	"*c",	/* xi */
	X	"*o",	/* omicron */
	X	"*p",	/* pi */
	X	"*r",	/* rho */
	X	"*s",	/* sigma */
	X	"*t",	/* tau */
	X	"*u",	/* upsilon */
	X	"*f",	/* phi */
	X	"*x",	/* chi */
	X	"*q",	/* psi */
	X	"*w",	/* omega */
	X	"pd",	/* partial derivative */
	X	"es",	/* empty set */
	X	"",	/* really a '{' */
	X	"or",	/* or */
	X	"",	/* really a '}' */
	X	"",	/* really a '~' */
	X	""
	X};
	X
SHAR_EOF
if test 4258 -ne "`wc -c < 'spectab.h'`"
then
	echo shar: error transmitting "'spectab.h'" '(should have been 4258 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0



More information about the Mod.sources mailing list