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