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#XGP(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>(,ADTE*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)