home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume4 / xtroff / part07 < prev    next >
Encoding:
Internet Message Format  |  1989-07-17  |  56.8 KB

  1. Path: uunet!island!argv
  2. From: argv@island.uu.net (Dan Heller)
  3. Newsgroups: comp.sources.x
  4. Subject: v04i052: xtroff -- troff previewer for X11, Part07/18
  5. Message-ID: <886@island.uu.net>
  6. Date: 18 Jul 89 07:25:03 GMT
  7. Organization: Island Graphics, Marin County, California
  8. Lines: 2089
  9. Approved: island!argv@sun.com
  10.  
  11. Submitted-by: Mark Moraes <moraes@ai.toronto.edu>
  12. Posting-number: Volume 4, Issue 52
  13. Archive-name: xtroff/part07
  14.  
  15.  
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then unpack
  19. # it by saving it into a file and typing "sh file".  To overwrite existing
  20. # files, type "sh file -c".  You can also feed this as standard input via
  21. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  22. # will see the following message at the end:
  23. #        "End of archive 7 (of 18)."
  24. # Contents:  xtroff/NeWS/Makefile xtroff/README.X11 xtroff/arc.c
  25. #   xtroff/devpsc/NB xtroff/devpsc/ND xtroff/devpsc/NI xtroff/devpsc/S
  26. #   xtroff/fontstuff/ch2vft.c xtroff/fontstuff/rst2ch.c
  27. #   xtroff/suntroff.h
  28. # Wrapped by moraes@neat.ai on Thu Jul 13 20:55:04 1989
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'xtroff/NeWS/Makefile' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'xtroff/NeWS/Makefile'\"
  32. else
  33. echo shar: Extracting \"'xtroff/NeWS/Makefile'\" \(5051 characters\)
  34. sed "s/^X//" >'xtroff/NeWS/Makefile' <<'END_OF_FILE'
  35. X# fonts/news/Makefile
  36. X#
  37. X# Makefile for NeWS fonts.
  38. X# D. A. Cahlander 88/12/31.
  39. X# Copyright (c) 1988 Cray Research, Inc.  All Rights Reserved.
  40. X# PostScript is a trademark of Adobe Systems, Inc.
  41. X
  42. X# see README for more information
  43. X# makedev is the program that builds device descriptions
  44. X
  45. XNEWSDIR = /usr/NeWS/fonts
  46. XFONTDIR = /usr/lib/X11/fonts/misc
  47. XFONTS =    ${TIMES} ${COURIER} ${HELVETICA} ${SYMBOL}
  48. XOTHERFONTS = ${BOSTON} ${CYRILLIC} ${CURSOR} ${GFONT} \
  49. X    ${HEVETICA_MEDIUM} ${ICON} ${KANJI} ${SCREEN}
  50. XSHELL = /bin/sh
  51. X
  52. XFBFILES = \
  53. X     Btn10.fb Btn12.fb Btn18.fb Btn30.fb Btn35.fb Btn9.fb \
  54. X    Crl11.fb \
  55. X    Crr1.fb Crr10.fb Crr12.fb Crr14.fb Crr16.fb \
  56. X    Crr18.fb Crr24.fb Crr32.fb Crr6.fb Crr7.fb Crr8.fb Crr9.fb \
  57. X    CrrB10.fb CrrB12.fb CrrB14.fb CrrB16.fb CrrB18.fb CrrB24.fb \
  58. X    CrrB32.fb \
  59. X    CrrBO10.fb CrrBO12.fb CrrBO14.fb CrrBO16.fb CrrBO18.fb CrrBO24.fb \
  60. X    CrrBO32.fb \
  61. X    CrrO10.fb CrrO12.fb CrrO14.fb CrrO16.fb CrrO18.fb CrrO24.fb \
  62. X    CrrO32.fb \
  63. X    Cursor12.fb \
  64. X    GFont12.fb \
  65. X    Hlv10.fb Hlv12.fb Hlv14.fb Hlv18.fb Hlv24.fb Hlv32.fb \
  66. X    Hlv7.fb Hlv9.fb \
  67. X    HlvB10.fb HlvB12.fb HlvB14.fb HlvB18.fb HlvB24.fb HlvB32.fb \
  68. X    HlvBO10.fb HlvBO12.fb HlvBO14.fb HlvBO18.fb HlvBO24.fb HlvBO32.fb \
  69. X    HlvO10.fb HlvO12.fb HlvO14.fb HlvO18.fb HlvO24.fb HlvO32.fb \
  70. X    HlvM32.fb \
  71. X    Icon12.fb \
  72. X    Kanji16.fb Kanji24.fb \
  73. X    Scn11.fb Scn13.fb Scn15.fb Scn7.fb \
  74. X    ScnB13.fb ScnB15.fb \
  75. X    Smb10.fb Smb12.fb Smb14.fb Smb18.fb Smb24.fb Smb32.fb \
  76. X    SmbM32.fb \
  77. X    TmsB10.fb TmsB12.fb TmsB14.fb TmsB18.fb TmsB24.fb TmsB25.fb \
  78. X    TmsB27.fb TmsB30.fb TmsB32.fb TmsB34.fb TmsB39.fb TmsB44.fb \
  79. X    TmsB49.fb TmsB54.fb TmsB59.fb TmsB69.fb TmsB89.fb \
  80. X    TmsBI10.fb TmsBI12.fb TmsBI14.fb TmsBI18.fb TmsBI24.fb TmsBI32.fb \
  81. X    TmsI10.fb TmsI12.fb TmsI14.fb TmsI18.fb TmsI24.fb TmsI26.fb \
  82. X    TmsI29.fb TmsI32.fb TmsI33.fb TmsI38.fb TmsI43.fb TmsI47.fb \
  83. X    TmsI53.fb TmsI57.fb TmsI67.fb TmsI86.fb \
  84. X    TmsR10.fb TmsR12.fb TmsR14.fb TmsR16.fb TmsR18.fb TmsR19.fb \
  85. X    TmsR20.fb TmsR23.fb TmsR24.fb TmsR26.fb TmsR28.fb TmsR31.fb \
  86. X    TmsR32.fb TmsR36.fb TmsR41.fb TmsR46.fb TmsR51.fb TmsR56.fb \
  87. X    TmsR62.fb TmsR72.fb TmsR9.fb TmsR92.fb
  88. X
  89. XBOSTON = \
  90. X     Btn10.snf Btn12.snf Btn18.snf Btn30.snf Btn35.snf Btn9.snf
  91. X
  92. XCYRILLIC = Crl11.snf
  93. X
  94. XCOURIER = \
  95. X    Crr1.snf Crr10.snf Crr12.snf Crr14.snf Crr16.snf \
  96. X    Crr18.snf Crr24.snf Crr32.snf Crr6.snf Crr7.snf Crr8.snf Crr9.snf \
  97. X    CrrB10.snf CrrB12.snf CrrB14.snf CrrB16.snf CrrB18.snf CrrB24.snf \
  98. X    CrrB32.snf \
  99. X    CrrBO10.snf CrrBO12.snf CrrBO14.snf CrrBO16.snf CrrBO18.snf CrrBO24.snf \
  100. X    CrrBO32.snf \
  101. X    CrrO10.snf CrrO12.snf CrrO14.snf CrrO16.snf CrrO18.snf CrrO24.snf \
  102. X    CrrO32.snf
  103. X
  104. XCURSOR = Cursor12.snf
  105. X
  106. XGFONT =    GFont12.snf
  107. X
  108. XHELVETICAL = \
  109. X    Hlv10.snf Hlv12.snf Hlv14.snf Hlv18.snf Hlv24.snf Hlv32.snf \
  110. X    Hlv7.snf Hlv9.snf \
  111. X    HlvB10.snf HlvB12.snf HlvB14.snf HlvB18.snf HlvB24.snf HlvB32.snf \
  112. X    HlvBO10.snf HlvBO12.snf HlvBO14.snf HlvBO18.snf HlvBO24.snf HlvBO32.snf \
  113. X    HlvO10.snf HlvO12.snf HlvO14.snf HlvO18.snf HlvO24.snf HlvO32.snf
  114. X
  115. XHEVETICA_MEDIUM = HlvM32.snf
  116. X
  117. XICON =    Icon12.snf
  118. X
  119. XKANJI = \
  120. X    Kanji16.snf Kanji24.snf
  121. X
  122. XSCREEN = \
  123. X    Scn11.snf Scn13.snf Scn15.snf Scn7.snf \
  124. X    ScnB13.snf ScnB15.snf
  125. X
  126. XSYMBOL = \
  127. X    Smb10.snf Smb12.snf Smb14.snf Smb18.snf Smb24.snf Smb32.snf \
  128. X    SmbM32.snf
  129. X
  130. XTIMES =     \
  131. X    TmsB10.snf TmsB12.snf TmsB14.snf TmsB18.snf TmsB24.snf TmsB25.snf \
  132. X    TmsB27.snf TmsB30.snf TmsB32.snf TmsB34.snf TmsB39.snf TmsB44.snf \
  133. X    TmsB49.snf TmsB54.snf TmsB59.snf TmsB69.snf TmsB89.snf \
  134. X    TmsBI10.snf TmsBI12.snf TmsBI14.snf TmsBI18.snf TmsBI24.snf TmsBI32.snf \
  135. X    TmsI10.snf TmsI12.snf TmsI14.snf TmsI18.snf TmsI24.snf TmsI26.snf \
  136. X    TmsI29.snf TmsI32.snf TmsI33.snf TmsI38.snf TmsI43.snf TmsI47.snf \
  137. X    TmsI53.snf TmsI57.snf TmsI67.snf TmsI86.snf \
  138. X    TmsR10.snf TmsR12.snf TmsR14.snf TmsR16.snf TmsR18.snf TmsR19.snf \
  139. X    TmsR20.snf TmsR23.snf TmsR24.snf TmsR26.snf TmsR28.snf TmsR31.snf \
  140. X    TmsR32.snf TmsR36.snf TmsR41.snf TmsR46.snf TmsR51.snf TmsR56.snf \
  141. X    TmsR62.snf TmsR72.snf TmsR9.snf TmsR92.snf
  142. X
  143. Xall:    ${FONTS}
  144. X
  145. Xmore:    ${OTHERFONTS}
  146. X
  147. Xkanji:    ${KANJI}
  148. X
  149. Xsymbol:    ${SYMBOL}
  150. X
  151. Xtimes:    ${TIMES}
  152. X
  153. Xsample:    \
  154. X    Btn10.snf  \
  155. X    Crl11.snf \
  156. X    Crr10.snf  \
  157. X    CrrB10.snf  \
  158. X    CrrBO10.snf  \
  159. X    CrrO10.snf  \
  160. X    Hlv10.snf  \
  161. X    HlvB10.snf  \
  162. X    HlvBO10.snf  \
  163. X    HlvO10.snf  \
  164. X    Smb10.snf  \
  165. X    TmsB10.snf  \
  166. X    TmsBI10.snf  \
  167. X    TmsI10.snf  \
  168. X    TmsR10.snf  \
  169. X    Cursor12.snf \
  170. X    GFont12.snf \
  171. X    HlvM32.snf  \
  172. X    Icon12.snf \
  173. X    Kanji16.snf \
  174. X    Scn11.snf 
  175. X
  176. Xshar:    Makefile README news.awk
  177. X    echo "This is a shar archive.  Cut off the header and" > shar.ar
  178. X    echo "execute:" >> shar.ar
  179. X    echo "    sh < file" >> shar.ar
  180. X    echo Files: $? >> shar.ar
  181. X    echo "=================== cut here ===================" >> shar.ar
  182. X    shar $? >> shar.ar
  183. X
  184. X${FBFILES}:
  185. X    ln -s ${NEWSDIR}/$@ .
  186. X
  187. Xinstall:: all
  188. X    cp ${FONTS} ${FONTDIR}
  189. X    cd ${FONTDIR}; mkfontdir
  190. X
  191. Xinstallmore: more
  192. X    cp ${OTHERFONTS} ${FONTDIR}
  193. X    cd ${FONTDIR}; mkfontdir
  194. X
  195. Xclean::
  196. X    rm -f ${SNFFILES} ${FBFILES} core *.out
  197. X
  198. Xclobber: clean
  199. X
  200. X.SUFFIXES: .fb .afb .bdf .snf
  201. X
  202. X.fb.afb:
  203. X    dumpfont -a -d . ${NEWSDIR}/$<
  204. X
  205. X.afb.snf:
  206. X    awk -f news.awk $< | tee $*.bdf | bdftosnf > $*.snf
  207. X    rm $<
  208. X
  209. X.fb.snf:
  210. X    dumpfont -a -d . ${NEWSDIR}/$<
  211. X    awk -f news.awk $*.afb | tee $*.bdf | bdftosnf > $*.snf
  212. X    rm $*.afb
  213. END_OF_FILE
  214. if test 5051 -ne `wc -c <'xtroff/NeWS/Makefile'`; then
  215.     echo shar: \"'xtroff/NeWS/Makefile'\" unpacked with wrong size!
  216. fi
  217. # end of 'xtroff/NeWS/Makefile'
  218. fi
  219. if test -f 'xtroff/README.X11' -a "${1}" != "-c" ; then 
  220.   echo shar: Will not clobber existing file \"'xtroff/README.X11'\"
  221. else
  222. echo shar: Extracting \"'xtroff/README.X11'\" \(5375 characters\)
  223. sed "s/^X//" >'xtroff/README.X11' <<'END_OF_FILE'
  224. X X11 Notes:  
  225. X ---------- 
  226. X    Most of the install details are the same as for Suntroff. The
  227. Xmajor difference is fonts. The Makefile is hopefully intelligent enough
  228. Xthat you can just change the few constants at the top and make install.
  229. XWherever the other README refers to suntools, read 'the X Windows
  230. XSystem Version 11' and wherever it refers to suntroff, read xtroff.
  231. X
  232. X    If you are running on a system with dirent.h instead of sys/dir.h,
  233. Xyou should uncomment the -DDIRENT from the XtStuff Makefile.
  234. X
  235. X    With X11R3 are included a nice set of Adobe, Bitstream and DEC
  236. Xfonts at 75dpi and 100dpi resolutions. These are in ISO collating
  237. Xformat - we use these fonts to create a new set in PostScript collating
  238. Xsequence. The code and scripts to do this were provided by Dave
  239. XCahlander <dac@earth.cray.com>. Thanks Dave.
  240. X
  241. X    For X Windows releases before X11R3, the only fonts I know of that
  242. Xare widely available and come in a range of sizes useful for documents are
  243. Xvfonts, they're what this previewer uses. If you haven't got at least the
  244. Xoriginal R.*, I.*, B.*, and S.* fonts generated from the Hershey fonts for
  245. Xthe original vcat here at the University of Toronto eons ago, get 'em.
  246. XThey're not included here to conserve space.
  247. X
  248. X    Since the X11 server does not load vfonts, the scaled vfonts
  249. Xgenerated by MakeSunFonts need to be converted to X11 bdf format, and
  250. Xthence to snf. The Makefile in the fontstuff directory does just that,
  251. Xusing the program vf2bdf. It can be invoked using the makefile in this
  252. Xdirectory by 'make fonts'. You then need to put these fonts someplace
  253. Xuseful, and put that location in the master Makefile. The fonts
  254. X[RIBS].* are converted to [ribs].*.snf to conform to the sample server
  255. Xdemands for lower case fontnames only. If you have any other fonts,
  256. Xyou might want to see font.c!
  257. X
  258. X    The Makefile is set to generate the xfonts on install if it is not
  259. Xmaking suntroff. (WARNING: Since Sun has broken 'make' in SunOS4.0 so it
  260. Xcannot process rules with more than one period in the suffix, you'll have to
  261. Xget GNU make or some other public domain make, or make from BSD4.[23] if you
  262. Xhave source, or something to make xfonts under SunOS4.0. Complain to Sun)
  263. X
  264. X    Most of the X11 code is in the file xwindows.c - chalk up a
  265. Xpoint for the X Toolkit. There are a few lines added to draw.c for
  266. Xdrawing functions, and to font.c to load fonts. 
  267. X
  268. X    The directory XtStuff contains the fixed menu widget, based on
  269. Xfixes made by Dana Chee to a piece of code that was in the R2
  270. Xcontrib/menus directory. It's the only working popup menu package I
  271. Xknow of outside the HP widgets. There's a window widget that used to be
  272. Xwith Chris Peterson's xman.
  273. X
  274. X    For the record, this is a straight port of the SunTools
  275. Xpreviewer suntroff which can still be made by simply defining the
  276. Xpreviewer in the Makefile to be suntroff. Credit goes to the authors
  277. Xof suntroff for an excellent troff previewer - I only did an X
  278. Xinterface.
  279. X
  280. X    xtroff has been tested on Sun3-{50,60,110}s and Sun4-110s with bw2
  281. Xand cg4 displays, running SunOS3.5 and 4.0. It works reasonably well on
  282. Xthese. It has also been tested briefly on a monochrome Vaxstation 3200
  283. Xrunning Ultrix 2.2 and works, but runs *SLOWLY* presumably because of slow
  284. X'mi' code in the uVax server for dealing with large pixmaps. One day,
  285. Xsomeone will hopefully fix the server. It has allegedly been seen to compile
  286. Xand run on Silicon Graphics Iris4d machines and on a Cray running Unicos.
  287. X
  288. XNOTE: xwindows.c uses vfprintf() and vsprintf() for the error routines. If
  289. Xyour machine does not have them, either scream at your manufacturer, or get
  290. Xa copy from bsd-sources/src/lib/libc/stdio/v*printf.c. They're freely
  291. Xredistributable.
  292. X
  293. XThe following are X Windows specific files:
  294. X
  295. X    xwindows.c        This file contains all the X11 interface.
  296. X                This includes the page movement, 
  297. X                and the menu.  It provides a large
  298. X                bit map for the troff drawing functions
  299. X                to scribble on then displays the desired
  300. X                part of the page for the user.
  301. X
  302. X    xtroff.manX        The manual page
  303. X    xtroff.tr        The ditroff output of the manual page
  304. X                (so you can test the program without
  305. X                ditroff first)
  306. X    arc.c            Substitute XDrawArc(s)/XFillArc(s) routines
  307. X                which use XDrawLines to draw fast
  308. X                approximate arcs instead of the much slower
  309. X                server arcs.
  310. X                
  311. X
  312. XIn the XtStuff directory:
  313. X    CheckItem.c
  314. X    CheckItem.h
  315. X    CheckItemI.h
  316. X    CheckItemP.h
  317. X    Menu.c
  318. X    Menu.h
  319. X    MenuItem.c
  320. X    MenuItem.h
  321. X    MenuItemI.h
  322. X    MenuItemP.h
  323. X    MenuP.h
  324. X    README.Menu        The fixed menu widget
  325. X
  326. X    README.Window
  327. X    Window.c
  328. X    Window.h
  329. X    WindowP.h        The Window widget - untouched.
  330. X
  331. X    Minibuf.c
  332. X    Minibuf.h
  333. X    MinibufP.h
  334. X    usleep.c        A widget that emulates an Emacs-style
  335. X    util.c            minibuffer for text interaction and message
  336. X    ask.c            display.
  337. X    
  338. X
  339. X                                        Mark Moraes
  340. X                                        Computer Systems Research Institute,
  341. X                                        University of Toronto,
  342. X                                        Toronto, Canada M5S 1A4
  343. X                                        
  344. X                                        {your favourite backbone}!utcsri!moraes
  345. X                                        moraes@utcsri.UUCP (new style)
  346. X                                        moraes@csri.toronto.edu
  347. X                                        moraes@csri.utoronto.ca
  348. X                                        moraes@csri.utoronto (bitnet)
  349. X                                        
  350. END_OF_FILE
  351. if test 5375 -ne `wc -c <'xtroff/README.X11'`; then
  352.     echo shar: \"'xtroff/README.X11'\" unpacked with wrong size!
  353. fi
  354. # end of 'xtroff/README.X11'
  355. fi
  356. if test -f 'xtroff/arc.c' -a "${1}" != "-c" ; then 
  357.   echo shar: Will not clobber existing file \"'xtroff/arc.c'\"
  358. else
  359. echo shar: Extracting \"'xtroff/arc.c'\" \(4811 characters\)
  360. sed "s/^X//" >'xtroff/arc.c' <<'END_OF_FILE'
  361. X#ifndef FASTARCS
  362. X
  363. X#include <X11/Xlib.h>
  364. X#include <math.h>
  365. X
  366. X/*
  367. X * The R3 miarc.c code, which is used to draw arcs in the X server is very
  368. X * slow, on Suns and uVaxen at least. (It uses iterative solution of
  369. X * transcendentals to try to be faithful to the protocol) Instead, we use a
  370. X * fast approximation that computes upto MAXPOINTS points on an arc and draws
  371. X * a lines between them. Two calls each to sin(), cos(), and some floating
  372. X * point math (could probably be done in fixed point or integer if you don't
  373. X * have a math chip). These arcs don't follow the X protocol precisely, but
  374. X * look reasonable.
  375. X */
  376. X/* Author: D. A. Cahlander, <dac@earth.cray.com> 89/02/21 */
  377. X/*
  378. X *  Last Modified: Mark Moraes, <moraes@csri.toronto.edu> 89/03/23 to
  379. X *  generalize for elliptical arc drawing as a plug compatible
  380. X *  substitute for Xlib XDrawArc()/XFillArc()/XDrawArcs()/XFillArcs()
  381. X */
  382. X
  383. X/* Basic idea: By representing a ellipse as:
  384. X
  385. X        x = a * cos(t)
  386. X        y = b * sin(t)
  387. X
  388. X   t can be divided into a small number of lines and represent the arc to
  389. X   "display precision" with 15-20 lines.  (More than 20 if it was a large
  390. X   arc.)
  391. X
  392. X        let dt be the delta angle
  393. X        dc = cos(dt)
  394. X        ds = sin(dt)
  395. X
  396. X        x1     dc  -ds    x0
  397. X            =          x
  398. X        y1     ds   dc    y0
  399. X
  400. X   or
  401. X        x(i+1) = dc*x(i) - ds*y(i)
  402. X        y(i+1) = ds*x(i) + dc*y(i)
  403. X
  404. X   with the actual (x,y) being:
  405. X
  406. X        x = xc + x(i)
  407. X        y = yc + y(i)
  408. X */
  409. X
  410. X
  411. X#define MAXPOINTS 99
  412. X
  413. Xstatic drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, fill)
  414. XDisplay *dpy;
  415. XDrawable d;
  416. XGC gc;
  417. Xint x1, y1;
  418. Xunsigned int width, height;
  419. Xint angle1, angle2;
  420. Xint fill;
  421. X{
  422. X    XPoint    points[MAXPOINTS + 2];
  423. X    int    npoints;
  424. X    int    i;
  425. X    double    xc, yc;
  426. X    double    ang;
  427. X#ifdef ELLIPSE_WITHIN_BBOX
  428. X    double    delta;
  429. X#endif /* ELLIPSE_WITHIN_BBOX */
  430. X    double    t, xt, yt, dc, ds;
  431. X    double    xr, yr;
  432. X
  433. X#define DEG_180  (180*64)
  434. X#define DEG_360  (360*64)
  435. X#define DEG_720  (720*64)
  436. X
  437. X    if (angle2 > DEG_360)
  438. X        angle2 = DEG_360;
  439. X
  440. X    /*
  441. X     * compute number of points needed for "good" display precision 
  442. X     */
  443. X    npoints = M_PI * sqrt((double) (width + height) / 2.0);
  444. X    npoints = npoints < 8 ? 8 : npoints;
  445. X    npoints = (npoints * ((angle2 < 0) ? -angle2 : angle2) + DEG_720 - 1)
  446. X     / DEG_360;
  447. X    npoints = npoints > MAXPOINTS ? MAXPOINTS : npoints;
  448. X    /* angle between polygon points */
  449. X    ang = angle2 * M_PI / (DEG_180 * (npoints - 1));
  450. X    dc = cos(ang);
  451. X    ds = - sin(ang);
  452. X    
  453. X    if (angle1 == 0) {
  454. X        xt = 1.0;
  455. X        yt = 0.0;
  456. X    } else {
  457. X        ang = angle1 * M_PI / DEG_180;    /* start angle vector */
  458. X        xt = cos(ang);
  459. X        yt = - sin(ang);
  460. X    }
  461. X
  462. X#ifdef ELLIPSE_WITHIN_BBOX
  463. X    /*
  464. X     * Warning - possibly non-portable code. Uses internal details of GC
  465. X     * struct
  466. X     */
  467. X    delta = gc->values.line_width / 2.0;
  468. X#endif /* ELLIPSE_WITHIN_BBOX */
  469. X    
  470. X    /* radius of arc */
  471. X    xr = width / 2.0;
  472. X    yr = height / 2.0;
  473. X
  474. X    /* center of arc */
  475. X    xc = x1 + xr;
  476. X    yc = y1 + yr;
  477. X
  478. X#ifdef ELLIPSE_WITHIN_BBOX
  479. X    xr = (xr > delta) ? xr - delta : delta;
  480. X    yr = (yr > delta) ? yr - delta : delta;
  481. X#endif /* ELLIPSE_WITHIN_BBOX */
  482. X
  483. X    i = 0;
  484. X    
  485. X    /*
  486. X     * Warning - possibly non-portable code. Uses internal details of GC
  487. X     * struct
  488. X     */
  489. X    if (fill && angle2 != DEG_360 && gc->values.arc_mode == ArcPieSlice) {
  490. X        points[i].x = xc;
  491. X        points[i].y = yc;
  492. X        i++;
  493. X    }
  494. X    
  495. X    for (; i < npoints; i ++) {    /* compute polygon points */
  496. X        points[i].x = xc + xr * xt + (xt >= 0. ? .5 : -.5);
  497. X        points[i].y = yc + yr * yt + (yt >= 0. ? .5 : -.5);
  498. X        t = dc * xt - ds * yt;        /* rotate vector */
  499. X        yt = ds * xt + dc * yt;
  500. X        xt = t;
  501. X    }
  502. X    
  503. X    if (fill)
  504. X        XFillPolygon(dpy, d, gc, points, npoints, Convex,
  505. X         CoordModeOrigin);
  506. X    else
  507. X        XDrawLines(dpy, d, gc, points, npoints, CoordModeOrigin);
  508. X#undef DEG_180
  509. X#undef DEG_360
  510. X#undef DEG_720
  511. X}
  512. X
  513. XXDrawArc(dpy, d, gc, x1, y1, width, height, angle1, angle2)
  514. XDisplay *dpy;
  515. XDrawable d;
  516. XGC gc;
  517. Xint x1, y1;
  518. Xunsigned int width, height;
  519. Xint angle1, angle2;
  520. X{
  521. X    drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 0);
  522. X}
  523. X
  524. XXDrawArcs(dpy, d, gc, arcs, n_arcs)
  525. XDisplay *dpy;
  526. XDrawable d;
  527. XGC gc;
  528. XXArc *arcs;
  529. Xint n_arcs;
  530. X{
  531. X    register XArc *arcp;
  532. X
  533. X    for(arcp = arcs; n_arcs > 0; n_arcs--)
  534. X        drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y),
  535. X         (unsigned int) (arcp->width), (unsigned int) (arcp->height),
  536. X         (int) (arcp->angle1), (int) (arcp->angle2), 0);
  537. X}
  538. X
  539. XXFillArc(dpy, d, gc, x1, y1, width, height, angle1, angle2)
  540. XDisplay *dpy;
  541. XDrawable d;
  542. XGC gc;
  543. Xint x1, y1;
  544. Xunsigned int width, height;
  545. Xint angle1, angle2;
  546. X{
  547. X    drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 1);
  548. X}
  549. X
  550. XXFillArcs(dpy, d, gc, arcs, n_arcs)
  551. XDisplay *dpy;
  552. XDrawable d;
  553. XGC gc;
  554. XXArc *arcs;
  555. Xint n_arcs;
  556. X{
  557. X    register XArc *arcp;
  558. X
  559. X    for(arcp = arcs; n_arcs > 0; n_arcs--)
  560. X        drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y),
  561. X         (unsigned int) (arcp->width), (unsigned int) (arcp->height),
  562. X         (int) (arcp->angle1), (int) (arcp->angle2), 1);
  563. X}
  564. X#endif /* FASTARCS */
  565. END_OF_FILE
  566. if test 4811 -ne `wc -c <'xtroff/arc.c'`; then
  567.     echo shar: \"'xtroff/arc.c'\" unpacked with wrong size!
  568. fi
  569. # end of 'xtroff/arc.c'
  570. fi
  571. if test -f 'xtroff/devpsc/NB' -a "${1}" != "-c" ; then 
  572.   echo shar: Will not clobber existing file \"'xtroff/devpsc/NB'\"
  573. else
  574. echo shar: Extracting \"'xtroff/devpsc/NB'\" \(4611 characters\)
  575. sed "s/^X//" >'xtroff/devpsc/NB' <<'END_OF_FILE'
  576. X# STARTFONT 2.1
  577. X# 
  578. X#  Copyright 1984, 1987 Adobe Systems, Inc.
  579. X#  Portions Copyright 1988 Digital Equipment Corporation
  580. X#  New Century Schoolbook is a registered trademark of Linotype.
  581. X# 
  582. X#  Permission to use, copy, modify, and distribute this software and
  583. X#  its documentation for any purpose and without fee is hereby granted,
  584. X#  provided that the above copyright notices appear in all copies and
  585. X#  that both those copyright notices and this permission notice appear
  586. X#  in supporting documentation, and that the names of Adobe Systems and
  587. X#  Digital Equipment Corporation not be used in advertising or
  588. X#  publicity pertaining to distribution of the software without
  589. X#  specific, written prior permission. Adobe Systems and Digital
  590. X#  Equipment Corporation make no representations about the suitability
  591. X#  of this software for any purpose. It is provided "as is" without
  592. X#  express or implied warranty.
  593. X# 
  594. X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
  595. X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
  596. X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
  597. X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
  598. X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  599. X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  600. X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  601. X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  602. X# 
  603. X# 
  604. X#  FONT -Adobe-New Century Schoolbook-Bold-R-Normal--24-240-75-75-P-149-ISO8859-1
  605. X#  devpsc.NB.24.75
  606. Xname NB
  607. Xligatures fl fi 0
  608. Xspacewidth 57
  609. Xcharset
  610. X\|    33 0 000    1/6 em space
  611. X\^    17 0 000    1/12 em space
  612. X\&    00 0 000    no space
  613. X!    59 2 041    exclam
  614. X"    67 2 042    quotedbl
  615. X#    115 2 043    numbersign
  616. X$    115 3 044    dollar
  617. X%    167 2 045    percent
  618. X&    170 2 046    ampersand
  619. X'    48 2 047    quoteright
  620. X(    78 3 050    parenleft
  621. X)    78 3 051    parenright
  622. X*    100 2 052    asterisk
  623. X+    121 2 053    plus
  624. X,    56 1 054    comma
  625. X.    56 0 056    period
  626. X/    56 2 057    slash
  627. Xsl    "
  628. X0    115 2 060    zero
  629. X1    115 2 061    one
  630. X2    115 2 062    two
  631. X3    115 2 063    three
  632. X4    115 2 064    four
  633. X5    115 2 065    five
  634. X6    115 2 066    six
  635. X7    115 2 067    seven
  636. X8    115 2 070    eight
  637. X9    115 2 071    nine
  638. X:    56 0 072    colon
  639. X;    56 1 073    semicolon
  640. X<    121 2 074    less
  641. X=    121 0 075    equal
  642. X>    121 2 076    greater
  643. X?    100 2 077    question
  644. X@    149 2 0100    at
  645. XA    152 2 0101    A
  646. XB    156 2 0102    B
  647. XC    156 2 0103    C
  648. XD    167 2 0104    D
  649. XE    152 2 0105    E
  650. XF    144 2 0106    F
  651. XG    167 2 0107    G
  652. XH    174 2 0110    H
  653. XI    89 2 0111    I
  654. XJ    130 2 0112    J
  655. XK    163 2 0113    K
  656. XL    144 2 0114    L
  657. XM    196 2 0115    M
  658. XN    167 2 0116    N
  659. XO    167 2 0117    O
  660. XP    152 2 0120    P
  661. XQ    167 3 0121    Q
  662. XR    163 2 0122    R
  663. XS    133 2 0123    S
  664. XT    144 2 0124    T
  665. XU    167 2 0125    U
  666. XV    152 2 0126    V
  667. XW    196 2 0127    W
  668. XX    144 2 0130    X
  669. XY    144 2 0131    Y
  670. XZ    133 2 0132    Z
  671. X[    78 3 0133    bracketleft
  672. X\    121 2 0134    backslash
  673. X]    78 3 0135    bracketright
  674. Xa^    121 2 0136    asciicircum
  675. X_    100 1 0137    underscore
  676. Xul    "
  677. X\_    "
  678. X`    48 2 0140    quoteleft
  679. Xa    122 0 0141    a
  680. Xb    130 2 0142    b
  681. Xc    111 0 0143    c
  682. Xd    133 2 0144    d
  683. Xe    115 0 0145    e
  684. Xf    78 2 0146    f
  685. Xg    122 3 0147    g
  686. Xh    137 2 0150    h
  687. Xi    74 2 0151    i
  688. Xj    70 3 0152    j
  689. Xk    133 2 0153    k
  690. Xl    70 2 0154    l
  691. Xm    193 0 0155    m
  692. Xn    137 0 0156    n
  693. Xo    122 0 0157    o
  694. Xp    133 1 0160    p
  695. Xq    130 1 0161    q
  696. Xr    104 0 0162    r
  697. Xs    100 0 0163    s
  698. Xt    85 2 0164    t
  699. Xu    137 0 0165    u
  700. Xv    122 0 0166    v
  701. Xw    178 0 0167    w
  702. Xx    122 0 0170    x
  703. Xy    122 1 0171    y
  704. Xz    107 0 0172    z
  705. X{    78 3 0173    braceleft
  706. X|    121 2 0174    bar
  707. Xor    "
  708. X}    78 3 0175    braceright
  709. Xa~    121 0 0176    asciitilde
  710. X!!    59 3 0241    exclamdown
  711. XI!    "
  712. Xct    115 3 0242    cent
  713. Xps    115 2 0243    sterling
  714. Xpo    "
  715. Xyi    144 2 0245    yen
  716. Xyn    "
  717. X$J    "
  718. Xsc    100 3 0247    section
  719. Xum    67 2 0310    dieresis
  720. X..    "
  721. Xd<    100 0 0253    guillemotleft
  722. X-    67 0 055    hyphen
  723. Xhy    "
  724. Xmc    67 2 0305    macron
  725. Xma    "
  726. Xaa    67 2 0302    acute
  727. X\'    "
  728. Xpp    149 2 0266    paragraph
  729. Xcd    67 1 0313    cedilla
  730. Xd>    100 0 0273    guillemotright
  731. X14    172 2 0201    onequarter
  732. X12    172 2 0202    onehalf
  733. X34    172 2 0203    threequarters
  734. X??    100 3 0277    questiondown
  735. XI?    "
  736. XAE    196 2 0341    AE
  737. XO/    167 2 0351    Oslash
  738. Xss    122 2 0373    germandbls
  739. Xae    174 0 0361    ae
  740. Xo/    122 3 0371    oslash
  741. XOE    200 2 0352    OE
  742. XPL    144 2 0350    Lslash
  743. Xui    74 0 0365    dotlessi
  744. Xem    200 0 0320    emdash
  745. Xhc    67 2 0317    caron
  746. X''    67 2 0315    hungarumlaut
  747. Xdt    67 2 0307    dotaccent
  748. Xbe    67 2 0306    breve
  749. XPl    70 2 0370    lslash
  750. X^    67 2 0303    circumflex
  751. Xga    67 2 0301    grave
  752. X\`    "
  753. Xoe    181 0 0372    oe
  754. Xbu    121 2 0267    bullet
  755. Xog    67 1 0316    ogonek
  756. Xdd    100 3 0263    daggerdbl
  757. Xdg    100 3 0262    dagger
  758. Xen    100 0 0261    endash
  759. Xfl    137 2 0257    fl
  760. Xfi    137 2 0256    fi
  761. Xr>    67 0 0255    guilsinglright
  762. Xl<    67 0 0254    guilsinglleft
  763. X$D    115 3 0246    florin
  764. Xpm    200 2 0275    perthousand
  765. Xbq    96 1 0271    quotedblbase
  766. Xlq    96 2 0252    quotedblleft
  767. Xoq    "
  768. Xrq    96 2 0272    quotedblright
  769. Xcq    "
  770. Xn'    48 2 0251    quotesingle
  771. Xri    67 2 0312    ring
  772. X~    67 2 0304    tilde
  773. X13    167 0 0210    fudgedproc!
  774. X23    167 0 0211    fudgedproc!
  775. X18    167 0 0204    fudgedproc!
  776. X38    167 0 0205    fudgedproc!
  777. X58    167 0 0206    fudgedproc!
  778. X78    167 0 0207    fudgedproc!
  779. END_OF_FILE
  780. if test 4611 -ne `wc -c <'xtroff/devpsc/NB'`; then
  781.     echo shar: \"'xtroff/devpsc/NB'\" unpacked with wrong size!
  782. fi
  783. # end of 'xtroff/devpsc/NB'
  784. fi
  785. if test -f 'xtroff/devpsc/ND' -a "${1}" != "-c" ; then 
  786.   echo shar: Will not clobber existing file \"'xtroff/devpsc/ND'\"
  787. else
  788. echo shar: Extracting \"'xtroff/devpsc/ND'\" \(4606 characters\)
  789. sed "s/^X//" >'xtroff/devpsc/ND' <<'END_OF_FILE'
  790. X# STARTFONT 2.1
  791. X# 
  792. X#  Copyright 1984, 1987 Adobe Systems, Inc.
  793. X#  Portions Copyright 1988 Digital Equipment Corporation
  794. X#  New Century Schoolbook is a registered trademark of Linotype.
  795. X# 
  796. X#  Permission to use, copy, modify, and distribute this software and
  797. X#  its documentation for any purpose and without fee is hereby granted,
  798. X#  provided that the above copyright notices appear in all copies and
  799. X#  that both those copyright notices and this permission notice appear
  800. X#  in supporting documentation, and that the names of Adobe Systems and
  801. X#  Digital Equipment Corporation not be used in advertising or
  802. X#  publicity pertaining to distribution of the software without
  803. X#  specific, written prior permission. Adobe Systems and Digital
  804. X#  Equipment Corporation make no representations about the suitability
  805. X#  of this software for any purpose. It is provided "as is" without
  806. X#  express or implied warranty.
  807. X# 
  808. X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
  809. X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
  810. X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
  811. X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
  812. X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  813. X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  814. X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  815. X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  816. X# 
  817. X# 
  818. X#  FONT -Adobe-New Century Schoolbook-Bold-I-Normal--24-240-75-75-P-148-ISO8859-1
  819. X#  devpsc.ND.24.75
  820. Xname ND
  821. Xligatures fl fi 0
  822. Xspacewidth 57
  823. Xcharset
  824. X\|    33 0 000    1/6 em space
  825. X\^    17 0 000    1/12 em space
  826. X\&    00 0 000    no space
  827. X!    67 2 041    exclam
  828. X"    80 2 042    quotedbl
  829. X#    121 2 043    numbersign
  830. X$    115 3 044    dollar
  831. X%    178 3 045    percent
  832. X&    178 2 046    ampersand
  833. X'    52 2 047    quoteright
  834. X(    81 3 050    parenleft
  835. X)    81 3 051    parenright
  836. X*    100 2 052    asterisk
  837. X+    121 2 053    plus
  838. X,    57 1 054    comma
  839. X.    57 0 056    period
  840. X/    56 2 057    slash
  841. Xsl    "
  842. X0    115 2 060    zero
  843. X1    115 2 061    one
  844. X2    115 2 062    two
  845. X3    115 2 063    three
  846. X4    115 2 064    four
  847. X5    115 2 065    five
  848. X6    115 2 066    six
  849. X7    115 2 067    seven
  850. X8    115 2 070    eight
  851. X9    115 2 071    nine
  852. X:    57 0 072    colon
  853. X;    57 1 073    semicolon
  854. X<    121 2 074    less
  855. X=    121 0 075    equal
  856. X>    121 2 076    greater
  857. X?    96 2 077    question
  858. X@    149 2 0100    at
  859. XA    148 2 0101    A
  860. XB    152 2 0102    B
  861. XC    152 2 0103    C
  862. XD    167 2 0104    D
  863. XE    148 2 0105    E
  864. XF    141 2 0106    F
  865. XG    163 2 0107    G
  866. XH    174 2 0110    H
  867. XI    89 2 0111    I
  868. XJ    133 2 0112    J
  869. XK    156 2 0113    K
  870. XL    141 2 0114    L
  871. XM    189 2 0115    M
  872. XN    170 2 0116    N
  873. XO    167 2 0117    O
  874. XP    148 2 0120    P
  875. XQ    167 3 0121    Q
  876. XR    159 2 0122    R
  877. XS    137 2 0123    S
  878. XT    144 2 0124    T
  879. XU    167 2 0125    U
  880. XV    148 2 0126    V
  881. XW    189 2 0127    W
  882. XX    148 2 0130    X
  883. XY    141 2 0131    Y
  884. XZ    141 2 0132    Z
  885. X[    81 3 0133    bracketleft
  886. X\    121 2 0134    backslash
  887. X]    81 3 0135    bracketright
  888. Xa^    121 2 0136    asciicircum
  889. X_    100 1 0137    underscore
  890. Xul    "
  891. X\_    "
  892. X`    52 2 0140    quoteleft
  893. Xa    133 0 0141    a
  894. Xb    122 2 0142    b
  895. Xc    107 0 0143    c
  896. Xd    133 2 0144    d
  897. Xe    104 0 0145    e
  898. Xf    78 3 0146    f
  899. Xg    122 3 0147    g
  900. Xh    137 2 0150    h
  901. Xi    78 2 0151    i
  902. Xj    74 3 0152    j
  903. Xk    130 2 0153    k
  904. Xl    78 2 0154    l
  905. Xm    189 0 0155    m
  906. Xn    137 0 0156    n
  907. Xo    115 0 0157    o
  908. Xp    130 1 0160    p
  909. Xq    126 1 0161    q
  910. Xr    104 0 0162    r
  911. Xs    96 0 0163    s
  912. Xt    81 2 0164    t
  913. Xu    137 0 0165    u
  914. Xv    111 0 0166    v
  915. Xw    167 0 0167    w
  916. Xx    115 0 0170    x
  917. Xy    104 1 0171    y
  918. Xz    104 0 0172    z
  919. X{    81 3 0173    braceleft
  920. X|    121 2 0174    bar
  921. Xor    "
  922. X}    81 3 0175    braceright
  923. Xa~    121 0 0176    asciitilde
  924. X!!    67 3 0241    exclamdown
  925. XI!    "
  926. Xct    115 3 0242    cent
  927. Xps    115 2 0243    sterling
  928. Xpo    "
  929. Xyi    115 2 0245    yen
  930. Xyn    "
  931. X$J    "
  932. Xsc    100 3 0247    section
  933. Xum    67 2 0310    dieresis
  934. X..    "
  935. Xd<    96 0 0253    guillemotleft
  936. X-    67 0 055    hyphen
  937. Xhy    "
  938. Xmc    67 2 0305    macron
  939. Xma    "
  940. Xaa    67 2 0302    acute
  941. X\'    "
  942. Xpp    130 2 0266    paragraph
  943. Xcd    67 1 0313    cedilla
  944. Xd>    96 0 0273    guillemotright
  945. X14    172 2 0201    onequarter
  946. X12    172 2 0202    onehalf
  947. X34    172 2 0203    threequarters
  948. X??    96 3 0277    questiondown
  949. XI?    "
  950. XAE    178 2 0341    AE
  951. XO/    167 3 0351    Oslash
  952. Xss    115 3 0373    germandbls
  953. Xae    163 0 0361    ae
  954. Xo/    115 3 0371    oslash
  955. Xoe    170 0 0372    oe
  956. XPl    78 2 0370    lslash
  957. Xui    78 0 0365    dotlessi
  958. XOE    193 2 0352    OE
  959. XPL    141 2 0350    Lslash
  960. Xem    200 0 0320    emdash
  961. Xhc    67 2 0317    caron
  962. Xog    67 1 0316    ogonek
  963. X''    67 2 0315    hungarumlaut
  964. Xri    67 2 0312    ring
  965. Xdt    67 2 0307    dotaccent
  966. Xbe    67 2 0306    breve
  967. X~    67 2 0304    tilde
  968. X^    67 2 0303    circumflex
  969. Xga    67 2 0301    grave
  970. X\`    "
  971. Xpm    233 3 0275    perthousand
  972. Xrq    96 2 0272    quotedblright
  973. Xcq    "
  974. Xbq    96 1 0271    quotedblbase
  975. Xbu    121 0 0267    bullet
  976. Xdd    100 3 0263    daggerdbl
  977. Xdg    100 3 0262    dagger
  978. Xen    100 0 0261    endash
  979. Xfl    137 3 0257    fl
  980. Xfi    137 3 0256    fi
  981. Xr>    56 0 0255    guilsinglright
  982. Xl<    56 0 0254    guilsinglleft
  983. Xlq    96 2 0252    quotedblleft
  984. Xoq    "
  985. Xn'    45 2 0251    quotesingle
  986. X$D    115 3 0246    florin
  987. X13    167 0 0210    fudgedproc!
  988. X23    167 0 0211    fudgedproc!
  989. X18    167 0 0204    fudgedproc!
  990. X38    167 0 0205    fudgedproc!
  991. X58    167 0 0206    fudgedproc!
  992. X78    167 0 0207    fudgedproc!
  993. END_OF_FILE
  994. if test 4606 -ne `wc -c <'xtroff/devpsc/ND'`; then
  995.     echo shar: \"'xtroff/devpsc/ND'\" unpacked with wrong size!
  996. fi
  997. # end of 'xtroff/devpsc/ND'
  998. fi
  999. if test -f 'xtroff/devpsc/NI' -a "${1}" != "-c" ; then 
  1000.   echo shar: Will not clobber existing file \"'xtroff/devpsc/NI'\"
  1001. else
  1002. echo shar: Extracting \"'xtroff/devpsc/NI'\" \(4605 characters\)
  1003. sed "s/^X//" >'xtroff/devpsc/NI' <<'END_OF_FILE'
  1004. X# STARTFONT 2.1
  1005. X# 
  1006. X#  Copyright 1984, 1987 Adobe Systems, Inc.
  1007. X#  Portions Copyright 1988 Digital Equipment Corporation
  1008. X#  New Century Schoolbook is a registered trademark of Linotype.
  1009. X# 
  1010. X#  Permission to use, copy, modify, and distribute this software and
  1011. X#  its documentation for any purpose and without fee is hereby granted,
  1012. X#  provided that the above copyright notices appear in all copies and
  1013. X#  that both those copyright notices and this permission notice appear
  1014. X#  in supporting documentation, and that the names of Adobe Systems and
  1015. X#  Digital Equipment Corporation not be used in advertising or
  1016. X#  publicity pertaining to distribution of the software without
  1017. X#  specific, written prior permission. Adobe Systems and Digital
  1018. X#  Equipment Corporation make no representations about the suitability
  1019. X#  of this software for any purpose. It is provided "as is" without
  1020. X#  express or implied warranty.
  1021. X# 
  1022. X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
  1023. X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
  1024. X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
  1025. X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
  1026. X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  1027. X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  1028. X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  1029. X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  1030. X# 
  1031. X# 
  1032. X#  FONT -Adobe-New Century Schoolbook-Medium-I-Normal--24-240-75-75-P-136-ISO8859-1
  1033. X#  devpsc.NI.24.75
  1034. Xname NI
  1035. Xligatures fl fi 0
  1036. Xspacewidth 56
  1037. Xcharset
  1038. X\|    33 0 000    1/6 em space
  1039. X\^    17 0 000    1/12 em space
  1040. X\&    00 0 000    no space
  1041. X!    67 2 041    exclam
  1042. X"    80 2 042    quotedbl
  1043. X#    121 2 043    numbersign
  1044. X$    111 3 044    dollar
  1045. X%    167 2 045    percent
  1046. X&    170 2 046    ampersand
  1047. X'    41 2 047    quoteright
  1048. X(    67 3 050    parenleft
  1049. X)    67 3 051    parenright
  1050. X*    100 2 052    asterisk
  1051. X+    121 2 053    plus
  1052. X,    56 1 054    comma
  1053. X.    56 0 056    period
  1054. X/    121 3 057    slash
  1055. Xsl    "
  1056. X0    111 2 060    zero
  1057. X1    111 2 061    one
  1058. X2    111 2 062    two
  1059. X3    111 2 063    three
  1060. X4    111 2 064    four
  1061. X5    111 2 065    five
  1062. X6    111 2 066    six
  1063. X7    111 2 067    seven
  1064. X8    111 2 070    eight
  1065. X9    111 2 071    nine
  1066. X:    56 0 072    colon
  1067. X;    56 1 073    semicolon
  1068. X<    121 2 074    less
  1069. X=    121 0 075    equal
  1070. X>    121 2 076    greater
  1071. X?    89 2 077    question
  1072. X@    149 2 0100    at
  1073. XA    141 2 0101    A
  1074. XB    144 2 0102    B
  1075. XC    144 2 0103    C
  1076. XD    156 2 0104    D
  1077. XE    144 2 0105    E
  1078. XF    133 2 0106    F
  1079. XG    156 2 0107    G
  1080. XH    167 2 0110    H
  1081. XI    81 2 0111    I
  1082. XJ    122 2 0112    J
  1083. XK    148 2 0113    K
  1084. XL    133 2 0114    L
  1085. XM    189 2 0115    M
  1086. XN    163 2 0116    N
  1087. XO    156 2 0117    O
  1088. XP    133 2 0120    P
  1089. XQ    156 3 0121    Q
  1090. XR    148 2 0122    R
  1091. XS    133 2 0123    S
  1092. XT    137 2 0124    T
  1093. XU    163 2 0125    U
  1094. XV    141 2 0126    V
  1095. XW    185 2 0127    W
  1096. XX    141 2 0130    X
  1097. XY    137 2 0131    Y
  1098. XZ    133 2 0132    Z
  1099. X[    67 3 0133    bracketleft
  1100. X\    121 2 0134    backslash
  1101. X]    67 3 0135    bracketright
  1102. Xa^    121 2 0136    asciicircum
  1103. X_    100 1 0137    underscore
  1104. Xul    "
  1105. X\_    "
  1106. X`    41 2 0140    quoteleft
  1107. Xa    115 0 0141    a
  1108. Xb    111 2 0142    b
  1109. Xc    89 0 0143    c
  1110. Xd    122 2 0144    d
  1111. Xe    89 0 0145    e
  1112. Xf    67 3 0146    f
  1113. Xg    107 3 0147    g
  1114. Xh    122 2 0150    h
  1115. Xi    67 2 0151    i
  1116. Xj    63 3 0152    j
  1117. Xk    111 2 0153    k
  1118. Xl    67 2 0154    l
  1119. Xm    178 0 0155    m
  1120. Xn    122 0 0156    n
  1121. Xo    100 0 0157    o
  1122. Xp    115 1 0160    p
  1123. Xq    111 1 0161    q
  1124. Xr    89 0 0162    r
  1125. Xs    89 0 0163    s
  1126. Xt    70 2 0164    t
  1127. Xu    122 0 0165    u
  1128. Xv    104 0 0166    v
  1129. Xw    156 0 0167    w
  1130. Xx    100 0 0170    x
  1131. Xy    100 1 0171    y
  1132. Xz    93 0 0172    z
  1133. X{    67 3 0173    braceleft
  1134. X|    121 2 0174    bar
  1135. Xor    "
  1136. X}    67 3 0175    braceright
  1137. Xa~    121 0 0176    asciitilde
  1138. X!!    67 3 0241    exclamdown
  1139. XI!    "
  1140. Xct    111 3 0242    cent
  1141. Xps    111 2 0243    sterling
  1142. Xpo    "
  1143. Xyi    111 2 0245    yen
  1144. Xyn    "
  1145. X$J    "
  1146. Xsc    100 3 0247    section
  1147. Xum    67 2 0310    dieresis
  1148. X..    "
  1149. Xd<    85 0 0253    guillemotleft
  1150. X-    67 0 055    hyphen
  1151. Xhy    "
  1152. Xmc    67 2 0305    macron
  1153. Xma    "
  1154. Xaa    67 2 0302    acute
  1155. X\'    "
  1156. Xpp    130 2 0266    paragraph
  1157. Xcd    67 1 0313    cedilla
  1158. Xd>    85 0 0273    guillemotright
  1159. X14    167 2 0201    onequarter
  1160. X12    167 2 0202    onehalf
  1161. X34    167 2 0203    threequarters
  1162. X??    89 3 0277    questiondown
  1163. XI?    "
  1164. XAE    174 2 0341    AE
  1165. XO/    156 3 0351    Oslash
  1166. Xss    111 3 0373    germandbls
  1167. Xae    144 0 0361    ae
  1168. Xo/    100 3 0371    oslash
  1169. Xoe    156 0 0372    oe
  1170. XPl    67 2 0370    lslash
  1171. Xui    67 0 0365    dotlessi
  1172. XOE    196 2 0352    OE
  1173. XPL    133 2 0350    Lslash
  1174. Xem    200 0 0320    emdash
  1175. Xhc    67 2 0317    caron
  1176. Xog    67 1 0316    ogonek
  1177. X''    67 2 0315    hungarumlaut
  1178. Xri    67 2 0312    ring
  1179. Xdt    67 2 0307    dotaccent
  1180. Xbe    67 2 0306    breve
  1181. X~    67 2 0304    tilde
  1182. X^    67 2 0303    circumflex
  1183. Xga    67 2 0301    grave
  1184. X\`    "
  1185. Xpm    200 3 0275    perthousand
  1186. Xrq    78 2 0272    quotedblright
  1187. Xcq    "
  1188. Xbq    78 1 0271    quotedblbase
  1189. Xbu    121 0 0267    bullet
  1190. Xdd    100 3 0263    daggerdbl
  1191. Xdg    100 3 0262    dagger
  1192. Xen    100 0 0261    endash
  1193. Xfl    122 3 0257    fl
  1194. Xfi    122 3 0256    fi
  1195. Xr>    67 0 0255    guilsinglright
  1196. Xl<    67 0 0254    guilsinglleft
  1197. Xlq    78 2 0252    quotedblleft
  1198. Xoq    "
  1199. Xn'    56 2 0251    quotesingle
  1200. X$D    111 3 0246    florin
  1201. X13    167 0 0210    fudgedproc!
  1202. X23    167 0 0211    fudgedproc!
  1203. X18    167 0 0204    fudgedproc!
  1204. X38    167 0 0205    fudgedproc!
  1205. X58    167 0 0206    fudgedproc!
  1206. X78    167 0 0207    fudgedproc!
  1207. END_OF_FILE
  1208. if test 4605 -ne `wc -c <'xtroff/devpsc/NI'`; then
  1209.     echo shar: \"'xtroff/devpsc/NI'\" unpacked with wrong size!
  1210. fi
  1211. # end of 'xtroff/devpsc/NI'
  1212. fi
  1213. if test -f 'xtroff/devpsc/S' -a "${1}" != "-c" ; then 
  1214.   echo shar: Will not clobber existing file \"'xtroff/devpsc/S'\"
  1215. else
  1216. echo shar: Extracting \"'xtroff/devpsc/S'\" \(5257 characters\)
  1217. sed "s/^X//" >'xtroff/devpsc/S' <<'END_OF_FILE'
  1218. X# STARTFONT 2.1
  1219. X# 
  1220. X#  Copyright 1984, 1987 Adobe Systems, Inc.
  1221. X#  Portions Copyright 1988 Digital Equipment Corporation
  1222. X# 
  1223. X#  Permission to use, copy, modify, and distribute this software and
  1224. X#  its documentation for any purpose and without fee is hereby granted,
  1225. X#  provided that the above copyright notices appear in all copies and
  1226. X#  that both those copyright notices and this permission notice appear
  1227. X#  in supporting documentation, and that the names of Adobe Systems and
  1228. X#  Digital Equipment Corporation not be used in advertising or
  1229. X#  publicity pertaining to distribution of the software without
  1230. X#  specific, written prior permission. Adobe Systems and Digital
  1231. X#  Equipment Corporation make no representations about the suitability
  1232. X#  of this software for any purpose. It is provided "as is" without
  1233. X#  express or implied warranty.
  1234. X# 
  1235. X#  ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
  1236. X#  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
  1237. X#  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE
  1238. X#  SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL,
  1239. X#  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  1240. X#  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  1241. X#  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  1242. X#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  1243. X# 
  1244. X# 
  1245. X#  FONT -Adobe-Symbol-Medium-R-Normal--24-240-75-75-P-142-ADOBE-FONTSPECIFIC
  1246. X#  devpsc.S.24.75
  1247. Xname S
  1248. Xspecial
  1249. Xligatures 0
  1250. Xspacewidth 50
  1251. Xcharset
  1252. X\|    33 0 000    1/6 em space
  1253. X\^    17 0 000    1/12 em space
  1254. X\&    00 0 000    no space
  1255. X!    67 2 041    exclam
  1256. Xfa    143 2 042    universal
  1257. X#    100 2 043    numbersign
  1258. Xte    110 2 044    existential
  1259. X%    167 2 045    percent
  1260. X&    156 2 046    ampersand
  1261. Xcm    88 0 047    suchthat
  1262. X(    67 3 050    parenleft
  1263. X)    67 3 051    parenright
  1264. X**    100 2 052    asteriskmath
  1265. X+    110 0 053    plus
  1266. Xpl    "
  1267. X,    50 1 054    comma
  1268. X\-    110 0 055    minus
  1269. Xmi    "
  1270. X.    50 0 056    period
  1271. X/    56 2 057    slash
  1272. Xsl    "
  1273. X0    100 2 060    zero
  1274. X1    100 2 061    one
  1275. X2    100 2 062    two
  1276. X3    100 2 063    three
  1277. X4    100 2 064    four
  1278. X5    100 2 065    five
  1279. X6    100 2 066    six
  1280. X7    100 2 067    seven
  1281. X8    100 2 070    eight
  1282. X9    100 2 071    nine
  1283. X:    56 0 072    colon
  1284. X;    56 1 073    semicolon
  1285. X<    110 0 074    less
  1286. X=    110 0 075    equal
  1287. Xeq    "
  1288. X>    110 0 076    greater
  1289. X?    89 2 077    question
  1290. X=~    110 0 0100    congruent
  1291. X*A    144 2 0101    Alpha
  1292. X*B    133 2 0102    Beta
  1293. X*X    144 2 0103    Chi
  1294. X*D    122 2 0104    Delta
  1295. X*E    122 2 0105    Epsilon
  1296. X*F    153 2 0106    Phi
  1297. X*G    121 2 0107    Gamma
  1298. X*Y    144 2 0110    Eta
  1299. X*I    67 2 0111    Iota
  1300. X*K    144 2 0113    Kappa
  1301. X*L    137 2 0114    Lambda
  1302. X*M    178 2 0115    Mu
  1303. X*N    144 2 0116    Nu
  1304. X*O    144 2 0117    Omicron
  1305. X*P    154 2 0120    Pi
  1306. X*H    148 2 0121    Theta
  1307. X*R    111 2 0122    Rho
  1308. X*S    118 2 0123    Sigma
  1309. X*T    122 2 0124    Tau
  1310. X*U    138 2 0125    Upsilon
  1311. Xts    88 1 0126    sigma1
  1312. X*W    154 2 0127    Omega
  1313. X*C    129 2 0130    Xi
  1314. X*Q    159 2 0131    Psi
  1315. X*Z    122 2 0132    Zeta
  1316. X[    67 3 0133    bracketleft
  1317. Xtf    173 0 0134    therefore
  1318. X]    67 3 0135    bracketright
  1319. Xbt    132 2 0136    perpendicular
  1320. X_    100 1 0137    underscore
  1321. Xul    "
  1322. X\_    "
  1323. Xrn    100 2 0140    radicalex
  1324. X*a    126 0 0141    alpha
  1325. X*b    110 3 0142    beta
  1326. X*x    110 1 0143    chi
  1327. X*d    99 2 0144    delta
  1328. X*e    88 0 0145    epsilon
  1329. X*f    104 3 0146    phi
  1330. X*g    82 1 0147    gamma
  1331. X*y    121 1 0150    eta
  1332. X*i    66 0 0151    iota
  1333. X*k    110 0 0153    kappa
  1334. X*l    110 2 0154    lambda
  1335. X*m    115 1 0155    mu
  1336. X*n    104 0 0156    nu
  1337. X*o    110 0 0157    omicron
  1338. X*p    110 0 0160    pi
  1339. X*h    104 2 0161    theta
  1340. X*r    110 1 0162    rho
  1341. X*s    121 0 0163    sigma
  1342. X*t    88 0 0164    tau
  1343. X*u    115 0 0165    upsilon
  1344. X*w    137 0 0167    omega
  1345. X*c    99 3 0170    xi
  1346. X*q    137 1 0171    psi
  1347. X*z    99 3 0172    zeta
  1348. X{    96 3 0173    braceleft
  1349. X|    40 3 0174    bar
  1350. Xor    "
  1351. X}    96 3 0175    braceright
  1352. Xap    110 0 0176    similar
  1353. Xfm    49 2 0242    minute
  1354. Xmt    "
  1355. X<=    110 2 0243    lessequal
  1356. Xif    143 0 0245    infinity
  1357. X$D    100 3 0246    florin
  1358. XCc    151 0 0247    club
  1359. XCd    151 0 0250    diamond
  1360. Xbs    151 0 0251    heart
  1361. XCh    "
  1362. XCs    151 0 0252    spade
  1363. X<>    208 0 0253    arrowboth
  1364. X<-    197 0 0254    arrowleft
  1365. Xua    121 3 0255    arrowup
  1366. X->    197 0 0256    arrowright
  1367. Xda    121 3 0257    arrowdown
  1368. Xde    80 2 0260    degree
  1369. X+-    110 2 0261    plusminus
  1370. Xsd    82 2 0262    second
  1371. X>=    110 2 0263    greaterequal
  1372. Xmu    110 0 0264    multiply
  1373. Xpt    143 0 0265    proportional
  1374. Xpd    99 2 0266    partialdiff
  1375. Xbu    92 0 0267    bullet
  1376. Xdi    110 0 0270    divide
  1377. X!=    110 0 0271    notequal
  1378. X==    110 0 0272    equivalence
  1379. X~=    110 0 0273    approxequal
  1380. Xcr    132 2 0277    carriagereturn
  1381. Xal    165 2 0300    aleph
  1382. Xax    154 2 0304    circlemultiply
  1383. Xa+    154 2 0305    circleplus
  1384. Xes    165 2 0306    emptyset
  1385. Xca    154 0 0307    intersection
  1386. Xcu    154 0 0310    union
  1387. Xsp    143 0 0311    propersuperset
  1388. Xip    143 1 0312    reflexsuperset
  1389. X!s    143 3 0313    notsubset
  1390. Xsb    143 0 0314    propersubset
  1391. Xib    143 1 0315    reflexsubset
  1392. Xmo    143 0 0316    element
  1393. X!m    143 3 0317    notelement
  1394. Xag    154 2 0320    angle
  1395. Xgr    143 2 0321    gradient
  1396. Xrg    158 2 0322    registerserif
  1397. Xco    158 2 0323    copyrightserif
  1398. Xtm    178 2 0324    trademarkserif
  1399. Xsr    110 2 0326    radical
  1400. Xm.    50 0 0327    dotmath
  1401. Xno    143 0 0330    logicalnot
  1402. Xan    121 0 0331    logicaland
  1403. Xla    "
  1404. Xlo    121 0 0332    logicalor
  1405. Xio    208 0 0333    arrowdblboth
  1406. X<:    197 0 0334    arrowdblleft
  1407. Xlh    "
  1408. Xu=    121 2 0335    arrowdblup
  1409. X:>    197 0 0336    arrowdblright
  1410. Xim    "
  1411. Xrh    "
  1412. Xd=    121 2 0337    arrowdbldown
  1413. Xdm    99 2 0340    lozenge
  1414. Xl<    66 3 0341    angleleft
  1415. XL<    "
  1416. XAL    158 2 0360    apple
  1417. Xr>    66 3 0361    angleright
  1418. XR>    "
  1419. Xis    55 3 0362    integral
  1420. Xbx    144 2 0205    box
  1421. Xsq    144 2 0204    square
  1422. Xci    158 2 0206    circle
  1423. Xbr    40 3 0207    boxrule
  1424. Xru    100 0 0211    rule
  1425. Xrc    77 3 0224    rightceiling
  1426. Xbv    77 3 0210    boldvertical
  1427. Xrf    77 3 0222    rightfloor
  1428. Xrt    99 3 0215    righttopcurly
  1429. Xrk    99 3 0220    rightmidcurly
  1430. Xrb    99 3 0216    rightbotcurly
  1431. Xlc    77 3 0223    leftceiling
  1432. Xlf    77 3 0221    leftfloor
  1433. Xlt    99 3 0213    lefttopcurly
  1434. Xlk    99 3 0217    leftmidcurly
  1435. Xlb    99 3 0214    leftbotcurly
  1436. END_OF_FILE
  1437. if test 5257 -ne `wc -c <'xtroff/devpsc/S'`; then
  1438.     echo shar: \"'xtroff/devpsc/S'\" unpacked with wrong size!
  1439. fi
  1440. # end of 'xtroff/devpsc/S'
  1441. fi
  1442. if test -f 'xtroff/fontstuff/ch2vft.c' -a "${1}" != "-c" ; then 
  1443.   echo shar: Will not clobber existing file \"'xtroff/fontstuff/ch2vft.c'\"
  1444. else
  1445. echo shar: Extracting \"'xtroff/fontstuff/ch2vft.c'\" \(6303 characters\)
  1446. sed "s/^X//" >'xtroff/fontstuff/ch2vft.c' <<'END_OF_FILE'
  1447. X/* ch2vft.c    1.4    84/04/07
  1448. X *
  1449. X * Font translation to vfonts (RST format) from character format.
  1450. X *
  1451. X *    Use:    ch2vft  [ -i  -s ]  charfile  > vfontfile
  1452. X *
  1453. X *        Takes input from charfile (which must be in the format written
  1454. X *    by xxx2ch), converts to rst format and writes to stdout.  If charfile
  1455. X *    is missing, stdin is read.  The -i flag tells ch2rst to ignore the
  1456. X *    character codes at the start of each glyph definition, and pack the
  1457. X *    glyphs in consecutive code positions starting with 0.  The -s flag
  1458. X *    forces ch2vft to include the whole bit-map that defines the glyph.
  1459. X *    Normally, it is trimmed of white space.  This is usefull for making
  1460. X *    stipple patterns of fixed size.
  1461. X */
  1462. X
  1463. X#include <stdio.h>
  1464. X#include <ctype.h>
  1465. X#include <vfont.h>
  1466. X
  1467. X
  1468. X#define RES        200    /* for vfont, resolution is 200 */
  1469. X#define MAXLINE        200
  1470. X#define GLYPHSPACE    (MAXLINE * MAXLINE)
  1471. X#define MAGICNO        0436
  1472. X#define DIRSIZ        256    /* vfonts MUST have 256 entries */
  1473. X#define DIMLIMIT    128
  1474. X
  1475. X
  1476. Xchar *    rdchar();
  1477. Xchar *    malloc();
  1478. X
  1479. Xstruct dispatch g[DIRSIZ];    /* directory of glyph definitions */
  1480. Xstruct header    head;        /* font file header */
  1481. X
  1482. Xint    code, codeindex;
  1483. Xint    width, length, maxv, minv, maxh, minh, refv, refh;
  1484. Xint    fileaddr;
  1485. X
  1486. Xint    ignorecode = 0;
  1487. Xint    stipple = 0;
  1488. XFILE *    filep;
  1489. Xchar    ibuff[MAXLINE];
  1490. Xchar    ebuff[MAXLINE];
  1491. Xchar *    glyphs[DIRSIZ];
  1492. Xchar    charbits[GLYPHSPACE];    /* place to store bits for a glyph */
  1493. X
  1494. X
  1495. Xmain(argc,argv)
  1496. Xint argc;
  1497. Xchar **argv;
  1498. X{
  1499. X    register int i;
  1500. X    register int j;
  1501. X    register int k;
  1502. X    register char *chp;
  1503. X    register char *bitp;
  1504. X    float par;
  1505. X
  1506. X    head.magic = MAGICNO;
  1507. X    head.maxx = head.maxy = head.xtend = 0;
  1508. X    while (argc > 1 && argv[1][0] == '-') {
  1509. X    switch(argv[1][1]) {
  1510. X    case 'i':
  1511. X        ignorecode = 1;
  1512. X        break;
  1513. X
  1514. X    case 's':
  1515. X        stipple = 1;
  1516. X        break;
  1517. X    default:
  1518. X        error("%s, unknown option flag", argv[1]);
  1519. X    }
  1520. X    argc--; argv++;
  1521. X    }
  1522. X
  1523. X    if (argc == 2) {
  1524. X    if ((filep = fopen (argv[1], "r")) == NULL)
  1525. X        error("can't open file \"%s\"", argv[1]);
  1526. X    } else filep = stdin;
  1527. X
  1528. X    codeindex = 0;
  1529. X    for (i = 0; i < DIRSIZ; glyphs[i++] = (char *) 0);
  1530. X
  1531. X    fgets(ibuff, MAXLINE, filep);
  1532. X    if (strcmp(ibuff, "fontheader\n"))
  1533. X    error("not a character font file");
  1534. X
  1535. X    while (fgets(ibuff, MAXLINE, filep) != NULL) {
  1536. X    if (index(ibuff, '\n') == 0)
  1537. X        error("input line too long");
  1538. X
  1539. X    if (ibuff[0] != ':') {
  1540. X        sscanf (ibuff, "%s %f", ebuff, &par);
  1541. X        if (strcmp(ebuff, "size") == 0);
  1542. X        else if (strcmp(ebuff, "version") == 0) {
  1543. X        if ((int) (par + 0.5))
  1544. X            error("wrong version (%d) for Font file.", (int)(par+0.5));
  1545. X        } else if (strcmp(ebuff, "mag") == 0);
  1546. X        else if (strcmp(ebuff, "desiz") == 0);  /*des_size = par/FIX + 0.5*/
  1547. X        else if (strcmp(ebuff, "linesp") == 0);
  1548. X        else if (strcmp(ebuff, "wordsp") == 0);
  1549. X        else if (strcmp(ebuff, "rot") == 0);
  1550. X        else if (strcmp(ebuff, "cadv") == 0);
  1551. X        else if (strcmp(ebuff, "ladv") == 0);
  1552. X        else if (strcmp(ebuff, "id") == 0);
  1553. X        else if (strcmp(ebuff, "res") == 0) {
  1554. X        if (((int) (par + 0.5)) != RES)
  1555. X            fprintf(stderr, "ch2vft warning: wrong resolution (%d).\n",
  1556. X            (int) (par + 0.5) );
  1557. X        } else
  1558. X        error("unknown input descriptor, \"%s\"", ebuff);
  1559. X    } else {
  1560. X        if (sscanf (ibuff, ":%d, width = %f", &code, &par) != 2)
  1561. X        error("bad glyph header, %s", ibuff);
  1562. X        if (ignorecode) i = codeindex++; else i = code;
  1563. X        if (i < 0 || i >= DIRSIZ) error("code (%d) out of range", i);
  1564. X        g[i].width = par + 0.5;
  1565. X
  1566. X        chp = &charbits[0];
  1567. X        if (fgets(chp, MAXLINE, filep) == NULL)
  1568. X        error("unexpected end of input");
  1569. X        width = strlen(chp) - 1;
  1570. X        minh = width;
  1571. X        maxh = 0;
  1572. X        refv = minv = -1;
  1573. X
  1574. X        for (length = 0; *chp != '\n'; length++) {
  1575. X        if ((length + 1) * width > GLYPHSPACE)
  1576. X            error ("out of glyph space");
  1577. X        for (j = 0; j < width; j++, chp++) {
  1578. X            switch (*chp) {
  1579. X            case '.':
  1580. X                break;
  1581. X            case 'x':
  1582. X                refh = j;
  1583. X                refv = length;
  1584. X                *chp = '.';
  1585. X                break;
  1586. X            case 'X':
  1587. X                refh = j;
  1588. X                refv = length;
  1589. X            case '@':
  1590. X            case '*':
  1591. X                maxv = length;
  1592. X                if (minv < 0) minv = length;
  1593. X                if (j < minh) minh = j;
  1594. X                if (j > maxh) maxh = j;
  1595. X                break;
  1596. X            default:
  1597. X                error("illegal character '%c' in map.", *chp);
  1598. X            } /* switch */
  1599. X        } /* for j */
  1600. X        if (fgets(chp, MAXLINE, filep) == NULL)
  1601. X            error("unexpected end of input");
  1602. X        } /* for length */
  1603. X
  1604. X        if (stipple) {        /* force whole box if making stipples */
  1605. X        minv = 0;
  1606. X        minh = 0;
  1607. X        maxv = length - 1;
  1608. X        maxh = width - 1;
  1609. X        }
  1610. X
  1611. X        if (refv < 0) error("no reference point in glyph %d.", code);
  1612. X        if (minv < 0) {
  1613. X        minv = maxv = refv;
  1614. X        minh = maxh = refh;
  1615. X        }
  1616. X        g[i].up = bound(refv - minv);
  1617. X        g[i].down = bound(maxv + 1 - refv);
  1618. X        g[i].right = bound(maxh + 1 - refh);
  1619. X        g[i].left = bound(refh - minh);
  1620. X        g[i].nbytes = (maxv + 1 - minv) * ((maxh + 8 - minh) >> 3);
  1621. X
  1622. X                /* convert from characters to bits */
  1623. X        bitp = (glyphs[i] = malloc(g[i].nbytes)) - 1;
  1624. X        for (k = minv; k <= maxv; k++) {
  1625. X        register int bitwidth;
  1626. X
  1627. X        chp = &charbits[0] + width * k + minh;
  1628. X        bitwidth = 0;
  1629. X        for (j = minh; j <= maxh; j++, chp++) {
  1630. X            if (--bitwidth < 0) {
  1631. X            *++bitp = '\0';
  1632. X            bitwidth = 7;
  1633. X            }
  1634. X            if (*chp != '.') *bitp |= 1 << bitwidth;
  1635. X        }
  1636. X        } /* for */
  1637. X    } /* else */
  1638. X    } /* while */
  1639. X
  1640. X    fileaddr = 0;
  1641. X    for (i = 0; i < DIRSIZ; i++) {
  1642. X    if (glyphs[i] == (char *) 0) {
  1643. X        g[i].nbytes = 0;
  1644. X    } else {
  1645. X        g[i].addr = fileaddr;
  1646. X        fileaddr += g[i].nbytes;
  1647. X        if (g[i].up > head.maxy) head.maxy = g[i].up;
  1648. X        if (g[i].down > head.xtend) head.xtend = g[i].down;
  1649. X        if (((int) g[i].left + g[i].right) > head.maxx)
  1650. X        head.maxx = g[i].left + (int) g[i].right;
  1651. X    }
  1652. X    }
  1653. X    head.size = fileaddr;
  1654. X
  1655. X    vwrite((char *) &head, sizeof(head));
  1656. X    vwrite((char *) &(g[0]), sizeof(g));
  1657. X    for (i = 0; i < DIRSIZ; i++)
  1658. X    if (glyphs[i] != (char *) 0)
  1659. X        vwrite(glyphs[i], g[i].nbytes);
  1660. X}
  1661. X
  1662. X
  1663. Xvwrite(buf,usize)
  1664. Xchar *buf;
  1665. Xint usize;
  1666. X{
  1667. X    int tsize = 0;
  1668. X
  1669. X    while (usize) {
  1670. X        buf += tsize;
  1671. X        tsize = usize > BUFSIZ ? BUFSIZ : usize;
  1672. X        if ((tsize = write(1, buf, tsize)) < 0) {
  1673. X            perror("ch2vft: write failed");
  1674. X            exit(-1);
  1675. X        }
  1676. X        usize -= tsize;
  1677. X    }
  1678. X}
  1679. X
  1680. X
  1681. X/*VARARGS1*/
  1682. Xerror(string, a1, a2, a3, a4)
  1683. Xchar *string;
  1684. X{ 
  1685. X    fprintf(stderr, "ch2vft: ");
  1686. X    fprintf(stderr, string, a1, a2, a3, a4);
  1687. X    fprintf(stderr, "\n");
  1688. X    exit(8);
  1689. X};
  1690. X
  1691. Xbound(i)
  1692. X{
  1693. X    if(i < DIMLIMIT && i >= -DIMLIMIT) return i;
  1694. X    error ("dimension out of range");
  1695. X}
  1696. END_OF_FILE
  1697. if test 6303 -ne `wc -c <'xtroff/fontstuff/ch2vft.c'`; then
  1698.     echo shar: \"'xtroff/fontstuff/ch2vft.c'\" unpacked with wrong size!
  1699. fi
  1700. # end of 'xtroff/fontstuff/ch2vft.c'
  1701. fi
  1702. if test -f 'xtroff/fontstuff/rst2ch.c' -a "${1}" != "-c" ; then 
  1703.   echo shar: Will not clobber existing file \"'xtroff/fontstuff/rst2ch.c'\"
  1704. else
  1705. echo shar: Extracting \"'xtroff/fontstuff/rst2ch.c'\" \(4968 characters\)
  1706. sed "s/^X//" >'xtroff/fontstuff/rst2ch.c' <<'END_OF_FILE'
  1707. X/* Font translation for Imagen-style fonts (RST format) to character format.
  1708. X *
  1709. X *    Use:  rst2ch fontfile  [ character_list ]
  1710. X *
  1711. X *        Reads "fontfile" from current directory (or if not found,
  1712. X *    from RSTFONTDIR defined below) and converts it to a character font format
  1713. X *    editable by real people, and convertable BACK to rst format by the
  1714. X *    ch2rst program.  Output goes to stdout.
  1715. X */
  1716. X
  1717. X#include <stdio.h>
  1718. X#include <ctype.h>
  1719. X#include "rst.h"
  1720. X
  1721. X#ifndef    RSTFONTDIR
  1722. X#define  RSTFONTDIR        "/usr/src/local/imagen/fonts/raster"
  1723. X#endif
  1724. X
  1725. Xchar *    rdchar();
  1726. Xchar *    malloc();
  1727. X
  1728. Xchar    defascii[DIRSIZ];    /* list of ascii characters - in order */
  1729. Xchar    *charswanted = defascii;/* list of characters to print info for */
  1730. Xglyph_dir g[DIRSIZ];        /* directory of glyph definitions */
  1731. Xpreamble p;            /* set of variables for preamble */
  1732. Xdouble    fixtowdth;        /* "fix" and magnification conversion factor */
  1733. X
  1734. Xchar    *fontdir = RSTFONTDIR;    /* place to look for fonts */
  1735. Xchar    IName[100];        /* input file name put here */
  1736. XFILE *    FID;            /* input file number */
  1737. X
  1738. Xchar    charbits[10000];    /* place to store bits for a glyph */
  1739. Xint    gbase;            /* base address of glyphs in RST file */
  1740. X            /* variables used to print character */
  1741. Xint    H, W, WB, base, lbound, rbound;
  1742. X
  1743. X
  1744. Xmain(argc,argv)
  1745. Xint argc;
  1746. Xchar **argv;
  1747. X{
  1748. X    register int i;
  1749. X    register int j;
  1750. X    register int k;
  1751. X    register int l;
  1752. X
  1753. X
  1754. X    if (argc < 2)
  1755. X        error("usage: %s filename <charlist>", argv[0]);
  1756. X
  1757. X    for (i=0; i<DIRSIZ; i++)
  1758. X        defascii[i] = i;
  1759. X    if (argc >= 3)
  1760. X        charswanted = argv[2];
  1761. X
  1762. X    sprintf(IName, "%s/%s", fontdir, argv[1]);
  1763. X    if ((FID = fopen(argv[1], "r")) == NULL)
  1764. X        if ((FID = fopen(IName, "r")) == NULL)
  1765. X            error("can't find %s", argv[1]);
  1766. X
  1767. X    for (i = 0; i < FMARK; i++) filemark[i] = getc(FID);
  1768. X    if (strncmp(filemark, "Rast", 4))
  1769. X        error("bad File Mark in Font file.");
  1770. X
  1771. X    p.p_size = rd2();
  1772. X    p.p_version = rd1();
  1773. X    if (p.p_version)
  1774. X        error("wrong version (%d) of Font file.", p.p_version);
  1775. X    p.p_glyph = rd3();
  1776. X    p.p_first = rd2();
  1777. X    if ((p.p_last = rd2()) >= DIRSIZ)
  1778. X        error("too many glyphs (%d) in font.", p.p_last);
  1779. X    p.p_mag = rd4();
  1780. X
  1781. X    if ((fixtowdth = FIXPIX * p.p_mag / 1000.0) == 0.0)
  1782. X        fixtowdth = FIXPIX;
  1783. X
  1784. X    p.p_desiz = rd4();
  1785. X    p.p_linesp = rd4();
  1786. X    p.p_wordsp = rd4();
  1787. X    p.p_rot = rd2();
  1788. X    p.p_cadv = rd1();
  1789. X    p.p_ladv = rd1();
  1790. X    p.p_id = rd4();
  1791. X    p.p_res = rd2();
  1792. X/*    if (p.p_res != RES)
  1793. X        error("wrong resolution (%d) in Font file.", p.p_res);
  1794. X */
  1795. X    i = p.p_glyph - 44;
  1796. X    while (i--) if (getc(FID) == EOF)
  1797. X        error("bad preamble in Font file.");
  1798. X
  1799. X    for (i = p.p_first; i <= p.p_last; i++) {
  1800. X        g[i].g_height = rd2();
  1801. X        g[i].g_width = rd2();
  1802. X        g[i].g_up = rd2();
  1803. X        g[i].g_left = rd2();
  1804. X        g[i].g_pwidth = rd4();
  1805. X        g[i].g_bitp = rd3();
  1806. X    }
  1807. X
  1808. X    printf("fontheader\nsize %d\nversion %d\n", p.p_size, p.p_version);
  1809. X    printf("mag %d\ndesiz %.2f\n", p.p_mag, p.p_desiz * FIX);
  1810. X    printf("linesp %.2f\n", p.p_linesp * fixtowdth);
  1811. X    printf("wordsp %.2f\n", p.p_wordsp * fixtowdth);
  1812. X    printf("rot %d\ncadv %d\nladv %d\n", p.p_rot, p.p_cadv, p.p_ladv);
  1813. X    printf("id %d\nres %d\n", p.p_id, p.p_res);
  1814. X
  1815. X
  1816. X    for (l = p.p_first; l<= p.p_last; l++) {
  1817. X        j = charswanted[l];
  1818. X        if (l>0 && j==0) break;
  1819. X        if ((gbase = g[j].g_bitp) != 0) {
  1820. X        printf(":%d, width = %.2f\n", j, g[j].g_pwidth * fixtowdth);
  1821. X        H = g[j].g_height;
  1822. X        W = g[j].g_width;
  1823. X        if (H <= 0 || W <= 0) {
  1824. X            g[j].g_up = 0;
  1825. X            g[j].g_left = 0;
  1826. X        }
  1827. X        lseek(fileno(FID), (long) gbase, 0);
  1828. X        read(fileno(FID), charbits, (WB = (W+7)/8) * H);
  1829. X        base = g[j].g_up;
  1830. X        if ((lbound = g[j].g_left) > 0) lbound = 0;
  1831. X        if ((rbound = g[j].g_left + 1) < W) rbound = W;
  1832. X        for (k = g[j].g_up; k < 0; k++) {
  1833. X            for (i = lbound; i < rbound; i++)
  1834. X            printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
  1835. X            putchar ('\n');
  1836. X        }
  1837. X        for (k = 0; k < H; k++) {
  1838. X            for (i = g[j].g_left; i < 0; i++)
  1839. X            printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
  1840. X            for (i = 0; i < W; i++)
  1841. X            printf("%c", k==g[j].g_up && i==g[j].g_left ?
  1842. X                (fbit(k,i) ? 'X':'x') : fbit(k,i) ? '@':'.');
  1843. X            while (i < rbound) {
  1844. X            printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
  1845. X            i++;
  1846. X            }
  1847. X            putchar ('\n');
  1848. X        }
  1849. X        while (k <= g[j].g_up) {
  1850. X            for (i = lbound; i < rbound; i++)
  1851. X            printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.');
  1852. X            putchar ('\n');
  1853. X            k++;
  1854. X        }
  1855. X        putchar ('\n');
  1856. X        }
  1857. X    }
  1858. X}
  1859. X
  1860. X/*VARARGS1*/
  1861. Xerror(string, a1, a2, a3, a4)
  1862. Xchar *string;
  1863. X{ 
  1864. X    fprintf(stderr, "rst2ch: ");
  1865. X    fprintf(stderr, string, a1, a2, a3, a4);
  1866. X    fprintf(stderr, "\n");
  1867. X    exit(8);
  1868. X};
  1869. X
  1870. X
  1871. Xfbit(row, col)
  1872. Xint row, col;
  1873. X{
  1874. X    int thisbyte, thisbit, ret;
  1875. X
  1876. X    if (row<0 || row>=H || col>=W) return(0);
  1877. X    thisbyte = charbits[row*WB + (col>>3)] & 0xff;
  1878. X    thisbit = 0x80 >> (col&7);
  1879. X    ret = thisbyte & thisbit;
  1880. X    return (ret != 0);
  1881. X}
  1882. X
  1883. Xrd1()
  1884. X{
  1885. X    int i;
  1886. X
  1887. X    if((i = getc(FID)) == EOF) error("file read error");
  1888. X    return i;
  1889. X}
  1890. X
  1891. Xrd2()
  1892. X{
  1893. X    register int i = rd1() << 8;
  1894. X
  1895. X    return i + rd1();
  1896. X}
  1897. X
  1898. Xrd3()
  1899. X{
  1900. X    register int i = rd2() << 8;
  1901. X
  1902. X    return i + rd1();
  1903. X}
  1904. X
  1905. Xrd4()
  1906. X{
  1907. X    register int i = rd2() << 16;
  1908. X
  1909. X    return i + rd2();
  1910. X}
  1911. END_OF_FILE
  1912. if test 4968 -ne `wc -c <'xtroff/fontstuff/rst2ch.c'`; then
  1913.     echo shar: \"'xtroff/fontstuff/rst2ch.c'\" unpacked with wrong size!
  1914. fi
  1915. # end of 'xtroff/fontstuff/rst2ch.c'
  1916. fi
  1917. if test -f 'xtroff/suntroff.h' -a "${1}" != "-c" ; then 
  1918.   echo shar: Will not clobber existing file \"'xtroff/suntroff.h'\"
  1919. else
  1920. echo shar: Extracting \"'xtroff/suntroff.h'\" \(4834 characters\)
  1921. sed "s/^X//" >'xtroff/suntroff.h' <<'END_OF_FILE'
  1922. X/*
  1923. X *    SunTroff -  A program to display the output of Device Independent
  1924. X *        Troff as a window on a Sun Workstation.
  1925. X *
  1926. X *    Suntroff.h - A number of defines and structures that are needed
  1927. X *        by the rest of the code.
  1928. X *
  1929. X *    Authors - The original version of this program was written by
  1930. X *            Richard L. Hyde (Purdue)
  1931. X *            David Slattengren (Berkeley)
  1932. X *        It was nearly all rewritten, cleaned up and a more elegant
  1933. X *        user interface installed by
  1934. X *            Malcolm Slaney (Schlumberger Palo Alto Research)
  1935. X *
  1936. X *    Legalese -  This command was developed as an independent project
  1937. X *        to satisfy a need of the author.  This program may contain
  1938. X *        bugs and the user is cautioned to independently verify that
  1939. X *        the program is suitable for the user's intended purpose.
  1940. X *        The program is made available on an ``as is'' basis with
  1941. X *        all faults and without any implied or expressed warranties
  1942. X *        or support from either the author, Malcolm Slaney, or
  1943. X *        Schlumberger Palo Alto Research Laboratory.
  1944. X *
  1945. X *        I am putting this program in the Unix domain.  You are
  1946. X *        free to use it as you wish.  In return I ask two things.
  1947. X *        First, that you do not remove the names of the authors
  1948. X *        from this work.  Secondly, if you make changes or
  1949. X *        improvements to this program that you pass these back to
  1950. X *        the author so that everybody can benefit from the
  1951. X *        improvements.
  1952. X */
  1953. X
  1954. X#include    <ctype.h>
  1955. X#include    <stdio.h>
  1956. X#ifndef SUNTOOLS
  1957. X#include    <X11/Xlib.h>    /* Needed for definition of Font */
  1958. X#include    <X11/Xos.h>    /* To try and make things more portable */
  1959. X#else    /* SUNTOOLS */
  1960. X#include    <sys/types.h>    /* Xos.h includes it for X */
  1961. X#endif /* SUNTOOLS */
  1962. X
  1963. X#include    "dev.h"
  1964. X
  1965. X                    /* TYPESETTER DEFINES */
  1966. X                    /* The first four defines are probably
  1967. X                     * the only ones that need to be 
  1968. X                     * customized for a site.
  1969. X                     */
  1970. X
  1971. X                    /* Home of all the troff information */
  1972. X                    /* Hint: the standard AT&T location is
  1973. X                     * /usr/dwb/lib/font
  1974. X                     */
  1975. X#ifndef FONTDIR
  1976. X#define    FONTDIR        "/usr/lib/font"
  1977. X#endif
  1978. X                    /* Home of all the font bits */
  1979. X#ifndef BITDIR
  1980. X#define    BITDIR        "/usr/local/lib/suntroff"
  1981. X#endif
  1982. X
  1983. X                    /* Note the SunTroff program will
  1984. X                     * append to the end of this string
  1985. X                     * the printer name.
  1986. X                     */
  1987. X#define    LPRCOMMAND    "/usr/ucb/lpr -n -P"
  1988. X
  1989. X#define    FULLPAGE    0        /* Start up the tool with a width 
  1990. X                     * that is as large as a page. */
  1991. X
  1992. X#define    NFONTS        60        /* Number of Allowed Fonts */
  1993. X
  1994. X#define    MAXNAME        20        /* Length of maximum typesetter name */
  1995. X
  1996. X#define    MAXSTATE    10        /* Number of states to remember */
  1997. X
  1998. X                    /* Needs to be no larger than
  1999. X                     * than the size of the
  2000. X                     * intname character string
  2001. X                     * in the dev.h/struct font
  2002. X                     * structure.
  2003. X                     */
  2004. X#define    MaxFontName 10
  2005. X
  2006. X#ifndef    DEFAULT_TYPESETTER
  2007. X#ifdef SUNTOOLS
  2008. X#define DEFAULT_TYPESETTER "sun"
  2009. X#else /* ! SUNTOOLS */
  2010. X#define    DEFAULT_TYPESETTER "psc"
  2011. X#endif /* SUNTOOLS */
  2012. X#endif    DEFAULT_TYPESETTER
  2013. X
  2014. X#define    WARNING        0        /* Print Message and Return */
  2015. X#define    FATAL        1        /* Print Message and Leave */
  2016. X
  2017. X#define        PAGE_WIDTH        8.5
  2018. X#define        PAGE_HEIGHT        11
  2019. X#define        PAGE_PIXEL_WIDTH    (int)(SUNRES*PAGE_WIDTH)
  2020. X#define        PAGE_PIXEL_HEIGHT    (int)(SUNRES*PAGE_HEIGHT)
  2021. X
  2022. X/*
  2023. X * Fast comparison of strings - will often save us a procedure call at the
  2024. X * cost of a few extra instructions. Macro has SIDE-EFFECTS
  2025. X */
  2026. X#define STREQ(a, b)    ((*(a) == *(b)) && (strcmp(a, b) == 0))
  2027. X
  2028. Xstruct FontBitStruct {
  2029. X    char        Name[MaxFontName];
  2030. X    int        Size;
  2031. X#ifdef SUNTOOLS
  2032. X    struct pixfont    *Bits;
  2033. X#else SUNTOOLS
  2034. X    XFontStruct    *Bits;
  2035. X#endif
  2036. X    char        *FileName;
  2037. X    struct FontBitStruct *NextFont;
  2038. X    struct FontBitStruct *NextSize;
  2039. X};
  2040. X
  2041. Xstruct Typesetter {
  2042. X    char    Name[MAXNAME];        /* Name of this typesetter */
  2043. X
  2044. X    struct dev Device;        /* Ditroff Typesetter description */
  2045. X
  2046. X    short    *PointSizeTable;    /* Map Pointsize number to real # */
  2047. X
  2048. X    short    *SpecialCharacterNumber;/* Map special character number into
  2049. X                       an index for Name Array */
  2050. X    char    *SpecialCharacterName;    /* Names of each special character
  2051. X                       */
  2052. X    char    **WidthTable;        /* Width of each character
  2053. X                       (indexed by font and character) */
  2054. X    char    **CodeTable;        /* Typesetter code for each char
  2055. X                       (indexed by font and character) */
  2056. X    char    **AsciiTable;        /* Mapping between ascii (or special
  2057. X                       character number) and index into
  2058. X                       width and code tables above. */
  2059. X    struct Font *FontInformation[NFONTS];
  2060. X
  2061. X    struct FontBitStruct FontBitHead; /* All the bits for all the fonts
  2062. X                         that are known for this
  2063. X                         typesetter. */
  2064. X    struct Typesetter *NextTypesetter;
  2065. X};
  2066. X
  2067. Xextern int    size, font, linmod, linethickness, HorizontalPosition;
  2068. Xextern int    VerticalPosition, DeviceResolution, LineNumber;
  2069. Xextern float    ditsiz;
  2070. X/*extern int    SUNRES            /* Dots per inch on Sun Screen */
  2071. X
  2072. Xextern char    DeviceName[];
  2073. X
  2074. Xextern struct FontBitStruct *CurrentFont, *VirtualLoadFont();
  2075. X
  2076. Xextern struct Typesetter *UserTypesetter, *OutputTypesetter, *LoadDevice();
  2077. END_OF_FILE
  2078. if test 4834 -ne `wc -c <'xtroff/suntroff.h'`; then
  2079.     echo shar: \"'xtroff/suntroff.h'\" unpacked with wrong size!
  2080. fi
  2081. # end of 'xtroff/suntroff.h'
  2082. fi
  2083. echo shar: End of archive 7 \(of 18\).
  2084. cp /dev/null ark7isdone
  2085. MISSING=""
  2086. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  2087.     if test ! -f ark${I}isdone ; then
  2088.     MISSING="${MISSING} ${I}"
  2089.     fi
  2090. done
  2091. if test "${MISSING}" = "" ; then
  2092.     echo You have unpacked all 18 archives.
  2093.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2094. else
  2095.     echo You still need to unpack the following archives:
  2096.     echo "        " ${MISSING}
  2097. fi
  2098. ##  End of shell archive.
  2099. exit 0
  2100.