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