v04i052: xtroff -- troff previewer for X11, Part07/18

Dan Heller argv at island.uu.net
Tue Jul 18 17:25:03 AEST 1989


Submitted-by: Mark Moraes <moraes at ai.toronto.edu>
Posting-number: Volume 4, Issue 52
Archive-name: xtroff/part07



#! /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 7 (of 18)."
# Contents:  xtroff/NeWS/Makefile xtroff/README.X11 xtroff/arc.c
#   xtroff/devpsc/NB xtroff/devpsc/ND xtroff/devpsc/NI xtroff/devpsc/S
#   xtroff/fontstuff/ch2vft.c xtroff/fontstuff/rst2ch.c
#   xtroff/suntroff.h
# Wrapped by moraes at neat.ai on Thu Jul 13 20:55:04 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xtroff/NeWS/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/NeWS/Makefile'\"
else
echo shar: Extracting \"'xtroff/NeWS/Makefile'\" \(5051 characters\)
sed "s/^X//" >'xtroff/NeWS/Makefile' <<'END_OF_FILE'
X# fonts/news/Makefile
X#
X# Makefile for NeWS fonts.
X# D. A. Cahlander 88/12/31.
X# Copyright (c) 1988 Cray Research, Inc.  All Rights Reserved.
X# PostScript is a trademark of Adobe Systems, Inc.
X
X# see README for more information
X# makedev is the program that builds device descriptions
X
XNEWSDIR = /usr/NeWS/fonts
XFONTDIR = /usr/lib/X11/fonts/misc
XFONTS =	${TIMES} ${COURIER} ${HELVETICA} ${SYMBOL}
XOTHERFONTS = ${BOSTON} ${CYRILLIC} ${CURSOR} ${GFONT} \
X	${HEVETICA_MEDIUM} ${ICON} ${KANJI} ${SCREEN}
XSHELL = /bin/sh
X
XFBFILES = \
X 	Btn10.fb Btn12.fb Btn18.fb Btn30.fb Btn35.fb Btn9.fb \
X	Crl11.fb \
X	Crr1.fb Crr10.fb Crr12.fb Crr14.fb Crr16.fb \
X	Crr18.fb Crr24.fb Crr32.fb Crr6.fb Crr7.fb Crr8.fb Crr9.fb \
X	CrrB10.fb CrrB12.fb CrrB14.fb CrrB16.fb CrrB18.fb CrrB24.fb \
X	CrrB32.fb \
X	CrrBO10.fb CrrBO12.fb CrrBO14.fb CrrBO16.fb CrrBO18.fb CrrBO24.fb \
X	CrrBO32.fb \
X	CrrO10.fb CrrO12.fb CrrO14.fb CrrO16.fb CrrO18.fb CrrO24.fb \
X	CrrO32.fb \
X	Cursor12.fb \
X	GFont12.fb \
X	Hlv10.fb Hlv12.fb Hlv14.fb Hlv18.fb Hlv24.fb Hlv32.fb \
X	Hlv7.fb Hlv9.fb \
X	HlvB10.fb HlvB12.fb HlvB14.fb HlvB18.fb HlvB24.fb HlvB32.fb \
X	HlvBO10.fb HlvBO12.fb HlvBO14.fb HlvBO18.fb HlvBO24.fb HlvBO32.fb \
X	HlvO10.fb HlvO12.fb HlvO14.fb HlvO18.fb HlvO24.fb HlvO32.fb \
X	HlvM32.fb \
X	Icon12.fb \
X	Kanji16.fb Kanji24.fb \
X	Scn11.fb Scn13.fb Scn15.fb Scn7.fb \
X	ScnB13.fb ScnB15.fb \
X	Smb10.fb Smb12.fb Smb14.fb Smb18.fb Smb24.fb Smb32.fb \
X	SmbM32.fb \
X	TmsB10.fb TmsB12.fb TmsB14.fb TmsB18.fb TmsB24.fb TmsB25.fb \
X	TmsB27.fb TmsB30.fb TmsB32.fb TmsB34.fb TmsB39.fb TmsB44.fb \
X	TmsB49.fb TmsB54.fb TmsB59.fb TmsB69.fb TmsB89.fb \
X	TmsBI10.fb TmsBI12.fb TmsBI14.fb TmsBI18.fb TmsBI24.fb TmsBI32.fb \
X	TmsI10.fb TmsI12.fb TmsI14.fb TmsI18.fb TmsI24.fb TmsI26.fb \
X	TmsI29.fb TmsI32.fb TmsI33.fb TmsI38.fb TmsI43.fb TmsI47.fb \
X	TmsI53.fb TmsI57.fb TmsI67.fb TmsI86.fb \
X	TmsR10.fb TmsR12.fb TmsR14.fb TmsR16.fb TmsR18.fb TmsR19.fb \
X	TmsR20.fb TmsR23.fb TmsR24.fb TmsR26.fb TmsR28.fb TmsR31.fb \
X	TmsR32.fb TmsR36.fb TmsR41.fb TmsR46.fb TmsR51.fb TmsR56.fb \
X	TmsR62.fb TmsR72.fb TmsR9.fb TmsR92.fb
X
XBOSTON = \
X 	Btn10.snf Btn12.snf Btn18.snf Btn30.snf Btn35.snf Btn9.snf
X
XCYRILLIC = Crl11.snf
X
XCOURIER = \
X	Crr1.snf Crr10.snf Crr12.snf Crr14.snf Crr16.snf \
X	Crr18.snf Crr24.snf Crr32.snf Crr6.snf Crr7.snf Crr8.snf Crr9.snf \
X	CrrB10.snf CrrB12.snf CrrB14.snf CrrB16.snf CrrB18.snf CrrB24.snf \
X	CrrB32.snf \
X	CrrBO10.snf CrrBO12.snf CrrBO14.snf CrrBO16.snf CrrBO18.snf CrrBO24.snf \
X	CrrBO32.snf \
X	CrrO10.snf CrrO12.snf CrrO14.snf CrrO16.snf CrrO18.snf CrrO24.snf \
X	CrrO32.snf
X
XCURSOR = Cursor12.snf
X
XGFONT =	GFont12.snf
X
XHELVETICAL = \
X	Hlv10.snf Hlv12.snf Hlv14.snf Hlv18.snf Hlv24.snf Hlv32.snf \
X	Hlv7.snf Hlv9.snf \
X	HlvB10.snf HlvB12.snf HlvB14.snf HlvB18.snf HlvB24.snf HlvB32.snf \
X	HlvBO10.snf HlvBO12.snf HlvBO14.snf HlvBO18.snf HlvBO24.snf HlvBO32.snf \
X	HlvO10.snf HlvO12.snf HlvO14.snf HlvO18.snf HlvO24.snf HlvO32.snf
X
XHEVETICA_MEDIUM = HlvM32.snf
X
XICON =	Icon12.snf
X
XKANJI = \
X	Kanji16.snf Kanji24.snf
X
XSCREEN = \
X	Scn11.snf Scn13.snf Scn15.snf Scn7.snf \
X	ScnB13.snf ScnB15.snf
X
XSYMBOL = \
X	Smb10.snf Smb12.snf Smb14.snf Smb18.snf Smb24.snf Smb32.snf \
X	SmbM32.snf
X
XTIMES =	 \
X	TmsB10.snf TmsB12.snf TmsB14.snf TmsB18.snf TmsB24.snf TmsB25.snf \
X	TmsB27.snf TmsB30.snf TmsB32.snf TmsB34.snf TmsB39.snf TmsB44.snf \
X	TmsB49.snf TmsB54.snf TmsB59.snf TmsB69.snf TmsB89.snf \
X	TmsBI10.snf TmsBI12.snf TmsBI14.snf TmsBI18.snf TmsBI24.snf TmsBI32.snf \
X	TmsI10.snf TmsI12.snf TmsI14.snf TmsI18.snf TmsI24.snf TmsI26.snf \
X	TmsI29.snf TmsI32.snf TmsI33.snf TmsI38.snf TmsI43.snf TmsI47.snf \
X	TmsI53.snf TmsI57.snf TmsI67.snf TmsI86.snf \
X	TmsR10.snf TmsR12.snf TmsR14.snf TmsR16.snf TmsR18.snf TmsR19.snf \
X	TmsR20.snf TmsR23.snf TmsR24.snf TmsR26.snf TmsR28.snf TmsR31.snf \
X	TmsR32.snf TmsR36.snf TmsR41.snf TmsR46.snf TmsR51.snf TmsR56.snf \
X	TmsR62.snf TmsR72.snf TmsR9.snf TmsR92.snf
X
Xall:	${FONTS}
X
Xmore:	${OTHERFONTS}
X
Xkanji:	${KANJI}
X
Xsymbol:	${SYMBOL}
X
Xtimes:	${TIMES}
X
Xsample:	\
X	Btn10.snf  \
X	Crl11.snf \
X	Crr10.snf  \
X	CrrB10.snf  \
X	CrrBO10.snf  \
X	CrrO10.snf  \
X	Hlv10.snf  \
X	HlvB10.snf  \
X	HlvBO10.snf  \
X	HlvO10.snf  \
X	Smb10.snf  \
X	TmsB10.snf  \
X	TmsBI10.snf  \
X	TmsI10.snf  \
X	TmsR10.snf  \
X	Cursor12.snf \
X	GFont12.snf \
X	HlvM32.snf  \
X	Icon12.snf \
X	Kanji16.snf \
X	Scn11.snf 
X
Xshar:	Makefile README news.awk
X	echo "This is a shar archive.  Cut off the header and" > shar.ar
X	echo "execute:" >> shar.ar
X	echo "	sh < file" >> shar.ar
X	echo Files: $? >> shar.ar
X	echo "=================== cut here ===================" >> shar.ar
X	shar $? >> shar.ar
X
X${FBFILES}:
X	ln -s ${NEWSDIR}/$@ .
X
Xinstall:: all
X	cp ${FONTS} ${FONTDIR}
X	cd ${FONTDIR}; mkfontdir
X
Xinstallmore: more
X	cp ${OTHERFONTS} ${FONTDIR}
X	cd ${FONTDIR}; mkfontdir
X
Xclean::
X	rm -f ${SNFFILES} ${FBFILES} core *.out
X
Xclobber: clean
X
X.SUFFIXES: .fb .afb .bdf .snf
X
X.fb.afb:
X	dumpfont -a -d . ${NEWSDIR}/$<
X
X.afb.snf:
X	awk -f news.awk $< | tee $*.bdf | bdftosnf > $*.snf
X	rm $<
X
X.fb.snf:
X	dumpfont -a -d . ${NEWSDIR}/$<
X	awk -f news.awk $*.afb | tee $*.bdf | bdftosnf > $*.snf
X	rm $*.afb
END_OF_FILE
if test 5051 -ne `wc -c <'xtroff/NeWS/Makefile'`; then
    echo shar: \"'xtroff/NeWS/Makefile'\" unpacked with wrong size!
fi
# end of 'xtroff/NeWS/Makefile'
fi
if test -f 'xtroff/README.X11' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/README.X11'\"
else
echo shar: Extracting \"'xtroff/README.X11'\" \(5375 characters\)
sed "s/^X//" >'xtroff/README.X11' <<'END_OF_FILE'
X X11 Notes:  
X ---------- 
X	Most of the install details are the same as for Suntroff. The
Xmajor difference is fonts. The Makefile is hopefully intelligent enough
Xthat you can just change the few constants at the top and make install.
XWherever the other README refers to suntools, read 'the X Windows
XSystem Version 11' and wherever it refers to suntroff, read xtroff.
X
X	If you are running on a system with dirent.h instead of sys/dir.h,
Xyou should uncomment the -DDIRENT from the XtStuff Makefile.
X
X	With X11R3 are included a nice set of Adobe, Bitstream and DEC
Xfonts at 75dpi and 100dpi resolutions. These are in ISO collating
Xformat - we use these fonts to create a new set in PostScript collating
Xsequence. The code and scripts to do this were provided by Dave
XCahlander <dac at earth.cray.com>. Thanks Dave.
X
X	For X Windows releases before X11R3, the only fonts I know of that
Xare widely available and come in a range of sizes useful for documents are
Xvfonts, they're what this previewer uses. If you haven't got at least the
Xoriginal R.*, I.*, B.*, and S.* fonts generated from the Hershey fonts for
Xthe original vcat here at the University of Toronto eons ago, get 'em.
XThey're not included here to conserve space.
X
X	Since the X11 server does not load vfonts, the scaled vfonts
Xgenerated by MakeSunFonts need to be converted to X11 bdf format, and
Xthence to snf. The Makefile in the fontstuff directory does just that,
Xusing the program vf2bdf. It can be invoked using the makefile in this
Xdirectory by 'make fonts'. You then need to put these fonts someplace
Xuseful, and put that location in the master Makefile. The fonts
X[RIBS].* are converted to [ribs].*.snf to conform to the sample server
Xdemands for lower case fontnames only. If you have any other fonts,
Xyou might want to see font.c!
X
X	The Makefile is set to generate the xfonts on install if it is not
Xmaking suntroff. (WARNING: Since Sun has broken 'make' in SunOS4.0 so it
Xcannot process rules with more than one period in the suffix, you'll have to
Xget GNU make or some other public domain make, or make from BSD4.[23] if you
Xhave source, or something to make xfonts under SunOS4.0. Complain to Sun)
X
X	Most of the X11 code is in the file xwindows.c - chalk up a
Xpoint for the X Toolkit. There are a few lines added to draw.c for
Xdrawing functions, and to font.c to load fonts. 
X
X	The directory XtStuff contains the fixed menu widget, based on
Xfixes made by Dana Chee to a piece of code that was in the R2
Xcontrib/menus directory. It's the only working popup menu package I
Xknow of outside the HP widgets. There's a window widget that used to be
Xwith Chris Peterson's xman.
X
X	For the record, this is a straight port of the SunTools
Xpreviewer suntroff which can still be made by simply defining the
Xpreviewer in the Makefile to be suntroff. Credit goes to the authors
Xof suntroff for an excellent troff previewer - I only did an X
Xinterface.
X
X	xtroff has been tested on Sun3-{50,60,110}s and Sun4-110s with bw2
Xand cg4 displays, running SunOS3.5 and 4.0. It works reasonably well on
Xthese. It has also been tested briefly on a monochrome Vaxstation 3200
Xrunning Ultrix 2.2 and works, but runs *SLOWLY* presumably because of slow
X'mi' code in the uVax server for dealing with large pixmaps. One day,
Xsomeone will hopefully fix the server. It has allegedly been seen to compile
Xand run on Silicon Graphics Iris4d machines and on a Cray running Unicos.
X
XNOTE: xwindows.c uses vfprintf() and vsprintf() for the error routines. If
Xyour machine does not have them, either scream at your manufacturer, or get
Xa copy from bsd-sources/src/lib/libc/stdio/v*printf.c. They're freely
Xredistributable.
X
XThe following are X Windows specific files:
X
X	xwindows.c		This file contains all the X11 interface.
X				This includes the page movement, 
X				and the menu.  It provides a large
X				bit map for the troff drawing functions
X				to scribble on then displays the desired
X				part of the page for the user.
X
X	xtroff.manX		The manual page
X	xtroff.tr		The ditroff output of the manual page
X				(so you can test the program without
X				ditroff first)
X	arc.c			Substitute XDrawArc(s)/XFillArc(s) routines
X				which use XDrawLines to draw fast
X				approximate arcs instead of the much slower
X				server arcs.
X				
X
XIn the XtStuff directory:
X	CheckItem.c
X	CheckItem.h
X	CheckItemI.h
X	CheckItemP.h
X	Menu.c
X	Menu.h
X	MenuItem.c
X	MenuItem.h
X	MenuItemI.h
X	MenuItemP.h
X	MenuP.h
X	README.Menu		The fixed menu widget
X
X	README.Window
X	Window.c
X	Window.h
X	WindowP.h		The Window widget - untouched.
X
X	Minibuf.c
X	Minibuf.h
X	MinibufP.h
X	usleep.c		A widget that emulates an Emacs-style
X	util.c			minibuffer for text interaction and message
X	ask.c			display.
X	
X
X                                        Mark Moraes
X                                        Computer Systems Research Institute,
X                                        University of Toronto,
X                                        Toronto, Canada M5S 1A4
X                                        
X                                        {your favourite backbone}!utcsri!moraes
X                                        moraes at utcsri.UUCP (new style)
X                                        moraes at csri.toronto.edu
X                                        moraes at csri.utoronto.ca
X                                        moraes at csri.utoronto (bitnet)
X                                        
END_OF_FILE
if test 5375 -ne `wc -c <'xtroff/README.X11'`; then
    echo shar: \"'xtroff/README.X11'\" unpacked with wrong size!
fi
# end of 'xtroff/README.X11'
fi
if test -f 'xtroff/arc.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/arc.c'\"
else
echo shar: Extracting \"'xtroff/arc.c'\" \(4811 characters\)
sed "s/^X//" >'xtroff/arc.c' <<'END_OF_FILE'
X#ifndef FASTARCS
X
X#include <X11/Xlib.h>
X#include <math.h>
X
X/*
X * The R3 miarc.c code, which is used to draw arcs in the X server is very
X * slow, on Suns and uVaxen at least. (It uses iterative solution of
X * transcendentals to try to be faithful to the protocol) Instead, we use a
X * fast approximation that computes upto MAXPOINTS points on an arc and draws
X * a lines between them. Two calls each to sin(), cos(), and some floating
X * point math (could probably be done in fixed point or integer if you don't
X * have a math chip). These arcs don't follow the X protocol precisely, but
X * look reasonable.
X */
X/* Author: D. A. Cahlander, <dac at earth.cray.com> 89/02/21 */
X/*
X *  Last Modified: Mark Moraes, <moraes at csri.toronto.edu> 89/03/23 to
X *  generalize for elliptical arc drawing as a plug compatible
X *  substitute for Xlib XDrawArc()/XFillArc()/XDrawArcs()/XFillArcs()
X */
X
X/* Basic idea: By representing a ellipse as:
X
X        x = a * cos(t)
X        y = b * sin(t)
X
X   t can be divided into a small number of lines and represent the arc to
X   "display precision" with 15-20 lines.  (More than 20 if it was a large
X   arc.)
X
X        let dt be the delta angle
X        dc = cos(dt)
X        ds = sin(dt)
X
X        x1     dc  -ds    x0
X            =          x
X        y1     ds   dc    y0
X
X   or
X        x(i+1) = dc*x(i) - ds*y(i)
X        y(i+1) = ds*x(i) + dc*y(i)
X
X   with the actual (x,y) being:
X
X        x = xc + x(i)
X        y = yc + y(i)
X */
X
X
X#define MAXPOINTS 99
X
Xstatic drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, fill)
XDisplay *dpy;
XDrawable d;
XGC gc;
Xint x1, y1;
Xunsigned int width, height;
Xint angle1, angle2;
Xint fill;
X{
X	XPoint	points[MAXPOINTS + 2];
X	int	npoints;
X	int	i;
X	double	xc, yc;
X	double	ang;
X#ifdef ELLIPSE_WITHIN_BBOX
X	double	delta;
X#endif /* ELLIPSE_WITHIN_BBOX */
X	double	t, xt, yt, dc, ds;
X	double	xr, yr;
X
X#define DEG_180  (180*64)
X#define DEG_360  (360*64)
X#define DEG_720  (720*64)
X
X	if (angle2 > DEG_360)
X		angle2 = DEG_360;
X
X	/*
X	 * compute number of points needed for "good" display precision 
X	 */
X	npoints = M_PI * sqrt((double) (width + height) / 2.0);
X	npoints = npoints < 8 ? 8 : npoints;
X	npoints = (npoints * ((angle2 < 0) ? -angle2 : angle2) + DEG_720 - 1)
X	 / DEG_360;
X	npoints = npoints > MAXPOINTS ? MAXPOINTS : npoints;
X	/* angle between polygon points */
X	ang = angle2 * M_PI / (DEG_180 * (npoints - 1));
X	dc = cos(ang);
X	ds = - sin(ang);
X	
X	if (angle1 == 0) {
X		xt = 1.0;
X		yt = 0.0;
X	} else {
X		ang = angle1 * M_PI / DEG_180;	/* start angle vector */
X		xt = cos(ang);
X		yt = - sin(ang);
X	}
X
X#ifdef ELLIPSE_WITHIN_BBOX
X	/*
X	 * Warning - possibly non-portable code. Uses internal details of GC
X	 * struct
X	 */
X	delta = gc->values.line_width / 2.0;
X#endif /* ELLIPSE_WITHIN_BBOX */
X	
X	/* radius of arc */
X	xr = width / 2.0;
X	yr = height / 2.0;
X
X	/* center of arc */
X	xc = x1 + xr;
X	yc = y1 + yr;
X
X#ifdef ELLIPSE_WITHIN_BBOX
X	xr = (xr > delta) ? xr - delta : delta;
X	yr = (yr > delta) ? yr - delta : delta;
X#endif /* ELLIPSE_WITHIN_BBOX */
X
X	i = 0;
X	
X	/*
X	 * Warning - possibly non-portable code. Uses internal details of GC
X	 * struct
X	 */
X	if (fill && angle2 != DEG_360 && gc->values.arc_mode == ArcPieSlice) {
X		points[i].x = xc;
X		points[i].y = yc;
X		i++;
X	}
X	
X	for (; i < npoints; i ++) {	/* compute polygon points */
X		points[i].x = xc + xr * xt + (xt >= 0. ? .5 : -.5);
X		points[i].y = yc + yr * yt + (yt >= 0. ? .5 : -.5);
X		t = dc * xt - ds * yt;		/* rotate vector */
X		yt = ds * xt + dc * yt;
X		xt = t;
X	}
X	
X	if (fill)
X		XFillPolygon(dpy, d, gc, points, npoints, Convex,
X		 CoordModeOrigin);
X	else
X		XDrawLines(dpy, d, gc, points, npoints, CoordModeOrigin);
X#undef DEG_180
X#undef DEG_360
X#undef DEG_720
X}
X
XXDrawArc(dpy, d, gc, x1, y1, width, height, angle1, angle2)
XDisplay *dpy;
XDrawable d;
XGC gc;
Xint x1, y1;
Xunsigned int width, height;
Xint angle1, angle2;
X{
X	drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 0);
X}
X
XXDrawArcs(dpy, d, gc, arcs, n_arcs)
XDisplay *dpy;
XDrawable d;
XGC gc;
XXArc *arcs;
Xint n_arcs;
X{
X	register XArc *arcp;
X
X	for(arcp = arcs; n_arcs > 0; n_arcs--)
X		drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y),
X		 (unsigned int) (arcp->width), (unsigned int) (arcp->height),
X		 (int) (arcp->angle1), (int) (arcp->angle2), 0);
X}
X
XXFillArc(dpy, d, gc, x1, y1, width, height, angle1, angle2)
XDisplay *dpy;
XDrawable d;
XGC gc;
Xint x1, y1;
Xunsigned int width, height;
Xint angle1, angle2;
X{
X	drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 1);
X}
X
XXFillArcs(dpy, d, gc, arcs, n_arcs)
XDisplay *dpy;
XDrawable d;
XGC gc;
XXArc *arcs;
Xint n_arcs;
X{
X	register XArc *arcp;
X
X	for(arcp = arcs; n_arcs > 0; n_arcs--)
X		drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y),
X		 (unsigned int) (arcp->width), (unsigned int) (arcp->height),
X		 (int) (arcp->angle1), (int) (arcp->angle2), 1);
X}
X#endif /* FASTARCS */
END_OF_FILE
if test 4811 -ne `wc -c <'xtroff/arc.c'`; then
    echo shar: \"'xtroff/arc.c'\" unpacked with wrong size!
fi
# end of 'xtroff/arc.c'
fi
if test -f 'xtroff/devpsc/NB' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/devpsc/NB'\"
else
echo shar: Extracting \"'xtroff/devpsc/NB'\" \(4611 characters\)
sed "s/^X//" >'xtroff/devpsc/NB' <<'END_OF_FILE'
X# STARTFONT 2.1
X# 
X#  Copyright 1984, 1987 Adobe Systems, Inc.
X#  Portions Copyright 1988 Digital Equipment Corporation
X#  New Century Schoolbook is a registered trademark of Linotype.
X# 
X#  Permission to use, copy, modify, and distribute this software and
X#  its documentation for any purpose and without fee is hereby granted,
X#  provided that the above copyright notices appear in all copies and
X#  that both those copyright notices and this permission notice appear
X#  in supporting documentation, and that the names of Adobe Systems and
X#  Digital Equipment Corporation not be used in advertising or
X#  publicity pertaining to distribution of the software without
X#  specific, written prior permission. Adobe Systems and Digital
X#  Equipment Corporation make no representations about the suitability
X#  of this software for any purpose. It is provided "as is" without
X#  express or implied warranty.
X# 
X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
X# 
X# 
X#  FONT -Adobe-New Century Schoolbook-Bold-R-Normal--24-240-75-75-P-149-ISO8859-1
X#  devpsc.NB.24.75
Xname NB
Xligatures fl fi 0
Xspacewidth 57
Xcharset
X\|	33 0 000	1/6 em space
X\^	17 0 000	1/12 em space
X\&	00 0 000	no space
X!	59 2 041	exclam
X"	67 2 042	quotedbl
X#	115 2 043	numbersign
X$	115 3 044	dollar
X%	167 2 045	percent
X&	170 2 046	ampersand
X'	48 2 047	quoteright
X(	78 3 050	parenleft
X)	78 3 051	parenright
X*	100 2 052	asterisk
X+	121 2 053	plus
X,	56 1 054	comma
X.	56 0 056	period
X/	56 2 057	slash
Xsl	"
X0	115 2 060	zero
X1	115 2 061	one
X2	115 2 062	two
X3	115 2 063	three
X4	115 2 064	four
X5	115 2 065	five
X6	115 2 066	six
X7	115 2 067	seven
X8	115 2 070	eight
X9	115 2 071	nine
X:	56 0 072	colon
X;	56 1 073	semicolon
X<	121 2 074	less
X=	121 0 075	equal
X>	121 2 076	greater
X?	100 2 077	question
X@	149 2 0100	at
XA	152 2 0101	A
XB	156 2 0102	B
XC	156 2 0103	C
XD	167 2 0104	D
XE	152 2 0105	E
XF	144 2 0106	F
XG	167 2 0107	G
XH	174 2 0110	H
XI	89 2 0111	I
XJ	130 2 0112	J
XK	163 2 0113	K
XL	144 2 0114	L
XM	196 2 0115	M
XN	167 2 0116	N
XO	167 2 0117	O
XP	152 2 0120	P
XQ	167 3 0121	Q
XR	163 2 0122	R
XS	133 2 0123	S
XT	144 2 0124	T
XU	167 2 0125	U
XV	152 2 0126	V
XW	196 2 0127	W
XX	144 2 0130	X
XY	144 2 0131	Y
XZ	133 2 0132	Z
X[	78 3 0133	bracketleft
X\	121 2 0134	backslash
X]	78 3 0135	bracketright
Xa^	121 2 0136	asciicircum
X_	100 1 0137	underscore
Xul	"
X\_	"
X`	48 2 0140	quoteleft
Xa	122 0 0141	a
Xb	130 2 0142	b
Xc	111 0 0143	c
Xd	133 2 0144	d
Xe	115 0 0145	e
Xf	78 2 0146	f
Xg	122 3 0147	g
Xh	137 2 0150	h
Xi	74 2 0151	i
Xj	70 3 0152	j
Xk	133 2 0153	k
Xl	70 2 0154	l
Xm	193 0 0155	m
Xn	137 0 0156	n
Xo	122 0 0157	o
Xp	133 1 0160	p
Xq	130 1 0161	q
Xr	104 0 0162	r
Xs	100 0 0163	s
Xt	85 2 0164	t
Xu	137 0 0165	u
Xv	122 0 0166	v
Xw	178 0 0167	w
Xx	122 0 0170	x
Xy	122 1 0171	y
Xz	107 0 0172	z
X{	78 3 0173	braceleft
X|	121 2 0174	bar
Xor	"
X}	78 3 0175	braceright
Xa~	121 0 0176	asciitilde
X!!	59 3 0241	exclamdown
XI!	"
Xct	115 3 0242	cent
Xps	115 2 0243	sterling
Xpo	"
Xyi	144 2 0245	yen
Xyn	"
X$J	"
Xsc	100 3 0247	section
Xum	67 2 0310	dieresis
X..	"
Xd<	100 0 0253	guillemotleft
X-	67 0 055	hyphen
Xhy	"
Xmc	67 2 0305	macron
Xma	"
Xaa	67 2 0302	acute
X\'	"
Xpp	149 2 0266	paragraph
Xcd	67 1 0313	cedilla
Xd>	100 0 0273	guillemotright
X14	172 2 0201	onequarter
X12	172 2 0202	onehalf
X34	172 2 0203	threequarters
X??	100 3 0277	questiondown
XI?	"
XAE	196 2 0341	AE
XO/	167 2 0351	Oslash
Xss	122 2 0373	germandbls
Xae	174 0 0361	ae
Xo/	122 3 0371	oslash
XOE	200 2 0352	OE
XPL	144 2 0350	Lslash
Xui	74 0 0365	dotlessi
Xem	200 0 0320	emdash
Xhc	67 2 0317	caron
X''	67 2 0315	hungarumlaut
Xdt	67 2 0307	dotaccent
Xbe	67 2 0306	breve
XPl	70 2 0370	lslash
X^	67 2 0303	circumflex
Xga	67 2 0301	grave
X\`	"
Xoe	181 0 0372	oe
Xbu	121 2 0267	bullet
Xog	67 1 0316	ogonek
Xdd	100 3 0263	daggerdbl
Xdg	100 3 0262	dagger
Xen	100 0 0261	endash
Xfl	137 2 0257	fl
Xfi	137 2 0256	fi
Xr>	67 0 0255	guilsinglright
Xl<	67 0 0254	guilsinglleft
X$D	115 3 0246	florin
Xpm	200 2 0275	perthousand
Xbq	96 1 0271	quotedblbase
Xlq	96 2 0252	quotedblleft
Xoq	"
Xrq	96 2 0272	quotedblright
Xcq	"
Xn'	48 2 0251	quotesingle
Xri	67 2 0312	ring
X~	67 2 0304	tilde
X13	167 0 0210	fudgedproc!
X23	167 0 0211	fudgedproc!
X18	167 0 0204	fudgedproc!
X38	167 0 0205	fudgedproc!
X58	167 0 0206	fudgedproc!
X78	167 0 0207	fudgedproc!
END_OF_FILE
if test 4611 -ne `wc -c <'xtroff/devpsc/NB'`; then
    echo shar: \"'xtroff/devpsc/NB'\" unpacked with wrong size!
fi
# end of 'xtroff/devpsc/NB'
fi
if test -f 'xtroff/devpsc/ND' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/devpsc/ND'\"
else
echo shar: Extracting \"'xtroff/devpsc/ND'\" \(4606 characters\)
sed "s/^X//" >'xtroff/devpsc/ND' <<'END_OF_FILE'
X# STARTFONT 2.1
X# 
X#  Copyright 1984, 1987 Adobe Systems, Inc.
X#  Portions Copyright 1988 Digital Equipment Corporation
X#  New Century Schoolbook is a registered trademark of Linotype.
X# 
X#  Permission to use, copy, modify, and distribute this software and
X#  its documentation for any purpose and without fee is hereby granted,
X#  provided that the above copyright notices appear in all copies and
X#  that both those copyright notices and this permission notice appear
X#  in supporting documentation, and that the names of Adobe Systems and
X#  Digital Equipment Corporation not be used in advertising or
X#  publicity pertaining to distribution of the software without
X#  specific, written prior permission. Adobe Systems and Digital
X#  Equipment Corporation make no representations about the suitability
X#  of this software for any purpose. It is provided "as is" without
X#  express or implied warranty.
X# 
X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
X# 
X# 
X#  FONT -Adobe-New Century Schoolbook-Bold-I-Normal--24-240-75-75-P-148-ISO8859-1
X#  devpsc.ND.24.75
Xname ND
Xligatures fl fi 0
Xspacewidth 57
Xcharset
X\|	33 0 000	1/6 em space
X\^	17 0 000	1/12 em space
X\&	00 0 000	no space
X!	67 2 041	exclam
X"	80 2 042	quotedbl
X#	121 2 043	numbersign
X$	115 3 044	dollar
X%	178 3 045	percent
X&	178 2 046	ampersand
X'	52 2 047	quoteright
X(	81 3 050	parenleft
X)	81 3 051	parenright
X*	100 2 052	asterisk
X+	121 2 053	plus
X,	57 1 054	comma
X.	57 0 056	period
X/	56 2 057	slash
Xsl	"
X0	115 2 060	zero
X1	115 2 061	one
X2	115 2 062	two
X3	115 2 063	three
X4	115 2 064	four
X5	115 2 065	five
X6	115 2 066	six
X7	115 2 067	seven
X8	115 2 070	eight
X9	115 2 071	nine
X:	57 0 072	colon
X;	57 1 073	semicolon
X<	121 2 074	less
X=	121 0 075	equal
X>	121 2 076	greater
X?	96 2 077	question
X@	149 2 0100	at
XA	148 2 0101	A
XB	152 2 0102	B
XC	152 2 0103	C
XD	167 2 0104	D
XE	148 2 0105	E
XF	141 2 0106	F
XG	163 2 0107	G
XH	174 2 0110	H
XI	89 2 0111	I
XJ	133 2 0112	J
XK	156 2 0113	K
XL	141 2 0114	L
XM	189 2 0115	M
XN	170 2 0116	N
XO	167 2 0117	O
XP	148 2 0120	P
XQ	167 3 0121	Q
XR	159 2 0122	R
XS	137 2 0123	S
XT	144 2 0124	T
XU	167 2 0125	U
XV	148 2 0126	V
XW	189 2 0127	W
XX	148 2 0130	X
XY	141 2 0131	Y
XZ	141 2 0132	Z
X[	81 3 0133	bracketleft
X\	121 2 0134	backslash
X]	81 3 0135	bracketright
Xa^	121 2 0136	asciicircum
X_	100 1 0137	underscore
Xul	"
X\_	"
X`	52 2 0140	quoteleft
Xa	133 0 0141	a
Xb	122 2 0142	b
Xc	107 0 0143	c
Xd	133 2 0144	d
Xe	104 0 0145	e
Xf	78 3 0146	f
Xg	122 3 0147	g
Xh	137 2 0150	h
Xi	78 2 0151	i
Xj	74 3 0152	j
Xk	130 2 0153	k
Xl	78 2 0154	l
Xm	189 0 0155	m
Xn	137 0 0156	n
Xo	115 0 0157	o
Xp	130 1 0160	p
Xq	126 1 0161	q
Xr	104 0 0162	r
Xs	96 0 0163	s
Xt	81 2 0164	t
Xu	137 0 0165	u
Xv	111 0 0166	v
Xw	167 0 0167	w
Xx	115 0 0170	x
Xy	104 1 0171	y
Xz	104 0 0172	z
X{	81 3 0173	braceleft
X|	121 2 0174	bar
Xor	"
X}	81 3 0175	braceright
Xa~	121 0 0176	asciitilde
X!!	67 3 0241	exclamdown
XI!	"
Xct	115 3 0242	cent
Xps	115 2 0243	sterling
Xpo	"
Xyi	115 2 0245	yen
Xyn	"
X$J	"
Xsc	100 3 0247	section
Xum	67 2 0310	dieresis
X..	"
Xd<	96 0 0253	guillemotleft
X-	67 0 055	hyphen
Xhy	"
Xmc	67 2 0305	macron
Xma	"
Xaa	67 2 0302	acute
X\'	"
Xpp	130 2 0266	paragraph
Xcd	67 1 0313	cedilla
Xd>	96 0 0273	guillemotright
X14	172 2 0201	onequarter
X12	172 2 0202	onehalf
X34	172 2 0203	threequarters
X??	96 3 0277	questiondown
XI?	"
XAE	178 2 0341	AE
XO/	167 3 0351	Oslash
Xss	115 3 0373	germandbls
Xae	163 0 0361	ae
Xo/	115 3 0371	oslash
Xoe	170 0 0372	oe
XPl	78 2 0370	lslash
Xui	78 0 0365	dotlessi
XOE	193 2 0352	OE
XPL	141 2 0350	Lslash
Xem	200 0 0320	emdash
Xhc	67 2 0317	caron
Xog	67 1 0316	ogonek
X''	67 2 0315	hungarumlaut
Xri	67 2 0312	ring
Xdt	67 2 0307	dotaccent
Xbe	67 2 0306	breve
X~	67 2 0304	tilde
X^	67 2 0303	circumflex
Xga	67 2 0301	grave
X\`	"
Xpm	233 3 0275	perthousand
Xrq	96 2 0272	quotedblright
Xcq	"
Xbq	96 1 0271	quotedblbase
Xbu	121 0 0267	bullet
Xdd	100 3 0263	daggerdbl
Xdg	100 3 0262	dagger
Xen	100 0 0261	endash
Xfl	137 3 0257	fl
Xfi	137 3 0256	fi
Xr>	56 0 0255	guilsinglright
Xl<	56 0 0254	guilsinglleft
Xlq	96 2 0252	quotedblleft
Xoq	"
Xn'	45 2 0251	quotesingle
X$D	115 3 0246	florin
X13	167 0 0210	fudgedproc!
X23	167 0 0211	fudgedproc!
X18	167 0 0204	fudgedproc!
X38	167 0 0205	fudgedproc!
X58	167 0 0206	fudgedproc!
X78	167 0 0207	fudgedproc!
END_OF_FILE
if test 4606 -ne `wc -c <'xtroff/devpsc/ND'`; then
    echo shar: \"'xtroff/devpsc/ND'\" unpacked with wrong size!
fi
# end of 'xtroff/devpsc/ND'
fi
if test -f 'xtroff/devpsc/NI' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/devpsc/NI'\"
else
echo shar: Extracting \"'xtroff/devpsc/NI'\" \(4605 characters\)
sed "s/^X//" >'xtroff/devpsc/NI' <<'END_OF_FILE'
X# STARTFONT 2.1
X# 
X#  Copyright 1984, 1987 Adobe Systems, Inc.
X#  Portions Copyright 1988 Digital Equipment Corporation
X#  New Century Schoolbook is a registered trademark of Linotype.
X# 
X#  Permission to use, copy, modify, and distribute this software and
X#  its documentation for any purpose and without fee is hereby granted,
X#  provided that the above copyright notices appear in all copies and
X#  that both those copyright notices and this permission notice appear
X#  in supporting documentation, and that the names of Adobe Systems and
X#  Digital Equipment Corporation not be used in advertising or
X#  publicity pertaining to distribution of the software without
X#  specific, written prior permission. Adobe Systems and Digital
X#  Equipment Corporation make no representations about the suitability
X#  of this software for any purpose. It is provided "as is" without
X#  express or implied warranty.
X# 
X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
X# 
X# 
X#  FONT -Adobe-New Century Schoolbook-Medium-I-Normal--24-240-75-75-P-136-ISO8859-1
X#  devpsc.NI.24.75
Xname NI
Xligatures fl fi 0
Xspacewidth 56
Xcharset
X\|	33 0 000	1/6 em space
X\^	17 0 000	1/12 em space
X\&	00 0 000	no space
X!	67 2 041	exclam
X"	80 2 042	quotedbl
X#	121 2 043	numbersign
X$	111 3 044	dollar
X%	167 2 045	percent
X&	170 2 046	ampersand
X'	41 2 047	quoteright
X(	67 3 050	parenleft
X)	67 3 051	parenright
X*	100 2 052	asterisk
X+	121 2 053	plus
X,	56 1 054	comma
X.	56 0 056	period
X/	121 3 057	slash
Xsl	"
X0	111 2 060	zero
X1	111 2 061	one
X2	111 2 062	two
X3	111 2 063	three
X4	111 2 064	four
X5	111 2 065	five
X6	111 2 066	six
X7	111 2 067	seven
X8	111 2 070	eight
X9	111 2 071	nine
X:	56 0 072	colon
X;	56 1 073	semicolon
X<	121 2 074	less
X=	121 0 075	equal
X>	121 2 076	greater
X?	89 2 077	question
X@	149 2 0100	at
XA	141 2 0101	A
XB	144 2 0102	B
XC	144 2 0103	C
XD	156 2 0104	D
XE	144 2 0105	E
XF	133 2 0106	F
XG	156 2 0107	G
XH	167 2 0110	H
XI	81 2 0111	I
XJ	122 2 0112	J
XK	148 2 0113	K
XL	133 2 0114	L
XM	189 2 0115	M
XN	163 2 0116	N
XO	156 2 0117	O
XP	133 2 0120	P
XQ	156 3 0121	Q
XR	148 2 0122	R
XS	133 2 0123	S
XT	137 2 0124	T
XU	163 2 0125	U
XV	141 2 0126	V
XW	185 2 0127	W
XX	141 2 0130	X
XY	137 2 0131	Y
XZ	133 2 0132	Z
X[	67 3 0133	bracketleft
X\	121 2 0134	backslash
X]	67 3 0135	bracketright
Xa^	121 2 0136	asciicircum
X_	100 1 0137	underscore
Xul	"
X\_	"
X`	41 2 0140	quoteleft
Xa	115 0 0141	a
Xb	111 2 0142	b
Xc	89 0 0143	c
Xd	122 2 0144	d
Xe	89 0 0145	e
Xf	67 3 0146	f
Xg	107 3 0147	g
Xh	122 2 0150	h
Xi	67 2 0151	i
Xj	63 3 0152	j
Xk	111 2 0153	k
Xl	67 2 0154	l
Xm	178 0 0155	m
Xn	122 0 0156	n
Xo	100 0 0157	o
Xp	115 1 0160	p
Xq	111 1 0161	q
Xr	89 0 0162	r
Xs	89 0 0163	s
Xt	70 2 0164	t
Xu	122 0 0165	u
Xv	104 0 0166	v
Xw	156 0 0167	w
Xx	100 0 0170	x
Xy	100 1 0171	y
Xz	93 0 0172	z
X{	67 3 0173	braceleft
X|	121 2 0174	bar
Xor	"
X}	67 3 0175	braceright
Xa~	121 0 0176	asciitilde
X!!	67 3 0241	exclamdown
XI!	"
Xct	111 3 0242	cent
Xps	111 2 0243	sterling
Xpo	"
Xyi	111 2 0245	yen
Xyn	"
X$J	"
Xsc	100 3 0247	section
Xum	67 2 0310	dieresis
X..	"
Xd<	85 0 0253	guillemotleft
X-	67 0 055	hyphen
Xhy	"
Xmc	67 2 0305	macron
Xma	"
Xaa	67 2 0302	acute
X\'	"
Xpp	130 2 0266	paragraph
Xcd	67 1 0313	cedilla
Xd>	85 0 0273	guillemotright
X14	167 2 0201	onequarter
X12	167 2 0202	onehalf
X34	167 2 0203	threequarters
X??	89 3 0277	questiondown
XI?	"
XAE	174 2 0341	AE
XO/	156 3 0351	Oslash
Xss	111 3 0373	germandbls
Xae	144 0 0361	ae
Xo/	100 3 0371	oslash
Xoe	156 0 0372	oe
XPl	67 2 0370	lslash
Xui	67 0 0365	dotlessi
XOE	196 2 0352	OE
XPL	133 2 0350	Lslash
Xem	200 0 0320	emdash
Xhc	67 2 0317	caron
Xog	67 1 0316	ogonek
X''	67 2 0315	hungarumlaut
Xri	67 2 0312	ring
Xdt	67 2 0307	dotaccent
Xbe	67 2 0306	breve
X~	67 2 0304	tilde
X^	67 2 0303	circumflex
Xga	67 2 0301	grave
X\`	"
Xpm	200 3 0275	perthousand
Xrq	78 2 0272	quotedblright
Xcq	"
Xbq	78 1 0271	quotedblbase
Xbu	121 0 0267	bullet
Xdd	100 3 0263	daggerdbl
Xdg	100 3 0262	dagger
Xen	100 0 0261	endash
Xfl	122 3 0257	fl
Xfi	122 3 0256	fi
Xr>	67 0 0255	guilsinglright
Xl<	67 0 0254	guilsinglleft
Xlq	78 2 0252	quotedblleft
Xoq	"
Xn'	56 2 0251	quotesingle
X$D	111 3 0246	florin
X13	167 0 0210	fudgedproc!
X23	167 0 0211	fudgedproc!
X18	167 0 0204	fudgedproc!
X38	167 0 0205	fudgedproc!
X58	167 0 0206	fudgedproc!
X78	167 0 0207	fudgedproc!
END_OF_FILE
if test 4605 -ne `wc -c <'xtroff/devpsc/NI'`; then
    echo shar: \"'xtroff/devpsc/NI'\" unpacked with wrong size!
fi
# end of 'xtroff/devpsc/NI'
fi
if test -f 'xtroff/devpsc/S' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/devpsc/S'\"
else
echo shar: Extracting \"'xtroff/devpsc/S'\" \(5257 characters\)
sed "s/^X//" >'xtroff/devpsc/S' <<'END_OF_FILE'
X# STARTFONT 2.1
X# 
X#  Copyright 1984, 1987 Adobe Systems, Inc.
X#  Portions Copyright 1988 Digital Equipment Corporation
X# 
X#  Permission to use, copy, modify, and distribute this software and
X#  its documentation for any purpose and without fee is hereby granted,
X#  provided that the above copyright notices appear in all copies and
X#  that both those copyright notices and this permission notice appear
X#  in supporting documentation, and that the names of Adobe Systems and
X#  Digital Equipment Corporation not be used in advertising or
X#  publicity pertaining to distribution of the software without
X#  specific, written prior permission. Adobe Systems and Digital
X#  Equipment Corporation make no representations about the suitability
X#  of this software for any purpose. It is provided "as is" without
X#  express or implied warranty.
X# 
X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
X# 
X# 
X#  FONT -Adobe-Symbol-Medium-R-Normal--24-240-75-75-P-142-ADOBE-FONTSPECIFIC
X#  devpsc.S.24.75
Xname S
Xspecial
Xligatures 0
Xspacewidth 50
Xcharset
X\|	33 0 000	1/6 em space
X\^	17 0 000	1/12 em space
X\&	00 0 000	no space
X!	67 2 041	exclam
Xfa	143 2 042	universal
X#	100 2 043	numbersign
Xte	110 2 044	existential
X%	167 2 045	percent
X&	156 2 046	ampersand
Xcm	88 0 047	suchthat
X(	67 3 050	parenleft
X)	67 3 051	parenright
X**	100 2 052	asteriskmath
X+	110 0 053	plus
Xpl	"
X,	50 1 054	comma
X\-	110 0 055	minus
Xmi	"
X.	50 0 056	period
X/	56 2 057	slash
Xsl	"
X0	100 2 060	zero
X1	100 2 061	one
X2	100 2 062	two
X3	100 2 063	three
X4	100 2 064	four
X5	100 2 065	five
X6	100 2 066	six
X7	100 2 067	seven
X8	100 2 070	eight
X9	100 2 071	nine
X:	56 0 072	colon
X;	56 1 073	semicolon
X<	110 0 074	less
X=	110 0 075	equal
Xeq	"
X>	110 0 076	greater
X?	89 2 077	question
X=~	110 0 0100	congruent
X*A	144 2 0101	Alpha
X*B	133 2 0102	Beta
X*X	144 2 0103	Chi
X*D	122 2 0104	Delta
X*E	122 2 0105	Epsilon
X*F	153 2 0106	Phi
X*G	121 2 0107	Gamma
X*Y	144 2 0110	Eta
X*I	67 2 0111	Iota
X*K	144 2 0113	Kappa
X*L	137 2 0114	Lambda
X*M	178 2 0115	Mu
X*N	144 2 0116	Nu
X*O	144 2 0117	Omicron
X*P	154 2 0120	Pi
X*H	148 2 0121	Theta
X*R	111 2 0122	Rho
X*S	118 2 0123	Sigma
X*T	122 2 0124	Tau
X*U	138 2 0125	Upsilon
Xts	88 1 0126	sigma1
X*W	154 2 0127	Omega
X*C	129 2 0130	Xi
X*Q	159 2 0131	Psi
X*Z	122 2 0132	Zeta
X[	67 3 0133	bracketleft
Xtf	173 0 0134	therefore
X]	67 3 0135	bracketright
Xbt	132 2 0136	perpendicular
X_	100 1 0137	underscore
Xul	"
X\_	"
Xrn	100 2 0140	radicalex
X*a	126 0 0141	alpha
X*b	110 3 0142	beta
X*x	110 1 0143	chi
X*d	99 2 0144	delta
X*e	88 0 0145	epsilon
X*f	104 3 0146	phi
X*g	82 1 0147	gamma
X*y	121 1 0150	eta
X*i	66 0 0151	iota
X*k	110 0 0153	kappa
X*l	110 2 0154	lambda
X*m	115 1 0155	mu
X*n	104 0 0156	nu
X*o	110 0 0157	omicron
X*p	110 0 0160	pi
X*h	104 2 0161	theta
X*r	110 1 0162	rho
X*s	121 0 0163	sigma
X*t	88 0 0164	tau
X*u	115 0 0165	upsilon
X*w	137 0 0167	omega
X*c	99 3 0170	xi
X*q	137 1 0171	psi
X*z	99 3 0172	zeta
X{	96 3 0173	braceleft
X|	40 3 0174	bar
Xor	"
X}	96 3 0175	braceright
Xap	110 0 0176	similar
Xfm	49 2 0242	minute
Xmt	"
X<=	110 2 0243	lessequal
Xif	143 0 0245	infinity
X$D	100 3 0246	florin
XCc	151 0 0247	club
XCd	151 0 0250	diamond
Xbs	151 0 0251	heart
XCh	"
XCs	151 0 0252	spade
X<>	208 0 0253	arrowboth
X<-	197 0 0254	arrowleft
Xua	121 3 0255	arrowup
X->	197 0 0256	arrowright
Xda	121 3 0257	arrowdown
Xde	80 2 0260	degree
X+-	110 2 0261	plusminus
Xsd	82 2 0262	second
X>=	110 2 0263	greaterequal
Xmu	110 0 0264	multiply
Xpt	143 0 0265	proportional
Xpd	99 2 0266	partialdiff
Xbu	92 0 0267	bullet
Xdi	110 0 0270	divide
X!=	110 0 0271	notequal
X==	110 0 0272	equivalence
X~=	110 0 0273	approxequal
Xcr	132 2 0277	carriagereturn
Xal	165 2 0300	aleph
Xax	154 2 0304	circlemultiply
Xa+	154 2 0305	circleplus
Xes	165 2 0306	emptyset
Xca	154 0 0307	intersection
Xcu	154 0 0310	union
Xsp	143 0 0311	propersuperset
Xip	143 1 0312	reflexsuperset
X!s	143 3 0313	notsubset
Xsb	143 0 0314	propersubset
Xib	143 1 0315	reflexsubset
Xmo	143 0 0316	element
X!m	143 3 0317	notelement
Xag	154 2 0320	angle
Xgr	143 2 0321	gradient
Xrg	158 2 0322	registerserif
Xco	158 2 0323	copyrightserif
Xtm	178 2 0324	trademarkserif
Xsr	110 2 0326	radical
Xm.	50 0 0327	dotmath
Xno	143 0 0330	logicalnot
Xan	121 0 0331	logicaland
Xla	"
Xlo	121 0 0332	logicalor
Xio	208 0 0333	arrowdblboth
X<:	197 0 0334	arrowdblleft
Xlh	"
Xu=	121 2 0335	arrowdblup
X:>	197 0 0336	arrowdblright
Xim	"
Xrh	"
Xd=	121 2 0337	arrowdbldown
Xdm	99 2 0340	lozenge
Xl<	66 3 0341	angleleft
XL<	"
XAL	158 2 0360	apple
Xr>	66 3 0361	angleright
XR>	"
Xis	55 3 0362	integral
Xbx	144 2 0205	box
Xsq	144 2 0204	square
Xci	158 2 0206	circle
Xbr	40 3 0207	boxrule
Xru	100 0 0211	rule
Xrc	77 3 0224	rightceiling
Xbv	77 3 0210	boldvertical
Xrf	77 3 0222	rightfloor
Xrt	99 3 0215	righttopcurly
Xrk	99 3 0220	rightmidcurly
Xrb	99 3 0216	rightbotcurly
Xlc	77 3 0223	leftceiling
Xlf	77 3 0221	leftfloor
Xlt	99 3 0213	lefttopcurly
Xlk	99 3 0217	leftmidcurly
Xlb	99 3 0214	leftbotcurly
END_OF_FILE
if test 5257 -ne `wc -c <'xtroff/devpsc/S'`; then
    echo shar: \"'xtroff/devpsc/S'\" unpacked with wrong size!
fi
# end of 'xtroff/devpsc/S'
fi
if test -f 'xtroff/fontstuff/ch2vft.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/fontstuff/ch2vft.c'\"
else
echo shar: Extracting \"'xtroff/fontstuff/ch2vft.c'\" \(6303 characters\)
sed "s/^X//" >'xtroff/fontstuff/ch2vft.c' <<'END_OF_FILE'
X/* ch2vft.c	1.4	84/04/07
X *
X * Font translation to vfonts (RST format) from character format.
X *
X *	Use:	ch2vft  [ -i  -s ]  charfile  > vfontfile
X *
X *		Takes input from charfile (which must be in the format written
X *	by xxx2ch), converts to rst format and writes to stdout.  If charfile
X *	is missing, stdin is read.  The -i flag tells ch2rst to ignore the
X *	character codes at the start of each glyph definition, and pack the
X *	glyphs in consecutive code positions starting with 0.  The -s flag
X *	forces ch2vft to include the whole bit-map that defines the glyph.
X *	Normally, it is trimmed of white space.  This is usefull for making
X *	stipple patterns of fixed size.
X */
X
X#include <stdio.h>
X#include <ctype.h>
X#include <vfont.h>
X
X
X#define RES		200	/* for vfont, resolution is 200 */
X#define MAXLINE		200
X#define GLYPHSPACE	(MAXLINE * MAXLINE)
X#define MAGICNO		0436
X#define DIRSIZ		256	/* vfonts MUST have 256 entries */
X#define DIMLIMIT	128
X
X
Xchar *	rdchar();
Xchar *	malloc();
X
Xstruct dispatch g[DIRSIZ];	/* directory of glyph definitions */
Xstruct header	head;		/* font file header */
X
Xint	code, codeindex;
Xint	width, length, maxv, minv, maxh, minh, refv, refh;
Xint	fileaddr;
X
Xint	ignorecode = 0;
Xint	stipple = 0;
XFILE *	filep;
Xchar	ibuff[MAXLINE];
Xchar	ebuff[MAXLINE];
Xchar *	glyphs[DIRSIZ];
Xchar	charbits[GLYPHSPACE];	/* place to store bits for a glyph */
X
X
Xmain(argc,argv)
Xint argc;
Xchar **argv;
X{
X    register int i;
X    register int j;
X    register int k;
X    register char *chp;
X    register char *bitp;
X    float par;
X
X    head.magic = MAGICNO;
X    head.maxx = head.maxy = head.xtend = 0;
X    while (argc > 1 && argv[1][0] == '-') {
X	switch(argv[1][1]) {
X	case 'i':
X		ignorecode = 1;
X		break;
X
X	case 's':
X		stipple = 1;
X		break;
X	default:
X		error("%s, unknown option flag", argv[1]);
X	}
X	argc--; argv++;
X    }
X
X    if (argc == 2) {
X	if ((filep = fopen (argv[1], "r")) == NULL)
X	    error("can't open file \"%s\"", argv[1]);
X    } else filep = stdin;
X
X    codeindex = 0;
X    for (i = 0; i < DIRSIZ; glyphs[i++] = (char *) 0);
X
X    fgets(ibuff, MAXLINE, filep);
X    if (strcmp(ibuff, "fontheader\n"))
X	error("not a character font file");
X
X    while (fgets(ibuff, MAXLINE, filep) != NULL) {
X	if (index(ibuff, '\n') == 0)
X	    error("input line too long");
X
X	if (ibuff[0] != ':') {
X	    sscanf (ibuff, "%s %f", ebuff, &par);
X	    if (strcmp(ebuff, "size") == 0);
X	    else if (strcmp(ebuff, "version") == 0) {
X		if ((int) (par + 0.5))
X		    error("wrong version (%d) for Font file.", (int)(par+0.5));
X	    } else if (strcmp(ebuff, "mag") == 0);
X	    else if (strcmp(ebuff, "desiz") == 0);  /*des_size = par/FIX + 0.5*/
X	    else if (strcmp(ebuff, "linesp") == 0);
X	    else if (strcmp(ebuff, "wordsp") == 0);
X	    else if (strcmp(ebuff, "rot") == 0);
X	    else if (strcmp(ebuff, "cadv") == 0);
X	    else if (strcmp(ebuff, "ladv") == 0);
X	    else if (strcmp(ebuff, "id") == 0);
X	    else if (strcmp(ebuff, "res") == 0) {
X		if (((int) (par + 0.5)) != RES)
X		    fprintf(stderr, "ch2vft warning: wrong resolution (%d).\n",
X			(int) (par + 0.5) );
X	    } else
X		error("unknown input descriptor, \"%s\"", ebuff);
X	} else {
X	    if (sscanf (ibuff, ":%d, width = %f", &code, &par) != 2)
X		error("bad glyph header, %s", ibuff);
X	    if (ignorecode) i = codeindex++; else i = code;
X	    if (i < 0 || i >= DIRSIZ) error("code (%d) out of range", i);
X	    g[i].width = par + 0.5;
X
X	    chp = &charbits[0];
X	    if (fgets(chp, MAXLINE, filep) == NULL)
X		error("unexpected end of input");
X	    width = strlen(chp) - 1;
X	    minh = width;
X	    maxh = 0;
X	    refv = minv = -1;
X
X	    for (length = 0; *chp != '\n'; length++) {
X		if ((length + 1) * width > GLYPHSPACE)
X		    error ("out of glyph space");
X		for (j = 0; j < width; j++, chp++) {
X		    switch (*chp) {
X			case '.':
X				break;
X			case 'x':
X				refh = j;
X				refv = length;
X				*chp = '.';
X				break;
X			case 'X':
X				refh = j;
X				refv = length;
X			case '@':
X			case '*':
X				maxv = length;
X				if (minv < 0) minv = length;
X				if (j < minh) minh = j;
X				if (j > maxh) maxh = j;
X				break;
X			default:
X				error("illegal character '%c' in map.", *chp);
X		    } /* switch */
X		} /* for j */
X		if (fgets(chp, MAXLINE, filep) == NULL)
X			error("unexpected end of input");
X	    } /* for length */
X
X	    if (stipple) {		/* force whole box if making stipples */
X		minv = 0;
X		minh = 0;
X		maxv = length - 1;
X		maxh = width - 1;
X	    }
X
X	    if (refv < 0) error("no reference point in glyph %d.", code);
X	    if (minv < 0) {
X		minv = maxv = refv;
X		minh = maxh = refh;
X	    }
X	    g[i].up = bound(refv - minv);
X	    g[i].down = bound(maxv + 1 - refv);
X	    g[i].right = bound(maxh + 1 - refh);
X	    g[i].left = bound(refh - minh);
X	    g[i].nbytes = (maxv + 1 - minv) * ((maxh + 8 - minh) >> 3);
X
X				/* convert from characters to bits */
X	    bitp = (glyphs[i] = malloc(g[i].nbytes)) - 1;
X	    for (k = minv; k <= maxv; k++) {
X		register int bitwidth;
X
X		chp = &charbits[0] + width * k + minh;
X		bitwidth = 0;
X		for (j = minh; j <= maxh; j++, chp++) {
X		    if (--bitwidth < 0) {
X			*++bitp = '\0';
X			bitwidth = 7;
X		    }
X		    if (*chp != '.') *bitp |= 1 << bitwidth;
X		}
X	    } /* for */
X	} /* else */
X    } /* while */
X
X    fileaddr = 0;
X    for (i = 0; i < DIRSIZ; i++) {
X	if (glyphs[i] == (char *) 0) {
X	    g[i].nbytes = 0;
X	} else {
X	    g[i].addr = fileaddr;
X	    fileaddr += g[i].nbytes;
X	    if (g[i].up > head.maxy) head.maxy = g[i].up;
X	    if (g[i].down > head.xtend) head.xtend = g[i].down;
X	    if (((int) g[i].left + g[i].right) > head.maxx)
X		head.maxx = g[i].left + (int) g[i].right;
X	}
X    }
X    head.size = fileaddr;
X
X    vwrite((char *) &head, sizeof(head));
X    vwrite((char *) &(g[0]), sizeof(g));
X    for (i = 0; i < DIRSIZ; i++)
X	if (glyphs[i] != (char *) 0)
X	    vwrite(glyphs[i], g[i].nbytes);
X}
X
X
Xvwrite(buf,usize)
Xchar *buf;
Xint usize;
X{
X	int tsize = 0;
X
X	while (usize) {
X		buf += tsize;
X		tsize = usize > BUFSIZ ? BUFSIZ : usize;
X		if ((tsize = write(1, buf, tsize)) < 0) {
X			perror("ch2vft: write failed");
X			exit(-1);
X		}
X		usize -= tsize;
X	}
X}
X
X
X/*VARARGS1*/
Xerror(string, a1, a2, a3, a4)
Xchar *string;
X{ 
X	fprintf(stderr, "ch2vft: ");
X	fprintf(stderr, string, a1, a2, a3, a4);
X	fprintf(stderr, "\n");
X	exit(8);
X};
X
Xbound(i)
X{
X	if(i < DIMLIMIT && i >= -DIMLIMIT) return i;
X	error ("dimension out of range");
X}
END_OF_FILE
if test 6303 -ne `wc -c <'xtroff/fontstuff/ch2vft.c'`; then
    echo shar: \"'xtroff/fontstuff/ch2vft.c'\" unpacked with wrong size!
fi
# end of 'xtroff/fontstuff/ch2vft.c'
fi
if test -f 'xtroff/fontstuff/rst2ch.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/fontstuff/rst2ch.c'\"
else
echo shar: Extracting \"'xtroff/fontstuff/rst2ch.c'\" \(4968 characters\)
sed "s/^X//" >'xtroff/fontstuff/rst2ch.c' <<'END_OF_FILE'
X/* Font translation for Imagen-style fonts (RST format) to character format.
X *
X *	Use:  rst2ch fontfile  [ character_list ]
X *
X *		Reads "fontfile" from current directory (or if not found,
X *	from RSTFONTDIR defined below) and converts it to a character font format
X *	editable by real people, and convertable BACK to rst format by the
X *	ch2rst program.  Output goes to stdout.
X */
X
X#include <stdio.h>
X#include <ctype.h>
X#include "rst.h"
X
X#ifndef	RSTFONTDIR
X#define  RSTFONTDIR		"/usr/src/local/imagen/fonts/raster"
X#endif
X
Xchar *	rdchar();
Xchar *	malloc();
X
Xchar	defascii[DIRSIZ];	/* list of ascii characters - in order */
Xchar	*charswanted = defascii;/* list of characters to print info for */
Xglyph_dir g[DIRSIZ];		/* directory of glyph definitions */
Xpreamble p;			/* set of variables for preamble */
Xdouble	fixtowdth;		/* "fix" and magnification conversion factor */
X
Xchar	*fontdir = RSTFONTDIR;	/* place to look for fonts */
Xchar	IName[100];		/* input file name put here */
XFILE *	FID;			/* input file number */
X
Xchar	charbits[10000];	/* place to store bits for a glyph */
Xint	gbase;			/* base address of glyphs in RST file */
X			/* variables used to print character */
Xint	H, W, WB, base, lbound, rbound;
X
X
Xmain(argc,argv)
Xint argc;
Xchar **argv;
X{
X	register int i;
X	register int j;
X	register int k;
X	register int l;
X
X
X	if (argc < 2)
X		error("usage: %s filename <charlist>", argv[0]);
X
X	for (i=0; i<DIRSIZ; i++)
X		defascii[i] = i;
X	if (argc >= 3)
X		charswanted = argv[2];
X
X	sprintf(IName, "%s/%s", fontdir, argv[1]);
X	if ((FID = fopen(argv[1], "r")) == NULL)
X		if ((FID = fopen(IName, "r")) == NULL)
X			error("can't find %s", argv[1]);
X
X	for (i = 0; i < FMARK; i++) filemark[i] = getc(FID);
X	if (strncmp(filemark, "Rast", 4))
X	    error("bad File Mark in Font file.");
X
X	p.p_size = rd2();
X	p.p_version = rd1();
X	if (p.p_version)
X	    error("wrong version (%d) of Font file.", p.p_version);
X	p.p_glyph = rd3();
X	p.p_first = rd2();
X	if ((p.p_last = rd2()) >= DIRSIZ)
X	    error("too many glyphs (%d) in font.", p.p_last);
X	p.p_mag = rd4();
X
X	if ((fixtowdth = FIXPIX * p.p_mag / 1000.0) == 0.0)
X	    fixtowdth = FIXPIX;
X
X	p.p_desiz = rd4();
X	p.p_linesp = rd4();
X	p.p_wordsp = rd4();
X	p.p_rot = rd2();
X	p.p_cadv = rd1();
X	p.p_ladv = rd1();
X	p.p_id = rd4();
X	p.p_res = rd2();
X/*	if (p.p_res != RES)
X	    error("wrong resolution (%d) in Font file.", p.p_res);
X */
X	i = p.p_glyph - 44;
X	while (i--) if (getc(FID) == EOF)
X	    error("bad preamble in Font file.");
X
X	for (i = p.p_first; i <= p.p_last; i++) {
X	    g[i].g_height = rd2();
X	    g[i].g_width = rd2();
X	    g[i].g_up = rd2();
X	    g[i].g_left = rd2();
X	    g[i].g_pwidth = rd4();
X	    g[i].g_bitp = rd3();
X	}
X
X	printf("fontheader\nsize %d\nversion %d\n", p.p_size, p.p_version);
X	printf("mag %d\ndesiz %.2f\n", p.p_mag, p.p_desiz * FIX);
X	printf("linesp %.2f\n", p.p_linesp * fixtowdth);
X	printf("wordsp %.2f\n", p.p_wordsp * fixtowdth);
X	printf("rot %d\ncadv %d\nladv %d\n", p.p_rot, p.p_cadv, p.p_ladv);
X	printf("id %d\nres %d\n", p.p_id, p.p_res);
X
X
X	for (l = p.p_first; l<= p.p_last; l++) {
X	    j = charswanted[l];
X	    if (l>0 && j==0) break;
X	    if ((gbase = g[j].g_bitp) != 0) {
X		printf(":%d, width = %.2f\n", j, g[j].g_pwidth * fixtowdth);
X		H = g[j].g_height;
X		W = g[j].g_width;
X		if (H <= 0 || W <= 0) {
X		    g[j].g_up = 0;
X		    g[j].g_left = 0;
X		}
X		lseek(fileno(FID), (long) gbase, 0);
X		read(fileno(FID), charbits, (WB = (W+7)/8) * H);
X		base = g[j].g_up;
X		if ((lbound = g[j].g_left) > 0) lbound = 0;
X		if ((rbound = g[j].g_left + 1) < W) rbound = W;
X		for (k = g[j].g_up; k < 0; k++) {
X		    for (i = lbound; i < rbound; i++)
X			printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
X		    putchar ('\n');
X		}
X		for (k = 0; k < H; k++) {
X		    for (i = g[j].g_left; i < 0; i++)
X			printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
X		    for (i = 0; i < W; i++)
X			printf("%c", k==g[j].g_up && i==g[j].g_left ?
X				(fbit(k,i) ? 'X':'x') : fbit(k,i) ? '@':'.');
X		    while (i < rbound) {
X			printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
X			i++;
X		    }
X		    putchar ('\n');
X		}
X		while (k <= g[j].g_up) {
X		    for (i = lbound; i < rbound; i++)
X			printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
X		    putchar ('\n');
X		    k++;
X		}
X		putchar ('\n');
X	    }
X	}
X}
X
X/*VARARGS1*/
Xerror(string, a1, a2, a3, a4)
Xchar *string;
X{ 
X	fprintf(stderr, "rst2ch: ");
X	fprintf(stderr, string, a1, a2, a3, a4);
X	fprintf(stderr, "\n");
X	exit(8);
X};
X
X
Xfbit(row, col)
Xint row, col;
X{
X	int thisbyte, thisbit, ret;
X
X	if (row<0 || row>=H || col>=W) return(0);
X	thisbyte = charbits[row*WB + (col>>3)] & 0xff;
X	thisbit = 0x80 >> (col&7);
X	ret = thisbyte & thisbit;
X	return (ret != 0);
X}
X
Xrd1()
X{
X    int i;
X
X    if((i = getc(FID)) == EOF) error("file read error");
X    return i;
X}
X
Xrd2()
X{
X    register int i = rd1() << 8;
X
X    return i + rd1();
X}
X
Xrd3()
X{
X    register int i = rd2() << 8;
X
X    return i + rd1();
X}
X
Xrd4()
X{
X    register int i = rd2() << 16;
X
X    return i + rd2();
X}
END_OF_FILE
if test 4968 -ne `wc -c <'xtroff/fontstuff/rst2ch.c'`; then
    echo shar: \"'xtroff/fontstuff/rst2ch.c'\" unpacked with wrong size!
fi
# end of 'xtroff/fontstuff/rst2ch.c'
fi
if test -f 'xtroff/suntroff.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xtroff/suntroff.h'\"
else
echo shar: Extracting \"'xtroff/suntroff.h'\" \(4834 characters\)
sed "s/^X//" >'xtroff/suntroff.h' <<'END_OF_FILE'
X/*
X *	SunTroff -  A program to display the output of Device Independent
X *		Troff as a window on a Sun Workstation.
X *
X *	Suntroff.h - A number of defines and structures that are needed
X *		by the rest of the code.
X *
X *	Authors - The original version of this program was written by
X *			Richard L. Hyde (Purdue)
X *			David Slattengren (Berkeley)
X *		It was nearly all rewritten, cleaned up and a more elegant
X *		user interface installed by
X *			Malcolm Slaney (Schlumberger Palo Alto Research)
X *
X *	Legalese -  This command was developed as an independent project
X *		to satisfy a need of the author.  This program may contain
X *		bugs and the user is cautioned to independently verify that
X *		the program is suitable for the user's intended purpose.
X *		The program is made available on an ``as is'' basis with
X *		all faults and without any implied or expressed warranties
X *		or support from either the author, Malcolm Slaney, or
X *		Schlumberger Palo Alto Research Laboratory.
X *
X *		I am putting this program in the Unix domain.  You are
X *		free to use it as you wish.  In return I ask two things.
X *		First, that you do not remove the names of the authors
X *		from this work.  Secondly, if you make changes or
X *		improvements to this program that you pass these back to
X *		the author so that everybody can benefit from the
X *		improvements.
X */
X
X#include	<ctype.h>
X#include	<stdio.h>
X#ifndef SUNTOOLS
X#include	<X11/Xlib.h>	/* Needed for definition of Font */
X#include	<X11/Xos.h>	/* To try and make things more portable */
X#else	/* SUNTOOLS */
X#include	<sys/types.h>	/* Xos.h includes it for X */
X#endif /* SUNTOOLS */
X
X#include	"dev.h"
X
X					/* TYPESETTER DEFINES */
X					/* The first four defines are probably
X					 * the only ones that need to be 
X					 * customized for a site.
X					 */
X
X					/* Home of all the troff information */
X					/* Hint: the standard AT&T location is
X					 * /usr/dwb/lib/font
X					 */
X#ifndef FONTDIR
X#define	FONTDIR		"/usr/lib/font"
X#endif
X					/* Home of all the font bits */
X#ifndef BITDIR
X#define	BITDIR		"/usr/local/lib/suntroff"
X#endif
X
X					/* Note the SunTroff program will
X					 * append to the end of this string
X					 * the printer name.
X					 */
X#define	LPRCOMMAND	"/usr/ucb/lpr -n -P"
X
X#define	FULLPAGE	0		/* Start up the tool with a width 
X					 * that is as large as a page. */
X
X#define	NFONTS		60		/* Number of Allowed Fonts */
X
X#define	MAXNAME		20		/* Length of maximum typesetter name */
X
X#define	MAXSTATE	10		/* Number of states to remember */
X
X					/* Needs to be no larger than
X					 * than the size of the
X					 * intname character string
X					 * in the dev.h/struct font
X					 * structure.
X					 */
X#define	MaxFontName 10
X
X#ifndef	DEFAULT_TYPESETTER
X#ifdef SUNTOOLS
X#define DEFAULT_TYPESETTER "sun"
X#else /* ! SUNTOOLS */
X#define	DEFAULT_TYPESETTER "psc"
X#endif /* SUNTOOLS */
X#endif	DEFAULT_TYPESETTER
X
X#define	WARNING		0		/* Print Message and Return */
X#define	FATAL		1		/* Print Message and Leave */
X
X#define		PAGE_WIDTH		8.5
X#define		PAGE_HEIGHT		11
X#define		PAGE_PIXEL_WIDTH	(int)(SUNRES*PAGE_WIDTH)
X#define		PAGE_PIXEL_HEIGHT	(int)(SUNRES*PAGE_HEIGHT)
X
X/*
X * Fast comparison of strings - will often save us a procedure call at the
X * cost of a few extra instructions. Macro has SIDE-EFFECTS
X */
X#define STREQ(a, b)	((*(a) == *(b)) && (strcmp(a, b) == 0))
X
Xstruct FontBitStruct {
X	char		Name[MaxFontName];
X	int		Size;
X#ifdef SUNTOOLS
X	struct pixfont	*Bits;
X#else SUNTOOLS
X	XFontStruct	*Bits;
X#endif
X	char		*FileName;
X	struct FontBitStruct *NextFont;
X	struct FontBitStruct *NextSize;
X};
X
Xstruct Typesetter {
X	char	Name[MAXNAME];		/* Name of this typesetter */
X
X	struct dev Device;		/* Ditroff Typesetter description */
X
X	short	*PointSizeTable;	/* Map Pointsize number to real # */
X
X	short	*SpecialCharacterNumber;/* Map special character number into
X					   an index for Name Array */
X	char	*SpecialCharacterName;	/* Names of each special character
X					   */
X	char	**WidthTable;		/* Width of each character
X					   (indexed by font and character) */
X	char	**CodeTable;		/* Typesetter code for each char
X					   (indexed by font and character) */
X	char	**AsciiTable;		/* Mapping between ascii (or special
X					   character number) and index into
X					   width and code tables above. */
X	struct Font *FontInformation[NFONTS];
X
X	struct FontBitStruct FontBitHead; /* All the bits for all the fonts
X					     that are known for this
X					     typesetter. */
X	struct Typesetter *NextTypesetter;
X};
X
Xextern int	size, font, linmod, linethickness, HorizontalPosition;
Xextern int	VerticalPosition, DeviceResolution, LineNumber;
Xextern float	ditsiz;
X/*extern int	SUNRES			/* Dots per inch on Sun Screen */
X
Xextern char	DeviceName[];
X
Xextern struct FontBitStruct *CurrentFont, *VirtualLoadFont();
X
Xextern struct Typesetter *UserTypesetter, *OutputTypesetter, *LoadDevice();
END_OF_FILE
if test 4834 -ne `wc -c <'xtroff/suntroff.h'`; then
    echo shar: \"'xtroff/suntroff.h'\" unpacked with wrong size!
fi
# end of 'xtroff/suntroff.h'
fi
echo shar: End of archive 7 \(of 18\).
cp /dev/null ark7isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 18 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0



More information about the Comp.sources.x mailing list