[alt.sources] Psroff 2.0 Part 10 of 16

clewis@ecicrl.UUCP (Chris Lewis) (11/17/90)

Submitted-by: Chris Lewis <clewis@ecicrl.uucp>
Archive-name: psroff2.0/Part10

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents:  LASERFONTS fonts.lj/S.14.pk.UU man/cat.5.S man/psroff.1.S
#   utils/dumpft.c utils/fonts/cmbx10.pk.UU utils/fonts/cmr10.pk.UU
# Wrapped by clewis@ecicrl on Fri Nov 16 23:36:44 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive 10 (of 16)."'
if test -f 'LASERFONTS' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'LASERFONTS'\"
else
  echo shar: Extracting \"'LASERFONTS'\" \(7411 characters\)
  sed "s/^X//" >'LASERFONTS' <<'END_OF_FILE'
X	How to build Fonts and Width Tables for your Laserjet
X			2.1 90/07/18
X
XThis readme presents a general discussion on how to build fonts
Xfor psroff.  The first part gives a complete description of what
Xneeds to be done/how it's done, and you can skip to the second
Xpart "AUTOMATING THE WHOLE DURN THING" if you want to use my facilities
Xfor doing all this stuff without really needing to understand what's
Xhappening.
X
XPsroff has been designed to work with HP SFP or TeX PK format files.
XMost fonts are called "normal" (Eg: R, I, B, etc.) which means that
Xthey have ROMAN8 encodings.  Thus, HP SFP ROMAN8 SFP fonts can be
Xused as-is for psroff normal fonts (aside from copying them from
Xfloppy, giving them the right names, building width tables).
XOn the other hand, the troff "S" font is a special font that I
Xsupply which has (nominally) MATH8 encodings.
X
XKnuth's TeX PK fonts cannot be used "out-of-the-box" because the
Xcharacter encodings are different, and the characters that psroff
Xneeds are scattered across many different fonts.
X
XDo not despair, all is not lost - you can run psroff *purely* with
XTeX fonts, with the help of a little pk2* magic.  The supplied
XS font is an example of the result of this, and the S fonts contain
Xa few characters you'll need if you wish to build your own fonts.
X
XIn the subdirectory utils, there are several important tools:
X
X	1) pk2sfp - which converts PK's and SFP's into SFP's,
X	   merging multiple ones and possibly with encoding changes.
X	2) pk2ditwid - which reads a font file and generates
X	   font width information.
X	3) maps/* - encoding files for converting from PK encoding
X	   to ROMAN8/MATH8 encodings.
X	4) fonts/* - sample fonts.
X
X(The following discussion assumes that you've built and installed
Xpsroff).
X
XFirst, examine utils/Makefile entry "buildcmtrf".  If you run this,
Xthe Makefile will create several cmtrf*.sfp files under the fonts
Xsubdirectory.  These cmtrf files are a subset of Rick Richardson's
X"cmtrf" font which contains characters not in TeX's PK files that you
Xwill need to build fonts for psroff.  Rick has graciously permitted
Xdistribution of the cmtrf font with psroff, and I've placed the characters
Xin the distributed S font.  Buildcmtrf uses the "-m" option of pk2sfp
X(see the manual page) to extract characters named in maps/S.cmtrf
X("S-font-to-CMTRF") and produce cmtrf<pointsize>.sfp files.
X
XNext, examine utils/Makefile entry "testmerge".  What this does is
Xrun "pk2sfp -m" to generate several different fonts at the 10 point
Xsize.  "testmerge" also invokes sfp2pk (if you have it - it comes
Xwith Rick's jetroff package) to convert the resultant SFP to PK format.
XEach font created by testmerge is a combination of several different
XPK fonts.  The invocations of "pk2sfp -m" consist of something like:
X
X    pk2sfp -m <mapfile> <fontfile> <mapfile> <fontfile>....
X
XWhere each map file contains a description of what character in the
Xfollowing fontfile is needed and what encoding should be used.  The
Xnaming convention of these map files is:
X
X	<from>.<to>
X
XWhere "from" is usually a PK font name (eg: "cmtrf") and "to" is usually
Xeither ROMAN8 (for normal fonts) or MATH8 (for symbol fonts).
X
XThis is how the 10 point R font was built:
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmr10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		> fonts/R.10.sfp 2> fonts/R.10.LOG
X
XA combination of cmr, cmsy, cmtrf, cmti.
X
XNOTE: psroff will work equally well with SFP's and PK's.  There is
Xa substantial space advantage to converting SFP's to PK's (if you have
Xsfp2pk), but it is *not* necessary.  Further, you can always compress
Xyour SFP's in place, and psroff will automatically invoke compress
Xwhen it needs to read them.  It's only important that you get the
Xnaming convention correct (<troffname>.<pointsize>.<pk|sfp>) and
Xthe lj.fonts file set correctly.
X
XSo, the testmerge entry of the utils/Makefile creates R, I, B, C, S,
XH, etc fonts at 10 points.  Only 10 points.  You could operate
Xwith these only - but you'd only have one size.  Yuck.  (I distribute
XR, I, and B only at 10 points so that you can see that psroff actually
Xworks and not get discouraged before trying to obtain more fonts).
X
XThis is where it gets interesting.  TeX fonts usually come (as in the
XU of T distribution) in the following naming format:
X
X	<TeX Name><designsize>.<resolution>pk
X
XEg: cmr10.329pk.  What this means that if the characters were printed
Xon a device with a resolution of 329 dots/inch, the characters would
Xbe 10 points high.  However, the Laserjet is 300 DPI, right?  If you
Xwere to print the font at 300 DPI, the characters would appear to
Xbe (329/300 * 10) points = 10.996... points (11 with a small error),
Xwouldn't they?  Thus, you could use cmr10.329pk to generate a 11 point
Xfont.
X
X[NOTE: if the resolution is omitted, it is assumed to be 300 DPI -
Xas in the utils/fonts subdirectory]
X
XBy finding cmti and cmsy (cmtrf11.sfp was built by buildcmtrf
Xremember?) in the same fashion where the design size and DPI are *close*
Xto 11, you can build the R font at 11 points simply by substituting
Xthe "fonts/*" names in the pk2sfp -m command line with the appropriate
Xfont names (the map files don't change).  Thus, you can build R, I, B
Xin several different point sizes.  Note: sometimes you can't find
Xa TeX font with a DPI/pointsize close enough to the desired point size.
XThe S fonts were built with a maximum error of approximately 7%.
X
XAUTOMATING THE WHOLE DURN THING:
X
XThere is a perl script in utils called "calcfonts", which if invoked
Xin the top level make via:
X
X	make buildljfonts
X
XWill traverse every directory you've specified for PKFONTS during
Xconfiguration of the top-level-makefile, select the best fit for
Xeach font size, and build as many psroff font files as it can, placing
Xeach font in $NEWFONTS.  Preferably you should have a sfp2pk utility
X(so that the fonts can be created as pk's - specify in the Makefile),
Xbut if you don't SFP's will be generated.  $NEWFONTS/lj.fonts.new
Xwill contain some new replacement entries for your lj.fonts file (make
Xsure that the order is R, I, B and S).
X
XAfter running buildljfonts, issue:
X
X	su root
X	make installljfonts
X	^D
X	make register
X	su root
X	make installwidths
X
XThe first make will install all of the new laserjet fonts in utils/newfonts.
XThe second builds the width tables all over again, and the third reinstalls
Xthe width tables.
X
Xcalcfonts can be user-modified to emit more fonts.  Near the end there
Xare "do gen" invocations, eg:
X
X    do gen("troffname", "English name", "HPLJ escape sequence", "set",
X	"pkname", "pkname", ....);
X
XTroffname is the name that the font will be known by to psroff/troff.
XEnglish name and HPLJ escape sequence are for the lj.fonts file.
XEach "pkname" is the name of a PK format file used to generate part of
Xthe font, and will be MERGED with the map file called "pkname.set".
X"set" should always be ROMAN8 (except for building S fonts when it
Xshould be MATH8).  If the pkname contains a slash (eg: cmr/foo), it
Xmeans merge cmr PK's using the second token as the map name.  Eg:
X"cmr/foo" means merge cmr's using "foo.set".  The escape sequence is
Xonly used if you've selected a point size which is marked "b" (builtin),
Xor is marked "n" (non-existent), and the bestmatch code in lj.c didn't
Xfind an existing font (same typeface) at a "close enough" pointsize.
END_OF_FILE
  if test 7411 -ne `wc -c <'LASERFONTS'`; then
    echo shar: \"'LASERFONTS'\" unpacked with wrong size!
  fi
  # end of 'LASERFONTS'
fi
if test -f 'fonts.lj/S.14.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.lj/S.14.pk.UU'\"
else
  echo shar: Extracting \"'fonts.lj/S.14.pk.UU'\" \(7707 characters\)
  sed "s/^X//" >'fonts.lj/S.14.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 fonts.lj/S.14.pk
XM]UD``.``````````!":N``0FKK!D(0```"TK._TKW2_</]L]OSV_/;XCV_/;
XM\]OSV^(]OSV_/;\]OSQBQSQCQSQ4QSQ!%,4\,B3%/"%$Q#R4PSR4PCRTP3R_
XM3`/-2SS4H\])//](/1]&/3XD0]7T(]?WV&VEVDW//-#`:R0````]-AG]&)?9
XM?2T-3+T]!S652;63<Z>4T"4\=STR0M)E/4(RU&,]8B+583UR$M:MA->-E-AM
XMI-EME-IMA-F-=-BM8A+7,6U2(M8S;4(RU#5M(D+3-WPU+027HW.5N465-]#3
XMO-30TGV7D'`?)0```"\H(_T?BDFVF>.`F6FT#Z`@#Z2;:9XX"9:;2*#`4B8`
XM```O)QG]&(;75JTW31Q71FI)*E@Z+%8Z/05#LM)2/"TU$[+5?"U6T"UET"UT
XMT"UUPM=K+6?"U#%;+4,EHM,T6BT39:+#A9.4IH15R6K3>&UUP$<J````+QP=
XM]QP2VEV3$]=!350TTT5-%'3$E*2TA-!&321$U$)-:-AMI-IMB-9"341$TD9-
XM!(2TI)3$=-%%330TU4(]=]DQ+:)H"2T````O)`/[#]6P.CP````L(2'['M(]
XM!<Y\QLULULULULULULULULULULULUL]-%M%M%M%M%M%M%M%M%M%M%M%M%M%]
XM!=(PN#H]````+"$A^QX])=%M%M%M%M%M%M%M%M%M%M%M%M%M%M%,]LULULUL
XMULULULULULULULULULULY=`](,@B0P```"(=*?TH_?9-!F33-O34)DU1;TU2
XMY%36'MI4W%UOTM&P9$0````N*"G]*,?RV?37;6$4U1)=0333%%TA5-$670%T
XMSQA<X93-&ES!M,L<!<H<%,D<)<@<-,<L-<8<5,4L5<0<=,,L=<(<E,$LE<`<
XMM+++6AS4DLU8\<]'\=%%\=-#'44MH0-`P%](````*R4I_2C1G=-SV3L]5-!-
XM(]0]!-1+362?381TVD5=I43<0^)=Q23>05WJ]!U!2N)-9*]!U!2MY13>0N)=
XMQ33<1%VE5-I&785TV$E-9+3430/4/23035.SV3<]V='`44L````F(BG^*-/B
XM(!+B0!!M_Q%-X27=\33<%%V_%4VA9=GQ=-@877\936&EU?&TU!Q=/QT$TAT5
XMT?'230'37/'42QU5KQUDDM98+71EU6/YT,!P'TX````E(2G^*!XI<N0940M_
XM&+&$XHV$\8L0U^09<Y7=F!%0````*2,I_2C<ZZ5*=%^D>D"X6%(````H(BG]
XM*/U23)<ERT-<LT3,)%RR5,PE3+)5RB9,L67*%UR1A,D872723272723272/4
XM'4\=0=0=3QRAD<L8',%QS"]AS24<TE'.)!SC,<U3'*@M0=40P#)3````%A<?
XM_QC(S0A71CP6/6+7+7/6XCUN)-=-9=5]1]2-.=.=.-1]5M;TUO/2$STGU4FP
XM.50````K)2G]*%7%6)P97`JSPHP2-E=6,2I&.CP$0\`L$T/`+!,SP1PS(]$R
XM+3(3T_;375[*34;._$K`4%4````H(BG]*)_3VF`0Y$WJV$)"33-44\1D9)1T
XM='2$A%24E#64E2]*2D'D6DI?%*2D)925-)245(2$='1TE&1DPU13TT)"38K>
XMY$`0;:_3D+!$5P```"LE*?THO\3.;4Y$Q%P$M22TI%]*24?H24A).4A)XDA'
XM2SA'/`1T9,$W1CPS9%/%-40\<T0SRD%!3.C3Y$U&SOQ*P%98````*"0I_BC0
XMK:2$U4Q-(],]`]4[/7.4UT=-E%]=E3YUVU--M$795?391EUU=-=)\]<[\]4]
XM`M4M$],]+RTRCQ@M$H'Q&!T1@2&"PH$B@<&"*\L_K**X95D````S+"C])@//
XM'>-M0D;3-6TB==$H;0*5SRILXK7-+`;,+!7++";)/#7)+$;'/%;&+&;%/';$
XM+(;#/);"++7!+,;`+-6RSFHL]9+0:"T5<M)E/352U&,]5B+683U_C9;;]-TL
XMD,!C6@```"`>*OTHT7U\U$9-(K3"T#LM(Z302%T3A=%(/23=3=XUN56<182"
XM-62R)530$55-$15%TF1--C735$U%-=13734_744UU$1=-4341?331DTD=-(Y
XM30.SP\2CT49=2]A],)!%7````"\D,OLEN"MDM&LFLFLFLFLFLFLFLFLFLFLF
XMLFLFLFLFM$MFMFMFMFMFMFMFMFMFMFMFMFMFMFMFMEMTMS`!+[@=X)A$7@``
XM`"\D,OLE*X2V:V:V:V:V:V:V:V:V:V:V:V:V:V:V:V:V2T:R:R:R:R:R:R:R
XM:R:R:R:R:R:R:R:S6T2V,`%0N!W@B`E?````'1T#`/+>P$QA````)R$9_1BW
XMV[UU5*)DA()DI')4M')$T$4D70121-%$)%T40D714B1=)2)%TE$E73=5TV9-
XM17XDU$A-)I30>CLS-21&5$,FQXA[5,!D8@```"(B,P`GVFW+V%5-8Y34+#TR
XMT$T2T4T"TD_"TT^RTTLM0\+32RTTPG<4T/)LT"AQ3"TTSRU$KC+52>,M58\]
XM19/42CTTI=%:(2T4LB+$PC.$T"70T2>=/R`2XR`2XR`2(!/`16,````?'R7_
XM&(;2)JT"7+)="B72DD2%<D/#<D+1)B0M(U)"TR0E'4)"VC(MPB+<XB$MWTWN
XM(]_B+?\]\M_C/>XCW_(!`='`260````;%RC])]%=.=`U.D@I.2@]9-;SU_36
XM75?4?4?5;2G%%J1&A'1TA&2D1:1$PS]<,O70(_7#--`D3#3TPE2R=)-T@Y1C
XMN]%[P"5E````&1,9_1BXFG703131313170]='2/3/E72]---,Z%D9&NG4,!'
XM9@```!L9,_XGT^,MJ-.M&M`R;0/8/8/8/8/8/9+9/8\]CSV//8XSV$V.,]GB
XM39387877C5K3S2O4G6?839XCTA8]$T/3C660P#QG````'QLE_QA%EF=I0C0S
XM5#)$$W025I025;,25:95ME3$]TQ.-DQ&XTQ&XTQ&3$@M!-KTV>--GC393;*`
XMP$=H````'!<H_2?173C1-#PU.S<Y.#A(3V24]4I/1+0UI32UXB6U%;4OV"6U
XM'B6U);0UI3]+1/2D7TE&2$@X.3<[-3PT/1C371#0(VD````6$!G]&'+?2^-+
XMXDOC2_3$@A22%((4DA2",W)$0VF%@,!`:@```",=&?T8<M!)2GA(ET@R2$<D
XM.48M1$/41"UD,M=!/8G6T=)$C02%Q)2TM*XDM&+Q3#8B3$0C3$,C31=2U$7`
XM3VL````D'BC])W3<?=7=7=3=7=3=]=U-U=U-WUW4W5W4W?7=3=]=MMJ-@R37
XM,UU31=0V33-UT3E-!)6TI:3$E-!7321DTU1-13360DUU(ME0P#]L````)2`E
XM_ABBT2T/3$OC3$OC3$OC3$M,3/3$4E2U4D6T4E6E4E:"%$)74R0R5!I'9#:$
XM?TWN--[C3>0!`@$`P#AM````'AP9_1A5TB+YT45=!&]-%%]=!&]-!&7$=;2$
XMPY2TA:25E*24M(/%<]!5311$TT)=.M5]A-O`2FX````;&#/_)]+C+9G,O0E3
XM:5U5U5UDUO75XUU_7748O]"C**/7/7/7/8+8/8+8XSV$UUUVU8U*T[T=#1O3
XMG5;738/0%SQ$/1G49]`T;P```!T8&?T8MP$;M524A'249+1$Q#7$--45U174
XM'B75%=0O35),4TQ$2T9)2#A*1%R@$FS`.7`````C(!G^&'VVWDWDWS1B8K."
XM4K\I)BV28M@U/8\F/7\V/6XC<]5'/5.$T_2$TDE=%*31.TT3PJ#`07$````?
XM'"7^&--M>M1$32-TT#E+.DH[24M)/%=,5TQ'XDQ73$?TQ73$A+2/6DEH.T$E
XM2T.<1%TO3:XTVN--I-PMP,`Z<@```",?&?T8O6K9?:?;9F702EM,2DT$I-$Y
XM32.4T4CC322$T4D]))/12CT3M,/0.ST4D]-&36K:;6#`)W,````;'!G^&'UV
XMVDVDVS1RT3DM#RH]SRW.(]OB/;]-OSV^)-I-PM7`/W0````A'1G_&&32)GT$
XM0S.V(E2F(E2U$F3$$E30;V31*/32*$T2CTTBA-$H32*/31*4T"I,+$LL23T5
XM8]2MA[#`7'4````D'C/])]CRWN,M[C+>XRWBVLT]/%0D2D4F1T<G14@H-$DH
XM0SDI0DDJ,4HJ,4HICBHJBBE!22I!22HR22E"22A$."A%1R='1B9)121-#2U+
XMVO+>XRWN,MXM<,!C=@```"8A)/X85=D3C7(C-=0C)%TR,F71+030+16RTTHM
XM18+55SUD8]=5+91"VD,MM1+=;>]0$$WUWGW#%-PB7:(UV25-@F76)UU2E=,J
XM72+$T2T%P]%5(STE4C+44R,M:#+95+!I=P```"@D,_\GSBU>,M7C+5XRU?+&
XM3`*"9[)T0S.2=B)4@G8B5(*%$F2"E!)4@J;V2"LH22LH2"P"A(*RCTDK*$@K
XM*$DJ.$DJ*4DI*D@I+`1R@L%')RPU4E/%8B1,C"S9TBU>,M7C+5\LD,!%>```
XM`"8B&?X88=HG+913V&0MEC+;4RW$(MTS+>(BT"T"+RQ,(>(L3"(L/",L.S,L
XM.R0Z.S0Y635&AD;??!T(L[J5C16%P"@)>0```!`#._HKWL`J>@```!P3._PK
XMTDQ-$](](]+M8](](](]%,3534/4/4/4[6/4/4/4/4350,@J>P```!P3._PK
XM3534/4/4/4[6/4/4/4/4353$T3TCTCTNUCTCTCTCT4Q-(+`Z?````"\H'/T;
XMA<X6K*),')(\/((F5L8R2EQ#$\%<(R/"7!,3Q%I"/&96(LC#,LG!0LJG'-4`
XM&EVA`T`X$7T````O*!W]'(P6(/VT#]8AC,@Y?@```!P5._TK+6\];B/6XCUN
XM(];C/6XCUN(];B/6XCUN(];B/6XCUN(];B/6XSUN(];B/6XCUO/6(+!D?P``
XM`"\I*OTHAL%L&YN<)<)U935E5*04I$/`,3P#/SPEPC(\,\,Q\\0\1L4L1N37
XM/Q/5,_/3-?/1-SSSA,U)3+2TR4P4QTPTQ4Q4PTQUM<E97,1TST5-%#33,SU3
XM$]9]==GB/'"P):$````>%S/])[+(/']<5\.<$Q,3LR,CDS,S9$-$)&-D$8.!
XMOMHZH"6B````/385_1C/\MD]DMD]D]D]D]E#VA!`U4UCUSUSUSV"V#V/*K`E
XMHP```!X7,_TGKMH[&#@11C9"1#1&,S,Y,C([,3$\&<-\7UQSR2J@):0````]
XM-A7]&*\M@]@M@]<]<]<]9-4$`=HTV3V3V3V3V2V3V?+/P$.F````'AL=_QP2
XMVTVFV(UC%M0S;2-6T#=<.5HZ:#QF/19#TV(]6==]51/38CT60\9CIH.5HW7#
XM5M`S;2,6U(UFV$VRV\!$J````!X;'?\<W"VDV%UXU&$])C/093Q7.EDX:C9L
XM-&T3)M,Q75?7,5U3)M,T;1-FPX:CI9/%<]!E/28SU&$]:-AMI-P@B`FP````
XM'1T#`"S>P".U````*2(D_2(2`07MO?/Q/=,SVS1-E%371UTUEZ?-?3T]BL#`
XM([8````I(B3](LK8T]/7QZ>5TU=-=%391#VS/SW3'ML]\Q(!`L`SMP```"D>
XM)?L@T=.]:=AWV5VTW$W$W3W?/=XCW>(]X%#BW^(]_SWSWDWDWDWEW7W-B];1
XMT[`PN@```"\D)?L@PLJ\V<]WT%TDTTTTU#U//4XCU.@];B/6\]8]5-5-5-5=
XM1]//O-PLH+`QNP```"\D)?L@')PLW`SM-]1=5-5-5-4];SUN(];H/BU#U//4
XM/433333270>,Z<W`R<*P-KX````O)#+[)<+*O-G/=]!=)-----0]3SU.(]3H
XM/6XCUO/6/535353574?3S[S<+*`!3M8=<M:P-[\````O)#+[)1R<+-P,[3?4
XM75353535/6\];B/6Z#XM0]3SU#U$TTTTTET'C.G-P,D`%:UBUQUB>`S(````
XM*2(0_13>Z$ESP![,````'A<7_1F'T;K2?47]8_V!"4\=@_UEU'TJO1>`H&C-
XM````/38U_2B[K-M\>[PXJ+]K=KMKMKA;];9,-+1,5+),=+!,E*/+.3S3=,U&
XM//->(]$SXCTS'J/5/B$],SXCT34\\V3-1SS3D\LZ3)2P3'2R3%2T3#2V6_6X
XM:[:[:W:_BHP[O'M\VKNP'LX````;%#3])Y+%Y4Q>4J1"1!W!1"1*Y"Q>R4Q>
XM<I"P+,\````;%#/])Y+%Y$Q>0I<B+6(B?DDL7D3%+:+%Y$Q>0I<B+6(B?DDL
XM7D3%*<`[U0```!D9-?THU4UVU3,M0C3BTC)=$T/2XSV.)-CSV.5-?F37Y4V/
XM/8XDV.,]$U/0XE,]%#/3)"U7UDU0P%+8````'A<P_2O4+7\]!1.\I%23A'1V
XM8X9?.3$T.#(S2#)"\Y,S(X-#'T@TCC<UCC8VCC4WCT.$$T.#+S,Y,O0CA#\Q
XM.35H-F='1TE%2LNL\]<M0+"AV0```#@Q-?THR)V</4Q]!Y?-7#7*7'7'7)7%
XM3-3#3/3!312TTTH]4Y\]<W\]DU/';"-#Q#8L`S/$*AP#(\,J.S(\(Y2S(\$Z
XM2S$\([+!;\$\]N7`3/,3M,XR/`/.,CP$S3(\$\(:,SP#PADT/!/`&C4\$L`9
XM-CPBH:-SPC8J.#Q'P#D]4Z332TT4P4STPTS4Q5R5QUQUREPUS7E]#'U,/9G(
XMB`W:````(AL<_1O;Z<G-L*@,X````#(1.^LJ!3[8H*@,X0```#(1.^LL[8>@
XM3,`AX@```#(3.^LJTST5T&QL;&QL;&SVQL?&Q\;/?&SC>^`6?,`JXP```#(3
XM/?<LSM1^*WM[?&QL:WMK>FT$TFTGT6T7T6T6T6T'T'T.)]#M1[@GY````#(3
XM.^LL[7?!XWP6P??!;!?!;!?!;"]L)L)L)L)L)L)L)L)<0Z@,\````#(1._4J
XM!,[8IZ`,\0```#(1._4LKM@%,+@G\@```#(3._<J/$7";";";";";";";"]L
XM)L%\%L%\%L'WP6P>-\'M=\@J\P```#(3/>LL[4?0XGT'T'T&T6T6T7T6T7TF
XMTDT&I[:WML;&Q[>^)[[4?,`A]````#(3._<LS@%GX[?&SWQL?&Q\;/;&QL;&
XMQL;&T%T3TQ@*]0```#('/>LL#Y"H"?8````W-P$`$-R@0/L````]-B/]'[H=
XMD]=-9-<]=-9-9-9-;-LL^PT*357473?1C3?7;7;7787778S[+.L\RU38/838
XM38/83838/9'%V`O\````(AL<_1L`+V"@0/T````]-B/]'\4=D]A-A-@]A-A-
XMA-A+3-LL^QT-A-A=A==]:-1])M-M1=1=5:S['.L\S637/73637/73637/9&Z
X:4!3^````+R@I_2=M*`YK-LTN:6TVS2#U]O;[
X`
Xend
END_OF_FILE
  if test 7707 -ne `wc -c <'fonts.lj/S.14.pk.UU'`; then
    echo shar: \"'fonts.lj/S.14.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'fonts.lj/S.14.pk.UU'
fi
if test -f 'man/cat.5.S' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/cat.5.S'\"
else
  echo shar: Extracting \"'man/cat.5.S'\" \(7574 characters\)
  sed "s/^X//" >'man/cat.5.S' <<'END_OF_FILE'
X.\"@(#)cat.5 2.1 90/07/18 16:47:25 (Henry Spencer/Chris Lewis)
X.TH CAT 5 local writeup
X.DA 4 April 1981
X.SH NAME
Xcat \- C/A/T phototypesetter code/width tables
X.SH DESCRIPTION
XThe Graphic Systems C/A/T phototypesetter is driven by sending it a
Xsequence of one-byte codes
Xwhich specify characters, fonts, sizes, and other control information.
X.PP
XThe C/A/T's basic unit of length is 1/432 of an inch (6 units to a
Xtypesetter's ``point'').
XThe quantum of horizontal motion is one unit.
XThe quantum of vertical motion is three units (1/144 of an inch, 1/2 point).
X.PP
XThe top two bits of the code classify it as one of three major
Xtypes:
Xan \fIescape\fR code (top bit 1),
Xa \fIflash\fR code (top bits 00),
Xor a control code (top bits 01).
XA code of all zeros is ignored;  a code of all ones is illegal.
X.PP
XA flash code specifies flashing one of 63 characters, as given by the
Xremaining six bits.
XSince this is not enough to specify all possible characters, or even
Xall characters in a single font \(em there are 108 per font \(em
Xvarious control codes (described later) select a font and either
Xthe Lower or Upper half of the font.
XThe Lower half is the first 63 characters of the font;  the Upper
Xhalf is the remaining 45.
XA flash code of 46 or higher in the Upper half is illegal.
X.PP
XAn escape code specifies horizontal motion.
XThe size of the motion, in horizontal quanta, is the one's-complement
Xof the low seven bits of the code.
XThe direction of the motion is set by control codes.
XHitting the right or left margin limit switch is illegal and will
Xcause the machine to stop.
XThe machine starts out, after initialization, hard against the left
Xmargin limit switch;  an initial escape of 16 units \fImust\fR
Xbe given before starting work, and the position after this motion
Xshould be the limit of all future leftward motions.
XFrom this point, the distance to the right margin limit switch
Xis about 7.5 inches.
X.PP
XA code with the top three bits 011 is a \fIlead\fR code,
Xspecifying vertical motion.
XThe remaining five bits are the one's-complement of the size of
Xthe motion, in vertical quanta.
XThe direction of motion is set by control codes.
XThe amount of vertical motion is, in principle, limited only by
Xrunning off the paper in the upward direction and by the limited
Xcapacity of the output cartridge in the downward direction.
X.PP
XA code with the top four bits 0101 is a size-change code, which
Xspecifies movement of the lens turret and the doubler lens to
Xchange point size.
XThese codes are as follows:
X.PP
X.RS
X.nf
X.ta 2c
XSize	Code
X
X6	0101\|1000
X7	0101\|0000
X8	0101\|0001
X9	0101\|0111
X10	0101\|0010
X11	0101\|0011
X12	0101\|0100
X14	0101\|0101
X16	0101\|1001
X18	0101\|0110
X20	0101\|1010
X22	0101\|1011
X24	0101\|1100
X28	0101\|1101
X36	0101\|1110
X.DT
X.fi
X.RE
X.PP
XSize changes involving the doubler lens alter the horizontal position.
XChanges from single to double sizes should be followed by a forward
Xescape of 55 quanta;  changes from double to single sizes should be
Xfollowed by a reverse escape of 55 quanta.
XThe single sizes are 6, 7, 8, 9, 10, 11, 12, 14, and 18;
Xthe double sizes are 16, 20, 22, 24, 28, and 36.
X.PP
XThe control codes with the top four bits 0100 specify miscellaneous
Xcontrol codes, not all of which have valid meanings.
XThey are:
X.PP
X.RS
X.ta 6c
X.nf
Xinitialize	0100\|0000
Xstop	0100\|1001
Xupper rail	0100\|0010
Xlower rail	0100\|0001
Xupper mag	0100\|0011
Xlower mag	0100\|0100
Xtilt up	0100\|1110
Xtilt down	0100\|1111
Xupper font half	0100\|0110
Xlower font half	0100\|0101
Xescape forward	0100\|0111
Xescape backward	0100\|1000
Xlead forward	0100\|1010
Xlead backward	0100\|1100
Xsoftware cut	0100\|1011
X.fi
X.DT
X.RE
X.PP
XThe \fIinitialize\fR code causes leftward motion to the left margin limit
Xswitch,
Xand sets the following modes:
Xescape forward, lead forward, lower font half,
Xlower rail, lower mag, tilt down.
XNote that the left margin limit switch does not define a precise
Xposition, and hence reinitializing the machine
Xwill destroy precise left-margin alignment.
X.PP
XThe \fIstop\fR code stops the machine, which must be manually
Xrestarted (normally after changing output cartridges);
Xthis code should be used only at the end of a run.
X.PP
XFonts are selected by the combination of \fIrail\fR, \fImag\fR, and
X\fItilt\fR.
XThe tilt codes do not exist on the 4-font C/A/T;  this is the only
Xuser-visible
Xdifference between the 4-font and 8-font machines.
XThe correspondence between rail/mag/tilt and font number is as follows:
X.PP
X.RS
X.nf
X.ta 2c 4c 6c 8c
Xrail	mag	tilt	4font	8font
X
Xlower	lower	up	1	1
Xlower	lower	down	1	2
Xupper	lower	up	2	3
Xupper	lower	down	2	4
Xlower	upper	up	3	5
Xlower	upper	down	3	6
Xupper	upper	up	4	7
Xupper	upper	down	4	8
X.DT
X.fi
X.RE
X.PP
XThe \fIsoftware cut\fR code should not be issued to the hardware, but
Xis used by local spooling software to indicate places where it is
Xlegal for the spooler to break output between pages.
XThis code should be followed by an \fIinitialize\fR code.
X.PP
XA complete C/A/T file should begin with an \fIinitialize\fR code followed
Xby an \fIescape\fR-16 code,
Xand should end with 14 inches of trailer and a \fIstop\fR code.
X.SH "CAT WIDTH TABLES"
XBack in the origins of CAT troff, the width tables were generated
Xby compiling a C source file that contained a initialized array of
X224 characters.
XEach character was formed by or'ing the width of a character
X(width of a 6 point character in 1/432's of an inch) with kerning
Xinformation shifted left 5.
XThe kerning information was generated by or'ing together a "2" for
Xascenders and a "1" for descenders.
XThe width of a character had a maximum of 63.
X.PP
XIn the Version 7 troff (and many later troff's, eg: Ultrix and Sun),
Xthe a.out header produced by the compile/assemble step was left on
Xon the front of the file when installed in /usr/lib/font.
XIn these cases, the supplied troff knew to skip the first
X"sizeof(struct a_out)" bytes (usually a magic constant instead
Xof include "a.out.h")
Xbefore reading the table.
XOther versions of troff (eg: Xenix) have special width table builders
Xthat produce width table files that do not have any extraneous gunk.
X.PP
XIf the vendor supplied width table files (eg: /usr/lib/font/ftR) are
Xprecisely 224 bytes long, HEADERSIZE should be 0.
XIf they're not 224 bytes long, you'll have to have HEADERSIZE set properly.
XUltrix and Sun (and probably all other BSD-derived 32 bit machines)
Xuse HEADERSIZE 32.
XI think Version 7 Unix on PDP/11's was 14.
X.PP
XRather than document which character is which entry in the font tables,
Xthe interested user should consult the
X.B cattab.c
Xsource file in the
X.B psroff
Xdistribution.
X.SH "PSROFF NOTES"
XHenry's manual page doesn't document the flash codes for each character,
Xnor the width table indices, but in
Xthe \fIpsroff\fP source code, they are listed in \fIcattab.c\fP.
X.PP
X\fISoftware cut\fR isn't used in \fItroff2ps\fP, because it only
Xexisted at University of Toronto ages ago - \fItroff2ps\fP calculates
Xpage breaks based upon y position and the page length (which is why
Xit's really important to get \fItroff2ps\fP and \fItroff\fP to
Xagree on how long the page is, ie: -rL/.pl etc).
X.PP
XBerkeley troff introduces one or two extra magic CAT codes which are
Xdocumented in the
X.B defs.h
Xsource file in
X.BR psroff .
X.SH HISTORY
XThe \fIsoftware cut\fR code is a local invention.
XThis manual page written at U of T by Henry Spencer.
X.PP
XThe "PSROFF NOTES" and "CAT WIDTH TABLES" section written by Chris Lewis.
X.SH BUGS
XThe documentation and the hardware disagree on the initial tilt setting;
Xthe above describes the hardware.
X.PP
XIt's not the fastest or most modern typesetter.
END_OF_FILE
  if test 7574 -ne `wc -c <'man/cat.5.S'`; then
    echo shar: \"'man/cat.5.S'\" unpacked with wrong size!
  fi
  # end of 'man/cat.5.S'
fi
if test -f 'man/psroff.1.S' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/psroff.1.S'\"
else
  echo shar: Extracting \"'man/psroff.1.S'\" \(7454 characters\)
  sed "s/^X//" >'man/psroff.1.S' <<'END_OF_FILE'
X.\"Copyright 1988 by Chris Lewis 2.1 90/07/18
X.TH PSROFF 1 local
X.SH NAME
Xpsroff,ljroff,xxroff \- troff replacement for PostScript or other printers
X.SH SYNOPSIS
X.IB xx roff
X.BI "[-T" xx "]"
X.BI "[-d" ptr "]"
X.BI "[-rL" length "]"
X.BI "[-P" prologs "]"
X.BI "[-D" deb "]"
X[-X] [-M] [-F]
X.BI "[-R" nn "]"
X.BI "[-O" off "]"
X.BI "[-Y" off "]"
X.BI [ troffopts ]
Xfiles ...
X.SH DESCRIPTION
X.I Psroff
Xis functionally equivalent for
X.I troff
Xfor printing on PostScript or HP Laserjet printers.
X.I Troffopts
Xcan be any of the normal
X.I troff
Xarguments, in particular -m directives for specifying macro package.
XNote that the semantics of "-t" are changed - it means send the Postscript
X(or HP Laserjet) output to stdout rather than the printer.
X.P
XMost of the options you shouldn't need to use, except for
X.IR troffopts ,
Xand are for special (non-default)
Xbehaviours:
X.P
XThe ``-X'' option does a ``set -x'' for debugging the
X.I psroff
Xshell script.
XThe ``-Dopts'' option passes the ``-Dopts'' debugging option through to
X.IR troff2ps .
XThe ``-M'' option turns on printer metrics (if supported by the driver).
XThe ``-P'' options can be specified as many times as you want and are
Xpassed through as special directives to the backend before the output
Xpages start (see
X.IR troff2ps (1L)).
XThe ``-dptr'' option supplies ``ptr'' as the physical printer destination.
X(analogous to ``-d'' in UNIX System V lp).
XThe ``-Rnn'' option is passed to
X.I troff2ps
Xand will set the resolution of
Xthe generated output (ditroff output only).
XThe ``-F'' option runs troff without
X.RI troff2 xx
Xso that you can see troff's error messages.
X.P
XNote that -m directives are parsed by
X.I psroff
Xitself, not
X.IR troff ,
Xand
Xmust be invoked *after* -T if -T is used.
X.P
X.I Psroff
Xcan be made to generate several different printer output formats.
XIt selects which one by one of two methods.
XFirst,
X.I psroff
Xlooks at the characters prior to "roff" in it's name for printer type.
XThus, you can link "psroff" to "ljroff" - invocation of the latter will
Xgenerate LaserJet codes.
XAdditionally, you can override this by specifying
Xthe
X.RI -T xx
Xoption, where
X.I xx
Xwill select which printer codes to generate.
X.P
XAs shipped, the
X.I psroff
X.RI -T xx
Xunderstands ``ps'' (postscript), ``tp'' (ditroff->tpscript also postscript),
X``jt'' (ditroff->jetroff (HP PCL)),
X``lj'' (HP PCL),
Xand
X``dt'' (Ditroff output, no printer).
XHowever, this list may be different at your site - see
Xthe
X.I %%LIBDIR%%/lib/psroff.lib
Xfile.
X.P
X.I Psroff
Xinvokes
X.I troff
Xto do the document formatting, then sends the output
Xto
X.I troff2ps
Xto do the generation of the correct printer codes.
X.P
XSince
X.I troff2ps
Xrequires that it knows the page length, the "-rL" option should be
Xused (see the documentation for MM and
X.I troff2ps
Xfor more details).
X.P
XThe "-O" option allows you to specify a physical offset from the
Xleft margin of the page.
XNormal troff prohibits the total page offset plus line length from
Xbeing greater than 7.54 inches, which means that it would be impossible
Xto centre a 7.54 inch line on 8.5 inch wide paper.
XThe default -O is .5 inch (specified as .5i), which allows you to
Xcentre a 7.5 inch line with a zero troff offset (.po directive).
XThe .5 inch default was originally a hardcoded offset in
X.IR troff2ps .
XThe macro adapters have been tuned to centre the default line length
Xin a 8.5 inch page.
XThe value for the "-O" option can take any form allowed by the "-rL"
Xoption in
X.IR troffps .
XThis is not implemented as "-rO", because troff itself isn't supposed
Xto know about it.
XThe real line offset on a sheet of paper is the sum of the -O and
Xtroff page offset (.po directive).
X.P
XThe "-Y" option allows you to specify a vertical page offset,
Xsimilar to "-O" for horizontal.
X.SH MACROS
XIncluded with the
X.I psroff
Xpackage is a set of macros called
X.IR tmac.t2 .
XThis is a set of extensions to and definitions for MM that we find useful.
X.P
X.I psroff
Xcomes with a series of macro adapters designed to make it work
Xwith the least amount of grief with various macro packages.
XIn order for this to work, whenever you specify the
X.BI -m macro
Xoption,
X.I psroff
Xattempts to find a set of adapters for the specified macro package.
XThe search path is as follows:
X.BI %%LIBDIR%%/adapters/mac. type /tmac. macro ,
X.BI %%LIBDIR%%/adapters/tmac. macro ,
Xand finally
X.BI %%RTMACDIR%%/tmac. macro .
XWhere
X.I type
Xis the printer type (eg: ``ps'') and
X.I macro
Xis the macros you requested (eg: ``m'' for a request of ``-mm'').
XOnly the first
X.BR tmac. macro
Xfile found is used.
X.P
XThe first two directories can contain files with something of the following
Xform:
X.nf
X\&.so %%LIBDIR%%/adapters/common.pre
Xmacro specific prolog customization if necessary
X\&.so <real macro package>
Xmacro specific epilog customization if necessary
X\&.so %%LIBDIR%%/adapters/common.post
X.fi
X.P
XThe intent is for
X.BI adapters/mac. type /tmac. macro
Xfiles to be adapters where the modifications have to be based on
Xprinter type,
Xand
X.BI adapters/tmac. macro
Xwhere the modifications are independent of the printer type.
X.P
X.IR Psroff,
Xas shipped comes with only printer independent adapters which have
Xthe following customizations in
X.BR common.pre :
Xturn off ligatures,
Xreload R, I, B, S font width tables,
Xdefine ``.sR'' macro,
Xand redefine ``.fp" directive to call both the built-in troff function ``.fp''
Xand ``.sR''.
X.B common.post
Xmerely contains a disabling of ligatures (again).
XThe macro-specific customization (as present) is simply the removal of
Xcut marks.
X.SH FILES
X.if t .ta 2.5i
X.if n .ta 3.5i
X%%LIBDIR%%	Troff2ps library directory
X.br
X%%LIBDIR%%/adapters/mac.*	printer specific macro adapter directories
X.br
X%%LIBDIR%%/adapters/tmac.*	non-printer-specific macro adapters
X.br
X%%LIBDIR%%/lib/psroff.lib	shell script configuration
X.br
X%%LIBDIR%%/lib/*	configuration files and default inclusions.
Xetc.
X.SH "BUGS and FEATURES"
XOld-fashioned CAT troff doesn't have a mechanism for passing arbitrary
Xcommands to the CAT - eg: overlays, and physical font mounting etc.
XIn order to support these things, a macro ".sR" was invented that
Xpasses special directives to the back end by means of a magic pseudo
XCAT code 'M', followed by an ASCII string containing the directive.
XUnfortunately, the only way to get that to the back end from troff
Xthat I have found so far is to embed the 'M<string>' in a ``.tm'' troff
Xdirective.
XThe ``.tm'' puts it's string to stderr, so psroff has been modified to
Xmerge the stdout (CAT codes using -t option to troff) and stderr (.tm
Xdirectives) together.
X.P
XUnfortunately, this means that you don't get to see troff-generated
Xerrors except possibly as "illegal flash" errors from
X.IR troff2ps ,
Xor varying
Xdegrees of extreme garbage on the printer.
XIf you encounter mangled output, try running
Xpsroff, with the ``-F'' option.
XThen you will see troff's stderr.
X.P
XThe troff primitive ".tm" is renamed to ".tM" when using one of the
Xsupplied macro adapters.
X".tm" is now a macro which calls ".tM" with the appropriate arguments
Xto pass the string straight through the stderr of
X.IR troff2ps .
XHence, traditional index macro handling and macro package errors will
Xbe visible on the stderr of psroff.
X.P
XAnother idiosyncrasy with MM is that if any ".sR" command is invoked
Xbefore use of the ".MT" macro, the ".MT" macro will not work correctly.
X(this includes ".fp"!).
XThis is why the
X.B -P
Xoption was invented.
X.SH "SEE ALSO"
Xtroff(1), troff2ps(1L), mm(7?), cat(5L).
X.SH AUTHOR
XWritten by Chris Lewis
END_OF_FILE
  if test 7454 -ne `wc -c <'man/psroff.1.S'`; then
    echo shar: \"'man/psroff.1.S'\" unpacked with wrong size!
  fi
  # end of 'man/psroff.1.S'
fi
if test -f 'utils/dumpft.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/dumpft.c'\"
else
  echo shar: Extracting \"'utils/dumpft.c'\" \(6373 characters\)
  sed "s/^X//" >'utils/dumpft.c' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 16:50:16 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided
X    this copyright notice remains intact and that this software is not
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		dumpft.c
X	Author: 	Chris Lewis
X	Specs:		Dumps CAT width tables in various formats
X */
X
X#ifndef	lint
Xstatic char SCCSID[] =
X    "@(#)dumpft.c 2.1 Copyright 90/07/18 16:50:16 Chris Lewis";
X#endif
X
X#include "../defs.h"
X#define	NUMPER	8
X#define	WPER	54
Xint dotab = 0;
Xstruct cattab tabN[], tabS[];
X#ifdef	HEADERSIZE
Xint skip = HEADERSIZE;
X#else
X#include <a.out.h>
X#ifdef	X_EXEC
X/*	Xenix I think.... */
X#define	HEADERSIZE sizeof(struct xexec)
X#endif
X#ifdef	F_LNNO
X/*	COFF format headers */
X#define	HEADERSIZE (-sizeof(struct filehdr))
X#endif
X#ifndef HEADERSIZE
X/*	Generalized V7 or BSD - non-coff format headers */
X/*	This is the only one likely to be useful - Xenix doesn't
X	need headersize, and I've not seen a COFF version of troff
X	yet */
X#define	HEADERSIZE sizeof(struct exec)
X#endif
Xint skip = HEADERSIZE;
X#endif
X
Xdouble ditres = 1;
X
Xmain(argc, argv)
Xint argc; char **argv; {
X    register int i;
X    register int j, c;
X    register int k;
X    extern int getopt();
X    extern char *optarg;
X    int found;
X    struct cattab *ct = tabN;
X    while((c = getopt(argc, argv, "dstwfh:")) != EOF) {
X	switch(c) {
X	    case 'd':
X		ditres = (double) 300 / 432 * (double) 10 / 6;
X		break;
X	    case 's':
X		ct = tabS;
X		break;
X	    case 't':
X		dotab = 1;
X		break;
X	    case 'w':
X		dotab = 2;
X		break;
X	    case 'f':
X		dumpexamples();
X		exit(0);
X	    case 'h':
X		skip = atoi(optarg);
X		fprintf(stderr, "skip: %d\n", skip);
X		break;
X	    case '?':
X		fprintf(stderr,
X	    "usage: dumpft [-s][-f][-t][-w][-hheadersize] < cat width file\n");
X		exit(1);
X	}
X    }
X
X    for (i = 0; i < skip; i++)
X	c = getchar();
X    k = 0;
X    for (i = 0; i < 224; i++) {
X	found = 0;
X	c = getchar();
X	for (j = 0; ct[j].ch_name; j++) {
X	    if (!ct[j].ch_name[0])
X		continue;
X	    if (ct[j].ch_wididx == i) {
X		ct[j].ch_info = c;
X		found = 1;
X		if ((dotab == 1 || dotab == 2) && ct[j].ch_catidx == NTC)
X		    continue;
X		switch(dotab) {
X		    case 2:
X			if (k % WPER == 0)
X			    printf("%s.br\n", k == 0 ? "":"\n");
X			if (strlen(ct[j].ch_name) > 1)
X			    printf("\\(%s", ct[j].ch_name);
X			else if (strcmp(ct[j].ch_name, "\\") == 0)
X			    printf("\\e");
X			else if (strcmp(ct[j].ch_name, ".") == 0)
X			    printf("\\.");
X			else
X			    printf("%s", ct[j].ch_name);
X			break;
X		    case 1:
X			if (k % NUMPER)
X			    printf("\t");
X			else
X			    printf("_\n");
X			if (ct[j].ch_name[0] == '\\') {
X			    if (ct[j].ch_name[1] == 0)
X				printf("\\e\t\\ee");
X			    else
X				printf("%s\t\\e%s", ct[j].ch_name,
X				    &ct[j].ch_name[1]);
X			} else if (strlen(ct[j].ch_name) > 1)
X			    printf("\\(%s\t\\e(%s", ct[j].ch_name,
X				ct[j].ch_name);
X			else if (strcmp(ct[j].ch_name, ".") == 0)
X			    printf("\\.\t.");
X			else if (strcmp(ct[j].ch_name, "=") == 0)
X			    printf("\\&=\t\\&=");
X			else
X			    printf("%s\t%s", ct[j].ch_name, ct[j].ch_name);
X			if (k % NUMPER == (NUMPER-1))
X			    putchar('\n');
X			break;
X		    case 0:
X			if (i == 0) {
X			    printf("spacewidth %d\n", c&0xf);
X			    printf("charset\n");
X			} else
X			    printf("%s\t%d\t%d\n", ct[j].ch_name,
X				(int) ((c&0x3f) * ditres + .5),
X				(c >> 6) & 0x3);
X			break;
X		}
X		k++;
X	    }
X	}
X	if (!found && c) {
X	    fprintf(stderr, "Table problem - found %d character (width %2x)\n",
X		i, c);
X	}
X    }
X    switch(dotab) {
X	case 0:
X	    for (i = 0; ct[i].ch_name; i++)
X		if (ct[i].ch_name[0] && !ct[i].ch_info)
X		    fprintf(stderr, "Table problem - no width for '%s' (%d)",
X			ct[i].ch_name, i);
X		    fprintf(stderr, ", wididx: %d, catidx: %d\n",
X			ct[i].ch_wididx, ct[i].ch_catidx);
X	    break;
X	case 1:
X	    if (k % NUMPER != 0)
X		putchar('\n');
X	    break;
X	case 2:
X	    putchar('\n');
X	    break;
X    }
X    exit(0);
X}
X
Xchar *normch[] = {
X"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
X"p","q","r","s","t","u","v","w","x","y","z",
X"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O",
X"P","Q","R","S","T","U","V","W","X","Y","Z",
X"1","2","3","4","5","6","7","8","9","0",
X"!","$","%","&","(",")","`","'","*","+","\\-",
X".",",","/",":",";","=","?","[","]","|",
X"\\(bu","\\(sq","\\(em","\\(hy","\\(ru","\\(14","\\(12","\\(34","\\(fi",
X"\\(fl","\\(ff","\\(Fi","\\(Fl","\\(de","\\(fm","\\(dg","\\(ct","\\(rg",
X"\\(co","\\(tm",
XNULL
X};
X
Xchar *symch[] = {
X"\"", "\\(aa", "\\e", "^", "\\(ul", "\\(ga", "~", "\\(sl", "<",
X">", "{", "}", "#", "@", "\\(pl", "\\(mi", "\\(eq", "\\(**",
X
X"\\(*a", "\\(*b", "\\(*g", "\\(*d", "\\(*e", "\\(*z", "\\(*y", "\\(*h",
X"\\(*i", "\\(*k", "\\(*l", "\\(*m", "\\(*n", "\\(*c", "\\(*o", "\\(*p",
X"\\(*r", "\\(*s", "\\(ts", "\\(*t", "\\(*u", "\\(*f", "\\(*x", "\\(*q",
X"\\(*w",
X
X"\\(*G", "\\(*D", "\\(*H", "\\(*L", "\\(*C", "\\(*P", "\\(*S", "\\(*U",
X"\\(*F", "\\(*Q", "\\(*W",
X
X"\\(sr", "\\(rn", "\\(>=", "\\(<=", "\\(==", "\\(ap", "\\(~=", "\\(!=",
X"\\(->", "\\(<-", "\\(ua", "\\(da", "\\(mu", "\\(di", "\\(+-", "\\(cu",
X"\\(ca", "\\(sb", "\\(sp", "\\(ib", "\\(ip", "\\(if", "\\(pd",
X
X"\\(sc", "\\(gr", "\\(no", "\\(is", "\\(pt", "\\(es", "\\(mo",
X"\\(dd", "\\(rh", "\\(lh", "\\(or", "\\(ci", "\\(lt", "\\(lb",
X"\\(rt", "\\(rb", "\\(lk", "\\(rk", "\\(bv", "\\(lf", "\\(rf",
X"\\(lc", "\\(rc", "\\(br",
XNULL
X};
X
Xchar *names[] = {"Times Roman",
X		 "Times Italic",
X		 "Times Bold",
X		 "Special Mathmatics font"
X};
X
Xdumpexamples() {
X    register int i;
X    register char **p;
X    printf(".sp 1i\n");
X    printf(".ps 12\n");
X    printf(".vs 14p\n");
X    for (i = 0; i < 3; i++) {
X	printf(".ft %d\n", i+1);
X	printf(".sp\n");
X	printf("%s\n", names[i]);
X	printf(".sp\n");
X	for (p = normch; *p; p++)
X	    if (strlen(*p) == 1) {
X		if (isalnum(**p))
X		    putchar(**p);
X		else
X		    printf("%c\\^", **p);
X		if (**p == 'z' || **p == 'Z' || **p == '0' || **p == '|') {
X		    printf("\n.br\n");
X		}
X	    } else {
X		printf("%s\\h'.25m'", *p);
X		if (strcmp(*p, "\\(tm") == 0)
X		    printf("\n.br\n");
X	    }
X    }
X    printf(".sp\n");
X    printf("%s\n", names[3]);
X    printf(".sp\n");
X    for (p = symch; *p; p++) {
X	printf("%s\\h'.25m'", *p);
X	if (strcmp(*p, "\\(**") == 0 ||
X	    strcmp(*p, "\\(*w") == 0 ||
X	    strcmp(*p, "\\(*W") == 0 ||
X	    strcmp(*p, "\\(pd") == 0)
X	    printf("\n.br\n");
X    }
X    printf("\n");
X}
END_OF_FILE
  if test 6373 -ne `wc -c <'utils/dumpft.c'`; then
    echo shar: \"'utils/dumpft.c'\" unpacked with wrong size!
  fi
  # end of 'utils/dumpft.c'
fi
if test -f 'utils/fonts/cmbx10.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/fonts/cmbx10.pk.UU'\"
else
  echo shar: Extracting \"'utils/fonts/cmbx10.pk.UU'\" \(7576 characters\)
  sed "s/^X//" >'utils/fonts/cmbx10.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 utils/fonts/cmbx10.pk
XM]UD11T9T;U!+(#$N,B!O=71P=70`H```&O(B5@`$)JX`!":NP#5!#>DZ)!\<
XM_AO1\][B7<]]J=GR%MCR-M8D?5)6U#5]/R=M(I;1U-#6SRMK\M!I/0>"TF3Z
XM?1#(+D(-%KTB'!S^&]A]N&EG:F9K5N1K96M6:E=H:-:6I7:U9K96Q5Y&QO1K
XM96ERVTV6P#A##4GP(AL<_1NX<8T#-G=U7%1=%#73,EU#)=4A;5(5UHY]E=8A
XM;5(EU2)=0D73)5T2=<*7<\T=.(#(,$0.'&TE'QS^&]BMNVEY:VAM!7;09FT5
XM9M%E]M)5YVTFXD;25?;15FT%=K:&EUVWV*#(-D4,%KT?&QS^&_VW:5=K-VPG
XM]L-N)E)B9E+19#T?T-%D/1]E+1]E*"1M$_1M$E]M`U;$5J4OW"#(*48+D^4>
XM&1S^&_VU:55K-6PE]L-&T"]&4F+T92QD//T,9#SC92SE;2_3D,`^1PYW<R8@
XM'/T;R('-$SIWB&QG731EU$5M4U76-&UR1=@CY6W?:](5U&1M-E7396TF9=)G
XM71:&QJ=XS1)-*6(PR!=(#F9B)2`<_AO]%-'I1L:/VXZVQD_131"X#4D&^DX2
XM$!S_&]3LM674P!M*"8+5&10<_QM?TNU+92=D1F/V5C955%5S1:B`R$=+#FP2
XM)2`<_AO]%[1M$Y;0.FP[:RT&HM%H/29STV8]1E/59$U6-M1B?4D6TX)])T;2
XM9FT69]!G;0:&QI:VEZ:FIK:6MT_131#('4P+$0T=&!S^&_T\[1;5XFPO1K-&
XMLE:C5I16=A_:$,A`31%W<BTH'/X;K7V-6T?5>.(A73(5CR)=$B6/(UPC6/)%
XMHD6.(E6"58\F5B98\G5"=8\H4BA8XBEY6/*EI4^G-]#(4DX.9F(E(!S^&_NZ
XM2-$HG0*"%\*")[*"-K*"1J*"5I*"5X*"9W*"=V*"AF*"EE*"ET*"IS*"MR*"
XMQB*"T&$H+0F"T8@M)X+3:"U%CRU42M(TK3)`P#9/#=)X)!T<_1NIU%5=!)2E
XMM7705DTD5=)3;28O744>=M1A744O;28UTE1M!E705UM:24T%5=2:R"%0#)/E
XM(1L<_AO8;:AH=FI6:U7D:V]&M5:E9H9]6>IM3]'0P$91#=)X)!TD_1NIU%5=
XM!)2EM7]=!5724VTF+UU%'G;4;Q744FTF-=)45C955!,C5U(5(5I!%ET&1=2W
XM'6)QUC4OUJ_7C9;;0\@T4@W,R"0A'/X;U]#:T6AM!J7&M;Y&MJ:UMJ7&A='3
XMU&==)H71:&T.5I;/:68D:F73=4(=&8+`-U,*..`;%!S]&UA13!,T=B2D(\,4
XMPQ]-`A72?0NM%]%M)]%]&JTFTETV_1;1,3T#%+,FA",<05A@P!]4#,S((1P<
XM_AL?W21F9"-V<R*&@A.&A>.6DNTK;3_54,@?50XGSB4@'/X;_1BNU4;3*5TR
XME=(K70/%L]%G33T=B;#(.E8-Z3HD(1S_&_T9I&U"GVTBI]`[;0+'L]!K+1>B
XMTO:2U/9RU74]9E+7<SV&,MER+:]A+<XGWO4!#ST@R%I7$P6J,2X<_QO]$]%:
XM1K;0*&M\*'MK.6MK*FJ**_:8DL=R)G/09R)G+19C)V+1=21E/2921E+39#1T
XM+4]C)F,M5Q*&$]9A*&$M>8G7BHV/>GVO7%VTT4W//1/0P$)8#>DZ)"$<_QL?
XMT4QWLM%Y/2=SU&<M5U+7<SV&(]EQ+;C=]]Y]Y]R-NMHB?8)&US1]4V?4*&TR
XME]$Z?0+'LM!U_&T@R"]9#>DZ)"$<_QO]&:1](Y?1*WP[?"T'HM)X/2>"U'8M
XM9T/6="V'(]FMJ=R-WI;:_1G`.%H+/I`=%QS]&Q_8)H8TES.F/SID*F4I=2EM
XM-M-]-M/VTVTW@F:25J)'HD:C-K,VHS:S)Z0FEA_9$,`I80CQPQ<5$O\12;-4
XMA55E9&5E8W737)AB5E551U174^)85$<11502='1@R"9B"CC@&Q<=_QSXU>A=
XM52>81':#991?6D3E6E\UI$645H-D$E1S1G#0(&,(+8`5$1+^$6AS4U-5-%4D
XM921S+E74U*(DDC."4U.'0,`D9`HXX!L7'?X<SXU>A:8E=%=CAE253TI3Y5I4
XM]*54E6.&=$MG*,`B90AN[183$O\1=Y138X-$DR2C)*GZW^+2326R)+(TDE1C
XMEU#0&V8%GT@/$AT`')>4,W0U5$5%14537D6?V>U:_%#`-&<),S`8%1O_$6<T
XM4U0C-%0C,W,B/C1T<W.$5)-3DA>QU_+6T(TGTEU"2JXM!!/0,DM$1TBUR!QH
XM"CC@&Q@=_QSXUNA=94:5(C2%$61_9U;J6%/[*Y`2:04<<`X+'O\=-&XV9-SX
XM;J-3K,`;:@6?2`\.)@,=E)XVE`3OCM25$UI*1!4T,T-F4,@L:PFV"!D6'?\<
XM^-3H74]4E%8X53E4*U,L43T*R[84M26E-95$E46%575E/Z.0R`UL!1QP#@L=
XM_QSX;MM3V=@@;0]54"@E$O\1A&=F@B-$(TA1%D(61_9V=6ZEA84_LK*PV!AN
XM"CC@&Q@2_Q&$9H(C2%$61_9U;J6%/[*PT!]O"3,P&!42_Q%WM%1SDU24/TM!
XMY5M?%+0TE%1T=%2W<,@G<`HXX!L7&O\1@G:T1V=&64595%I$Y5I36D195%E%
XM9T9U1U)JY5TOO,`I<0FV"!D6&OX19E)T0B-D9E2%185$E3Y5E4251854A6-V
XM<U>6)=3E71^PV!=R!Y/H%!$2_Q%S4G(3-.)!$U-5-.E9_%#0(','0?L3#A+^
XM$3<2,E0B@A\X(4J6I+6FF7^6AH(54B(F0,`9=`<GT!,.&O\9;C*_.O2-WH-9
XMXU0D1!9")V+8%G4*..`;&!+_$?A8;K6%979T=H1"&'8XR")V";8(&182_Q'Z
XM5S629G-U<H9BGU4K]3+0]1+1C2]M3TUBH,@W=PU)\"(?$O\1^3DW\U97)F56
XM-U5E*%0A12E3(40J4C%3*F$C0CM1(U$L=4$M#V5M%7721TT_.3C()W@)M@@9
XM%A+_$?HY-F*54Z4SQ1/1?2;47573?1,5PR6S1:)E@H4_A9#(,GD)M@@9%AK_
XM$?I7-9)F<W5RAF*?52OU,M!1/042TGTO;4]-;RUCLU*U0K4RQ2+1,BTUTL`I
XM>@@M@!41$O\1+2)%4R9C)E,F5"5D)5M;:FM5)%8C9B-6,E<B9C)60=,0R!L`
XM"Q$-'1@<_AO]I6A5:C5K)?:SXD;"[21M'].`L$(!#U50*",<_AO$/3]='WSY
XMSB%LTB?+,WRB1\DU?()GQRA\4Y?$*GPSM\(L!\$L)\`L-K+$>3Q7@L9W/'=M
XM%=,_U1UPP#H"#D^@)1X<_1NXUD9-%*2EQ7]=%5734_;38EU5%D)B3.1*3$)B
XM3-5O%=52;38UTU7UT5=<6DI-%&35JL`R`PSCBB$<'/X;T"W.)-KB;8^-:M7R
XM)M0C?3\D;2)7T29M`V?/*&LI>O*FDK>"QG/'/Y712!D$#$1`(!L<_AO4XV(F
XMLE@E7D7%4E@H;C)BU,@1!0YF8B4@'/X;`S[:1L9/T4T0R#X&#4GP(AL<_1O]
XMTGQC?00XT#2-`T?0-7T"9\)HLGC7?8?8]]A=H]H[*CPI+1*"T3<M(U/2-3TD
XM0]%CVRW!W1#`(P<.3Z`E'AS]&S;&6*@[:QT%U!='%W4E<J0DUZV/C:[2;5_5
XM8,`Q"`U)\"(;'/T;7]72XVU;T%&X4V)55&-3]59%'C961O%59%-48U538EA1
XMO0O6XVTOU4#`+`D.3Z`E'AS]&V_5U>-L=65^<F1D951D5F-C9U-C65)B6T)B
XM30T]2MGC;5_58-`^"@U)\"(='/X;J0$T=,2TE-1UU5;610$5/D8!%C]0$51M
XM95U7]-24M+.S8D.S1%*R4A)1L5(B4I)2+YF3^)@@T",P"3,P&!,;_AIGI#1S
XM<U1T0Y,^))0>M97Q24,Y-$=%-S=#2G;`$S$),S`8$1O]&I+02G:V0ESM97_3
XMP#(R"3,P&!,;_AI8G&-7-'86=19\^%%)70;]!=!=!=%-$](](](H)BDE*B0;
XM,](],M0?U1#`,#,),S`8$QO^&F><9%54935U)F4E=3.%T/70312WU$TUTO71
XM8BEA2,]\=21U-&5LF&#`+C0),S`8%1O_&M(M4]1--=)M%]`A7")<$ULC6B19
XM)5@F5R=6*%4I5"I4`=Y<6_T0P"LU"3,P&!,;_AHRHET&Q[BI?.,M0B:44W)U
XM493271XF%(OXN%%)4BE4-E;)=\`T-@DS,!@3&_X:EJJ$8F1D1&4T=32#/TT5
XMT5-6420T419":#)H0>-97Q25%)0TA#1T5%2*IV#`)S<),S`8$QS]&Q+4_5'4
XM+],CLC*R0J)2DM/RTRT_/232/2XTT>5=(Z#0,C@),S`8$QO^&F>L8W1"HT*S
XM([,DHR:#*%,Y0EH2>YN<4QI#221LFJGBM!2C))-%9%RG8,`T.0DS,!@3&_X:
XM9ZMT5%1T-(0TE!]90>-944AB.&)&$50T(593717]%#.%)70U<T1T4U2*IX#`
XM0B0),S`8$2']'H\L>+5"(C,T)"(E)"$U(W]2*4(J,C,7$HI\;&QL>I(6(5(E
XM$T(Y\R1T)%8D(B4C,C0C)#,A1:EM'R?`428.3Z`E(!W^'*3=,RVC4=E%+8-B
XMUT8M=5+75"V%0=E3':4AW&N67)9=(J;0+%PL>RL2:2HR:"HT9RE%92I&8RI6
XM<2M7C&=Y(EEH(F:D-<.X>730(3\(L%@7$!W]'$AB9#*$%'KV43=:6TL\/#WR
XMWD($]+XVM'#0(3X(L%@7$!W]%%2^-K0$_D+3WRT\/$M+5S'U:G04@C-C64#8
XM#1`%''`."Q+_$?ANU3`8P!81!9](#PX:`Q%OCM25$UI*1!4T,T-F4-`X&0F.
XM-AD6'?\<A]-3E55T=&XU=55T961U5%@T>&.%<W6#9815A4643E65-3)$120T
XM120D*#(D.$50T#4:#4GP(A\2_Q%)9X-5%$-55W-%9G0U99-#=93]64@!E&-0
XM$590$%==64WUE:>'@B9$)%-9AT#`-1L.3Z`E(A+_$7>'E%0T0V.3$W-$EW0D
XMM9,DM9G[69O:XK712UT5EZ(DEZ(T=!2"5%0T4Y>70,`^'`DS,!@5&O\5U1UA
XMUBUAMQ&45'1T5'$4-($D)'$T%6(Z84KU%:06HR910Q="0AA#01=%2#=%21%[
XM'6+6'6'5P%8=$*JE*R<<_AN_W-0B9UTR-I/3(VHM(S:CT21J/1)&LM`E:RT"
XM5E)"SR9E+4-F4M0G9#U-G3VM,H9#TCAE)B]REE)B8J924G*FPF\K:S4[:D4L
XM:%+Z79+`8AX2M@4Q*QS\&[`0M&V92FE82VLW3&PF7&PT70;#/VT&@C(UTE@C
XM(FTE<W;25D?VTM)VTE9';25S=M)8)VTE@E(6T5@E(6T&T3%M!M$C70;1)%QM
XM`T:VT#5;;$=9:EI&VM`!$M!8'PY/H"4>(/T=`;$!X@$84=1D$<2DI<5UUF31
XM)%71)3;!-B7!526R51:Q;*%\DGR1C(&<<IQQK&&V%5*U)5'%)C'&-2'55"'4
XM9M5UQ:2DP11DT4H!`@'A`;"P$R$%F9@/!AW\'!0=CG%#XRST',%!L!,\!9F8
XM#P8=_!04',%,_C(^=!V!0<`Q(P]54"@A)?T<TN(W/6XS<];C-SUC<X`U$!.S
XM<];D-SUC<\!5@W/6XS<];C-SUN(W/2#`<B4/55`H(2']'E35)R0M(V-2T$4V
XM258W$I$V1RHW1RE'1RA(1R@Y1R<Z1R9*1R5,-Q8]`V)3TC4533)!5-9&-TU3
XM8D'3134=(U-BT#8W'$5'*D9'*C='*3A'*$A')TE')SI')CPW%DPV)CT346/3
XM)!@M5$#`%2<%''`-!P[]'!0O8=$4$?8?45\4)!70)B@')]`3"RG\'J&1@H."
XM@H-_-T?S?B1E;H1U?B2/.$CSDY*BDY*QL=@F*0<GT!,+*?T>&QLI.2HI.?.$
XMCSCB1UZ'1EXF1_-T?S<X*"@X*!D:T"HJ"3,P&!$2_1YSU=.!4U$4,SDC*Q,6
XM)1$5?W=1$5)A,;(RDS-!%348/5TWT!$K#D^@)1X?_1D!#M/07.T!`]#`%2P%
XM''`-!P[]!10O8=$4$?8?45\4)!7`#"X%''`-!@;]!10=L4'0*B\),S`8$2G]
XM'@$2\!`^+3WSWB/>(]\]XCWB/>(]\]XCWB/?/>(]\P$"`1"P$#H%''`-!A+]
XM$10<P4VD',%!L!@[!1QP#08:_1$4',%-HR4<85]1XD%!04%`>`T]#D^@)1X-
XM_1"T&5![T;!,0`Y/H"4>'?T<N,<X/"+"*RQ"DL8G+()2AH)!<T*!,E1Q<B)4
XM=3(?)4A43D185$]4A4(25'5!(E1U,C%S0A0Q0H8V8M$M$M$L9(.GP;BX#%L%
XM''`-!RG\'LSM9,FX#%T%''`-!RG_'LGM9,S`%6`%''`-!P[^'%%"3Q7Q7Q81
XM0='Q8D'0$!(),S`8"0C\'!15-S9&551RT!$3"3,P&`H(]AQ$54<V-C548H#8
XM$10),S`8#`;Z&AD1-3%14W<Z%M@3%0DS,!@-"/L<XAL1&1(G(R4E=U2X"18)
XM,S`8$0+]&-;@$!<-Z3HD"0?S'#XQL'@\&QCXT!`8""V`%0T(^_]%AJ6?5U*B
XM',`,(`4<<`T,!``/A$U#2-`47@DS,!@-!_L<8;.5<Q-$-!-S$9$0P`Q?!1QP
XM#08&_1T4';%!T!5]"3,P&`T)^AT34QXU.4034R)B07$PT`]^"3,P&`\$_!PT
XM<2PL(70PT!-_"3,P&`\&_!TC4S4U'V-A4U,U,M`E"PJ[N!P?'0`<J3>59C-T
XMA355=45%A45%A5->186?`<GM6%KZ2U#`'PP*..`;&1T`'*C15BM(.5=7]85U
XMDXXUT_V7[06%3Z2@T!H-"CC@&QD=`!RLI564=85U?F6%/P&'[5A4^RNP*`X/
XM55`H)AT`'*A8PE9V*TA8.5=G5_6%A76%DXXUA<3]=^P5A85/I)2@T"$/#U50
XM*"8=`!RI3*5G592%=85V=7YEA84_`E?M6%A4^RLKT!\B":3X&1$._AP49"]D
XM8?<W%!%$$?89'U&17QD4*"09%:@)+08B(!`+!/\*T=`?7`FD^!D1#OL<49%"
XM@D\9%?&17QD6$4010?<W\61B1D'("7L),S`8%P$`"]JH"7P29F`P+P$`"]3P
XM#VED96YT:69I97(@0TU"6/`58V]D:6YG<V-H96UE(%1E6"!T97AT\`QF;VYT
X09F%C96)Y=&7T`.H``/7V]O`5
X`
Xend
END_OF_FILE
  if test 7576 -ne `wc -c <'utils/fonts/cmbx10.pk.UU'`; then
    echo shar: \"'utils/fonts/cmbx10.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'utils/fonts/cmbx10.pk.UU'
fi
if test -f 'utils/fonts/cmr10.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/fonts/cmr10.pk.UU'\"
else
  echo shar: Extracting \"'utils/fonts/cmr10.pk.UU'\" \(7517 characters\)
  sed "s/^X//" >'utils/fonts/cmr10.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 utils/fonts/cmr10.pk
XM]UD11T9T;U!+(#$N,R!O=71P=70`H```2_%@>0`$)JX`!":NP#)!#``"'QP=
XM_QS0XBW.)-KB$4V.(336XA5-3Q=-(G71&4T='0*5SQM+*UKQT$DM!73%27S(
XM,4(+55@=&!S^&]6DA(2C=*1DLVXTM%2S9*1DE'1UC2E)1TI&2T5,->1,3T2T
XM5*1DE#UEP#I#"XX['AD>_ARV<8-B0G*B(E/01#TC,],S/4(CU2\4UA$]=>?9
XM/7'Q36$CUA\SU!4](7/0&BL<-RTW<,@S1`PXYB`;'/X;U=!(2TI)3#CTT#=-
XM$V311?32->=-)/1-(U3114T39-!&30-TPX2SE)-]6=@W10KCD!P8'/X;`89*
XM1DPF]-%DTE]`$!5&%Q7B1AU%+;U%+>)&'488%$`1'B1`$!7TTE3"9*0@&"#8
XM*$8*<<H;%AS^&P%U245+)?3!5,+T311&%AXD1AM%*[M%*^-&&^9`%%W9P$%'
XM#(X[(1P>_ARV<;-B0J*B(H/01STC8],V/4)3U23TUA0]<3Y4VTS3TU0]1$]-
XM-%/31O/21ST4@\$3HJ$RLV)1T6O($T@,``(?&AS^&\+.M$I(U8[$I$PLR`Q)
XM!<<=#PP<_QO.W$1,T!I*"#CE%1`=_QL]A<X!1$-4/B5$-$118W%#E8#(1DL,
XM<<H@'!S^&\:53$A,*DP;2QQ*'021T4@=)''31AU$4=5$/40UTT(1330A)-)!
XM$TTE5-'T=-!(3$A;24OTI*2TE+6$MCQ;R!U,"@`"&A4<_AO0Q=/M)-3B3!]$
XMLD2Q5*)4DU1U'7'(/4T.JJTF(1S^&YTI]%TECB$4T!%(\22Q)(XA-)$TCB%$
XM<42.(5115(XA9#%DCQ=!%TCB&$A(&2E'."E$E27`R$9.#``"'QH<_AN)E%LW
XM7!@12QCQ)*&!-)&!-8&!1(&/%4<8%D88\711@81!@84Q@90QCQI"&!M!&/'%
XMCQT$@=$X'2)ST22<%,`[3PQQRB`;'OX<I]4U/1.3L[.3T#<](U321#U#/TU$
XM(]8QYTUD$]8R]-1#/4-$TD4](W/0.3L[.3T34]5ZR")0"N.0'!<<_AO4I(.$
XME&2D5+->1+1$LU2D5)1D@XT*ZTTLL,!040QQRB`;)?X<I]4U/1.3L[.3T#<]
XM(U321#U#/TU$(]8QYTUD$]8R]-1#/4-$8V1343%3<S%1,Y,A81.S$6311#<:
XMEQU"<=4E+5,S_5C7;90PR#A2"\<>'QP=_AO3TT=-!)2TI*2SKC2TE+.DI*24
XMM'30S31DT4@]!(3.5)2_24842C842D01QS0=E2#`.%,(XY`7$A[^'%910U(B
XM,I$2(Z,BPA/"'B/0$4T5T5T)JXR+J=!=%=%-).+17]`A.R(A&A,B)B05=<`@
XM5`N..QX;'/\;'<(X1S(I2"+QI)$2I*+BM*'M/$V6T]-0R!]5#``"'QH=_AO%
XME$PW[630&3P:2QLZ'0*AT2@=,T+66L@U5@P``A\<'?\;N8-=%&32)TTAA=`I
XM]-`;XDL=#TD=%8'2]''352U/11UN)#'8]!'9;:]-SB+0R$A7$''**R@=_QNU
XMM8-;6D5,3"?B2UL92EH:])$DD;2!)('/1Q1''%841QT.)%%D4=+B0QA#'40A
XMA1'5]!&D$=9:77XDQ-CB+1*PP$18#``"'QP<_QL;2F:%I*+022T%@=)''352
XMU$4=9#'742V$$=I-M=M-OUV1)-<376%$U15=,F72&$T1E<*DP<2BQ76G.FS(
XM,ED,``(?'AP`&\F4712$TAI=`K30'%L=%:'221TU@=1''552UD4=A#'94AVD
XM$=MMSJ39R<`X6@G''AD4'/X;'6%943M"\K0QM$&E0:11E---)-)=)-+TTDTE
XMTDD?5*%$L36B-+$TP32R)+,5E1UAP"IA"``"%1(2_A$WHE-T4V1C8G/2\[>$
XM,V-C4W-2@TXC@S$2=#$B42,11D,@R"EB"..0%Q,=_QQM/I/3,U@Q)"=')CDE
XM.30Z).4Z,SHD.30Y)4<F(A4G%%;0'V,''',2#A+^$59R0E)$,E0C8C*^4\+#
XMD2*1,G%20G5`P"ED"..0%Q,=_ARFT^DY4C<E$38G12DT.30J,^4Z-"HT.34I
XM-B=')"$X4V#0(64''',2#Q+_$66"0F)B0H(C@Q*EH!;CTM.A(J$R@5)2A4#`
XM&&8$XY`-#QT`'(62,F,T4D1#4EY3BX[2.:3`-F<(``(5$AS_$M$W0Q(D)#,C
XM-#,4)B?C-C<F*#0Y)"D22QTRU"TZC071,J,BQ>+1(2PC*B4V.(7(&V@(XY`7
XM%!W_'&U.D]0S63(4-S$6)T<V[#@SDI"0$6D$<<@,"1W_'#)O1BV6;J4SD(`8
XM:@3CD`T+)0,<@H](+9?IJ#$E="%#,B0D5,@P:PAQRA83'?\<;3Z3TS2$-D8V
XM*#89-1HT&S,<,CLQ2T(Z,TDT.31(-3@V-S9&-E*2@,@,;`1QR`P)'?\<9NW3
XM.=@?;0U56"0A$O\18V9I,A4S%3<Q%R(7)TA(-NPY.3.3DY#8%VX(XY`7%!+_
XM$6-9,A0W,18G1S;L.#.2D-`B;P@``A42$O\19J-#<H)2HC.C(L(>4\,2PB.C
XM,J)2@G-#IF#8)W`(XY`7$QK_$6-8,20G1R8Y)3DT.B3E.C\SDT.25')C$5)S
XM)9YCV:#0*7$(<<@6$QK^$611<D(B8G$24H1/.3/E.C0J-#DU*$8G1R0A.%,P
XM$N8]D-@5<@9$1A`-$O\18C4Q$B3T)#-"3K-Z,-`B<P9/IA`-$O\1-B$R4R&"
XM'RD1.!%9AI:):4I/E8$2$5(A-C#0&70&..40#!K_&5XQKRDX1K3H.>0U%"44
XM,Q="V!9U"..0%Q02_Q%E9NPX-C=')T<T(3E38,@@=@AQRA83$O\1A6)(-?.1
XM?S<9XC4;\S'$$M#S$=+B/4&0R#EW"XX['AL2_Q&"@G)&1C4W-R4W-Q8V$2<7
XM\U$348-!,E&?,Q,S&C(5(QOS$5,1Q'(1T/-ST2DM(9&`P"QX"''*%A42`!$8
XM.%1CA&*C8<-!T3(=(Q+335/53373$CT10\%3LF.A@W1E.$G(+'D(<<H6$QK_
XM$85B2#7SD7\W&>(U&_,QQ!+0\Q'2XCU/'4\:1!I#&T(L(BT4T-`H>@<<<Q(.
XM$O\1'1-C(G,A<S%D,6-!4Z2CHZ110V$S<21B(W$C@2-C'1#(&P`*``(:%1S^
XM&]=4A%2B7TL52RXD3![31-1<T(#`1`$-55@C'AW^'-'RWO3<;;$4VA)=D338
XM%%UQ5-8675%TU!A=,932&ET1M-`<7!T$L=%:'221TU@=1''55AUD7QV$/?$"
XM\,!&`@QQRB`;'OX<I]4U/1.3L[.3T#<](U321#U#/TU$(]8Q36@QL3CB/0.#
XM&Q./UD$]8R]-1#/4-$TD4](W/0.3L[.3T34]5Z#`,0,+'',=&AW_',XBVN)-
XMAM?Q%-8275\334(UT_%4TB5='B%TT.(92^(;21T$@L1TICE<F!H$"JJM'!<<
XM_AO<XZL=_QHQCBI8\:,0)N,:O<#(#P4,``(?&AS^&]WMQ$I$PL#(008+CCL>
XM&1S^&]LDT5)=(S72)$TQ1=(D72%4TA5=$678387839]-DMH=H=H=(7'3%AU!
XM8=,E'4)!U"0=0S'34MH=L<`H!PQQRB`;'?X<-;58ASII(E-40A)S,W.3(X*3
XM(I&R$]AMA=KM--EM31;`.@@+CCL>&1S^&VT=)M?B35G1,D$Z-$,W-40U-D4S
XM1D5!Y4=&049%0S9%-35$-S1#.C)!/1G6XDUVTM%0P#()#''*(!L<_AM]'4;9
XMXDM71E\D9%1>9%1$<U1$?T1#231#.S-"3#)"/1,7U7V>)-EM31;`/`H+CCL>
XM&1W^')?214LY.#T#5-!$/2,TTD(]0QY$U$$]0R]-)#/2-?/0-SLY\K)14I)2
XM]AD6$14G)1+BAX'0)#`(``(5$!W^&V2B0G)B7R@C.#+RHA[#H_$J(C@S\H)2
XM8G)"EE#0$C$(``(5#1S\&V*C=E(SK@%SE4W0+S((``(5$!S^&U624F&#,:(Q
XMHQ2)>?@Q.3Q/P\\\/#TM+2TM*!0I$RH3&A/2`0$!$=`P,P@``A40'?X;5H)2
XM;Q@S1D)',D9#-DSSTM+2I@$2`1\P$#WT$XGB>(,ADT&#4E*64,`N-`@``A42
XM'/\;SRTCT?30$3PA/!([$SHC.A0Y%3@E.!8W%S8G-A@U&30I--7FL[O0+C4(
XM``(5$!W^&R*"2UIHCE$!$35Q(4)A$6)2<T&3T]XD$ICBA;,AE"&307-B0Y5@
XMT#<V"``"%1`=_AN$HD)R86)C0F0R=#*"/STM,U4R%"0Q%B-((D@Q.B'D.C\2
XMHQ.2,H,R@E)B<D*E4,`G-P@``A41'?X;$=/3\=(AP2\<$QL=+QTATBTATO+1
XM/1\M'C/0Y4T2D-`T.`@``A40'?X;99)"<8%1DD&B+B*B(Y(D<D515Q)XIYAB
XM-D)6(H0BEK7CPA*Q(J%"@E-1EE#0-SD(``(5$!W^&V2B0G)B4H(S@C*3'SHA
XMY#HQ*C$X0BA#)A$T)!(U4S_2TS*"-'(T8D-Q87)B0J5PT$8D"``"%1`A_AZ/
XM'&@C$B4D%!,E%1(6%C847V$V84(3471!AA&8F8F8H161,Y%#$E%']!55%3<5
XM$A85$A84%!43%B,2&6WQ<,!.)@QQRB`;'_X=@]HB'8\D'6XS0=;S,=<R'8,1
XMVDB6.TD\*CP:$3L9$CH9%#@9)#@8\F-A@W-!DW0QDX,AHY2DHZ$3E($R@2-Q
XM0E)#0G6%0-`?/P>..Q0/'?X<1V)C,9,3E^*#PL.RPL+1TMY1!:+/3"?0(3X'
XMCCL4#QW^%&+/3"!;\=XQTM'2PL.SL\XCAY,2H3)R9T#(#!`$<<@,"1+_$6;M
XM(SG`%!$$XY`-"QH#$4?M:#$E="%#,B0D5-`U&0@``Q42'?\<=J-#<V-B@EXS
XM@T-S4W)C4T8DDU*#8G-R8X)?.#3E.3,Y)#(S-#(S)3(R(V-4T#8:"XX['AH2
XM_A$W=5-3,E(T4Q)R)&2",G22^SHG`51#,!`V/3<]*#PX//.$H1-B(H$S0D-"
XM5H5`T#8;#''*(!T2_Q%EE8)24E)2<C)R,I(2@B.5DA*SI;.EL!3CL]*STY6A
XM(I(2H3)R,H%24E-"A95`P#T<"``"%1(:_Q73'3'3+3&6$8-#<G-2@1(S<2,B
XM<C(3<4;V%6]19D%S$C)R(R%S,A&"4W)S0X$6D=,M,=,=,,!,'0YQRB4B'/\;
XMG:TA%832$DHM'Q-+'1$TLLXA1,&^(51ATQ9&'3%D4M+6TA=%+2%T8=$81AT?
XM&$86'B893!8:3!8:2R4J2B5)2$*4UB#`:!X0..8J)1[]'*8!`UUH.$I'.4PF
XM.ST!4\/0%$P]`C/0/1$DT#T1)-`Y%!(]$Y%DT3D631."9-$W-DT=!DT3<V31
XM.";TT3D730.14130/2$4T#T1/TP]$42ST"4[/0)CE,*#A*2C76QM@-!3'PQQ
XMRB`;(/X=`9'74K-3,:.4H[.3TW/1$U/2(T/1,S3!1"/14R/!8Q]+%XH8CY&8
XM@:CW&T$V'#(U'3)$'$,S'30R+34Q'3<].3LZ23H3-3LE?1`9P!$A!''(#`0>
XM_!T2'?[!+9(8$A#`$3P$<<@,!![\%!(8$MGL(=\2$+`\(PU56",>)?X<PN(G
XM+&-CQN(G+&-CQN,G+&-CC0'2XJ)RQC8\;C)RK2'0@V/&XB<L8V/&XB<L8V/&
XMXB<L(,!O)0U56",>(?X>1-,G(QT38E*S8V.$8G$K8X&2<X&#<X%S@X%RDX%C
XMDX%BHX%3LG%3PV%2T245/2(Q4]1&)DU#4C'2-24=$E-APU)QLU.!HF.!DV.!
XMDG.!@W.!<X.!<I.!8Z)Q8[-A8M`E%CT2,7+31.`0)P1QR`P%#/P<9[[0A"(1
XM$0#0(R@&..40"BK]'I&!@8&"?R?R?R<WXB?K..(H./*?*?*2D:&AH=@C*08X
XMY1`**OX>&AH:&2GRGRGR@XXBCK/B<G-_)_)_)R@8&!@9T"(J"``"%1`2_AY^
XM,H%2410R-",B(VBO2H8R(C)#(T$5)1CC)]`/*PQQRB`;'/X7WL+`..S2P.`.
XM+`1QR`P$#/P#;_<1$2)(X`HN!''(#`0$_`-O]M`N+P@``A40*?X>`0\M/]+3
XMTM/?+3WRT]\M/?+3TM/?+3WRT]\M/?+3TM/?+3WR`0"P#SH$<<@,!!+\$1(8
XM$MXA@2&P%3L$<<@,!!K\$1(8$MXA@3XS'R$A(3#`$#T,<<H@&PS^#QW!W@R]
XMX=P0P%)`#''*(!L=_ARGU2<M$K*QTAD=07'6%1A8%!8T%Q,6-A<2%B@T$A4X
XM-!$6*34N13DU)BDU$14X-1$6*#02%C9$$Q8T$B,4&%1&'>'>'>+22"ELI[@,
XM6P1QR`P'*?P>Q.V%PK@,701QR`P'*0`>PNV%Q.`08`1QR`P%#/T<"(B$0A"W
XMWF#8#A((``(5!@?['/,T,T-24>`.$P@``A4&!_<<''/.<P@`Z`T4"``"%0H$
XM^QG`V&/P,-@2%0@``A4,!_P<\:."$8$C0SAD0,@)%@@``A4.`?T8T>`/%PP`
XM`A\(!_4=/$*!@8%"/-`0&`<<<Q(*!_O^,W2$='-C&"#0#2`$<<@,"03_#W)#
XM0T)PX`]>"``"%0H%^QL,!((1`H!`V`E?!''(#`,$_!S`T!)]"``"%0P'^QPN
XM(T,30R\E(B4CX`]^"``"%0X$_1L<!/PD/R`XX`Y_"``"%0P$_!Q@;P_P]@;`
XM(@L)55@8&AT`')9%DU(2,G)E-%-D1$-T4EY3@XV8[2.#F$E`P!T,"..0%Q4=
XM`!R6T#4J)RDV1S='."CD/1U7[2.#2$C`&0T(XY`7%1T`')FC4Y)D@V1^8X,]
XM5^TC@TDIL"<.#558(R$=`!RF5L$V$C4J-T<I-U9'.$='.3@HY#D\+2?L,Y.#
XM23DIL"0/#558(R$=`!RF6:-B$U.3962#=61SA(-^4Y.#/2?L,Y.#23DIX!PB
XM"``"%0T,_QQ@9X>^/M#0@(0$("("$!$!$!$!`,@)+0555@X+`@`)V>`<7`@`
XM`A4-#/H<"`B`B`B`A`1`0@(0$+"WQ]X>8&#("7L(``(5%`$`"]>X"7P0``,J
XM*0$`"]WP#FED96YT:69I97(@0TU2\!5C;V1I;F=S8VAE;64@5&58('1E>'3P
X5#&9O;G1F86-E8GET9?0`Z@``]?;V
X`
Xend
END_OF_FILE
  if test 7517 -ne `wc -c <'utils/fonts/cmr10.pk.UU'`; then
    echo shar: \"'utils/fonts/cmr10.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'utils/fonts/cmr10.pk.UU'
fi
echo shar: End of archive 10 \(of 16\).
cp /dev/null ark10isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 16 archives.
    echo "Read the README to get started with psroff installation"
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still must unpack the following archives:
    echo "        " ${MISSING}
fi
exit 0
-- 
Chris Lewis, Phone: TBA
UUCP: uunet!utai!lsuc!ecicrl!clewis
Moderator of the Ferret Mailing List (ferret-request@eci386)
Psroff mailing list (psroff-request@eci386)