Path: utzoo!attcan!lsuc!ecicrl!clewis From: clewis@ecicrl.UUCP (Chris Lewis) Newsgroups: alt.sources Subject: Psroff 2.0 Part 02 of 16 Message-ID: <939@ecicrl.UUCP> Date: 17 Nov 90 04:57:12 GMT Reply-To: clewis@ecicrl.UUCP (Chris Lewis) Distribution: alt Organization: Me... Lines: 1461 Submitted-by: Chris Lewis Archive-name: psroff2.0/Part02 #! /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: fonts.lj/HI.10.pk.UU fonts.lj/S.36.pk.UU lj.c # Wrapped by clewis@ecicrl on Fri Nov 16 23:35:00 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 2 (of 16)."' if test -f 'fonts.lj/HI.10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/HI.10.pk.UU'\" else echo shar: Extracting \"'fonts.lj/HI.10.pk.UU'\" \(6654 characters\) sed "s/^X//" >'fonts.lj/HI.10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/HI.10.pk XM]UD``*``````````!":N``0FKM@.J0```!4(!_<<-C;S8V-CT!"H````%0H' XM\QQS8V-44V-C<-`1LP```!\*!_$<-C@3-D(T*N)#+%$LG)R=C2%;\C2^(D.O)#0E(S4T(C="(3FL XM8!+RP,!E)0```",;(?D>5-(E;1)(PS,THS-3DT-3@T-C@E-C*51(5)2(E$S,SCB/1*0P",K````(!L<_!?3\ML]OC+;/;XRVSL"G0+;/;XR XMVSV^,ML]LM+@#"P````,!`C\`G[FS(C("2T````."P+^"=G0"BX````,!`/\ XM`A;QP$8O````%1@I`![9\M@]@M@]@M@]<]@M@]@M@]@M@]<]@M@]@M@]@M@] XM<]@M@]@M@]@M@]<]@M@]@M@]@M@]<]@M@]@M@]@MD-`M,````!42'?P;E;F+ XM9$1C8U.#\SDS*C\CHR.3+C.C'C.C+SDS\X-$8V0T>XBUH-`:,0```!4.'/P; XMT;.%:&(SOSKD.N,ZY#KD-?T0P#0R````%10<_ANFT)DU2"(Z,^(Z-3@V-S@T2:QJP#@Y````%1,=_1NER*1"@V-C@F*24Y-"H^(S XMHS.3,Z,TA$.$0W5$1FD3:"-U,],]+STCTC<7-S4YG%N`#CH````,!Q+\$4\S XM/=,_-(`2.P````P'%_P13S,]TS\U)/)?%J`:N`````T)'?T4;B/7XB8VXB;S XM;B)N(V)N,U-@P!`]````(!T,_0\]P]X-O>/<,,`@N0```!0/'?\4KB,$GB+. XM(L+#L[2DI*2^([21(V4=$K5UT"$_````%`\=^1Q':STC=!&C_#L[2DE92SL[ XM/"SC+"!9._/`P$5`````'!@=^QS0?2K-"69'639&E$6S1<,U1%(U1D%%-T$U XM.$$U.#'B-3DQ\U.#(U-T(U1C,V-$1%IC:'1EI-A85]*M#1>0P$!!````'!D= XM_QS4/8]=8A/5\B/4(SU"--(D31-$T25-`U30)DPV3"A*.$GSE(_4<[5BT$4] XM!$\]%#/20RTT(].-5,`Y0@```!P9'?P<;1O3E(5TI62T;B3$1-`U3$5+1DE7 XMU'TYU(1H=*54Q%XTT$--$T301$Q%2T9(9M2-*L`J0P```!L7'_H=T(S0E&1T XMH7353536/635]-7B35Z4USUTUST!9*-U9*S0><`U1````!X:'?P<;1S3I(6$ XMM'],1O301$T4XT32/C--)/)-)#]-%$301$T35-!%3$9*2$A8TZT1-7D35 XM_3?TU>1-7D35]-;`-4<````<&!_Z'=!]'0I&5THG3!9-9-<]=-;TUN)-;B37 XM28-(A.--`T3#8\-DLW.S=*.%5;S1>L`?2````!T:'?P<;B3$Y%3$7D3$7]=O XM3$7D3$7D3$7TQ�%DD````,"AW\'&XDY%1>1%XT7D1>1%]&P!]*````%!,> XM_AS2XDY-%-'D31XTT>1-'B1A=')5;(JVH,!+2P```!T<'?P<9-%&30.$PX2T XME*2DE+2$Q'3$<]%&/21$TT--1"730GTD$Q32(S1S8T-S8T1C7B-4 XM4V-C4UXC=#-O.#,U.3(V\Y038Z,38Z=?.V;`/T\````?&A_['=!]2]#1IE:% XME66T5<5$T4--)"330DU#\4U3%-2./5C]1!]--"320TT51,55I725AE:M'1O4 XM;0#`*U`````;&1W\'&T;TY2%?TM&XDQ$30-4Q%3#9+1DI&25?4C2I-?D37Y$ XMU_38P$-1````'QHC^QW0?4O0T:96A95EM%7%1-%#323R333B%-2./5C]1!]- XM-"1D5#1S141D-%1Y=&B&5JT='0TF%-E=GUV54-`U4@```!L9'?P<;<`2E(5T XMM&3#;B3$1--4Q%2T9*1TAF`3@!*=Q&._1TKB2$CB2D?TM%3$5-1`P#)3```` XM%Q4?_1VWRY-D8Y)RL6/4XCU/3534;3G0K*T)TUU%U/35\]3S,L-"PE.C9&.; XMQZ#(&E0````<&1WY'`);37Y$U^1-?C37Y$U^1-?TT]`F50```!T8'OH<3B33 XMY#33/D33/C33/C333TPU]+-SHX2#I%3*`2;0R#Y6````'!D=^1STU7U#%=,C XM32,_31-/30-4PW]*./23E(.D@L1CST4]!$/11"TD,],S+4,CU#(M4Q+6;678 XM33#(:E<````G)!WY'/3%Q\6S%+(3LQ2Q(Z,DHB.C)*(CDS22,Y,TDC.21()# XM@T2"0X)D8E-S9&)3(]+>,]+>,]+>(]+>,]+>*(T"-=````#!`I`AZ.*/T]+>,]+>,] XM+>(]+>,]+>,]+>(]+>,WXHC0%%X````5#@?X''*TDA-C,E-#,V,3@^`,8``` XM``P$"/<<$B9.[M`B80```!00$OT1=HE<0V-!D]/#IEL])6,C(P$#-6,83454\S@^,CDR.#(Y,CA"1D-%1,0Q XMA3-6T!EC````$@\2_!%V>5LT4R._.^4\.1)%0\279L`M9````!43'?P0]Y#WS`0#`-&<````5%AL`$:4TG0C1@T"9H````%1$=_1QN(]Y#WB,!`S5C&$`0-50T XM0UY#7S;0'6H````+ XM$24$'-XDQ`AO/>,]Y#WD/>,]\W)$>8BFH-`P:P```!01'?T<;B/>0]XC`0-D XM0U1#5%-$8S1S)',DB)F%$X0D9$-O-44V-39#.#,X0M`6;`````H)'?T<;B/D XM4UY#7C->0UY#7S;0*6T````B'A+]$4,V9F,9.4,;&S5F9#2$@S.3DR2$@SXS XMDY,N0Y.3+SDY,\`?;@```!41$OT10S5C&$T354-',S@R1S/C.#+D.#+S@S#0 XM(&\````5$A+]$8:I?%1D-(04HQ.VXL;[,3HR2$-%5-:J:,`L<````!43&O\1 XM8S6#&&T&5%4W13@^-#DT.#0Y-#A$1D5%1L8QAS-8\]+D/2/3T"MQ````%1$: XM_!%E,U8B+7/,ADR XM-C/$IV;0&70````/#!C[%TXCCB-OL^,XY#CB.3,D^%5@P!UU````%1$2_!$_ XM.#XR.#+D.#+S@S-T,V4]$Y$U8S38)'8````3$1+\$4H_$Y,O.#,W-#`?`=P'P&<#<#G`W`QP=P<<&<&' XM#G#APYPP<<<<'''&!SAS@@```!(2$O\17]!-#1/1/1/1/1/1/1/1/1/1/1/1/1T3_12P"_8` XM```5%0/^#!W/$-`2K````!4/!?@;-%,F-!T31B-4,-@,JP```!4,!/8<]$CS XM0=`0_@```"`;'/X:WL+`..K2P#C`5-(````@&QS^%Z?5)RT2LK'2&1U!<=01 XM%1U!,4'3%!,=,6$ATA<1'2&2T1HM`;+\'"L=`J'1*1TA$7'2$A8=,3%!TQ03 XM'4%1$=07'4&1TALK+1)RU7K`'WX````@&PG^#E73$XTA*]`114M86%M%01T+ XM(=*#'350P$S[````*B4<_A?:*BV$A-9(37.3UTA-9(362$USD]=(362$UDA- XM(U,24Q-",C-"(G.2HI.2DQ%F]58B%3,4)5 XM,)@)7P```!45`P#WU8@)?`````P"*?L>V1@*_````!D4%?X4#R#`*SP````@ XM&1C]%=D]=-9-9-9-9-9-9-9-9-9-;TVDVDVDVDVDVDVDVDVDVDVCR"L^```` XM(!D8_14]I-I-I-I-I-I-I-I-I-I-KTUDUDUDUDUDUDUDUDUDUDUSV<@L7``` XM`!40*?X>\M+B+2XBTN(M+B+2\M+B+2XBTN(M+RTN(M+B+2XBTN(M(M(0T!M[ XM````%0XI_1ZD@Z.ROL.RLY.$T]/"SL/"P\/4V!M]````%0XI_1Y-/3PL[#PL XM/#U(.CLK[#LK.3A*P#>[````(!D=_!S476)!TS8=$W'1*1PY'#<[-SPX'0\] X;CB/5O4XSV.,]1Z%9H4)%@5%70U$S.(1U@/7V X` Xend END_OF_FILE if test 6654 -ne `wc -c <'fonts.lj/HI.10.pk.UU'`; then echo shar: \"'fonts.lj/HI.10.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/HI.10.pk.UU' fi if test -f 'fonts.lj/S.36.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/S.36.pk.UU'\" else echo shar: Extracting \"'fonts.lj/S.36.pk.UU'\" \(23815 characters\) sed "s/^X//" >'fonts.lj/S.36.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/S.36.pk XM]UD``E``````````!":N``0FKG%6(0```'-JD_5NWCWO7<;<7<;<]=QMQ=QM XMQ=QMQ=QMQ=QMSUW&W%W&W%W&W%W&W/7<;<7<;<7<;<7<;<7<;<]=QMQ=QMQ= XMQMQ=QMQ=QMSUW&W%W&W%W&W%W&W/7<;<7<;<7<;<7<;<7<;<]=QMQ=QJ4:Y: XM4JUJ-:Q:-JMJ*`JEHH&J6@@ZEI\R@*A9\S@*=IXF@*99TW@*5IPX&`I%GA@H XM"C:I@*-:N`H6JX"A6M@*!:V`GVK8"?6O@)UJ^`G5L8";:Q@)M;*`FFL_@)E; XM6`EVM8"76W@)5K>`E5N("4:Y@)-;J`DFNX"16\@)!KR`D%OH"/6^@(YK^`C5 XMP(",;`@(Q<*`BFPH"*7$@(AL2`B%Q8"';&^`AER("$;(@(1XQ+BSO,"[L;^]I:2@ XMKL.YHZN:NEBNMZ*OBIHJ:LLZ*RBGH:NJL:&V>FFOJ:^@N7I(LJFMH+MJ.+6I XMJIOFH8MZFHG`:@>YJ::<)9>[J:2<-H:]J*.<57:_J*&<=6;`J)G(56PJAYRE XM1<2H65PIIJFY>@;`FHJ;>*%KZ:JIM8HVNZ"MJ;**1[F@KZFOFF>VH; XM&JJZ&GBRHK.LIJ*IBOHK>NBEJYJZ.YPZZ@I*6]O[&[P+RSN,2XM[3(M;JPS+ XM&^J]*KQ:+L3B?,+B?L+B?,1ZQO>, XMAVRW+1$`DN_4$.#QU`"2X=%RRW;(]XQGK$XGS"XG["XGS$>L;WC(=LMRT1GP XMH2DF````?VQ$]T*\L`%+"YN-NTMKW6M[7!T;FSQQO+)[G$ XML;VK2WP:OYN+:_J_B\M;V<%[^TNYP7P;2YC"?#M+>,-L6TM8PVQ[2SC$;(M+ XM&,1LJTJ,5ZBYL<2YMY XMM;''O[&Q>URKVSQ,V\M,'1NK:]UK>XN-NUO+`!2PH.,J````?TY/Z$TD`80E XM`747`5M`$[8!&1G?DJW:.MNEK9IZUZFM6K"M.K*M&K2L^K:LVKBLNKJLFKRL XM>KZL6L"L.L*L&L2K^L:KVLBKNLJKFLRK>LZK6M"K.M*K&M2JK6J*V*:MJDK< XMHJWKD!"W`2M0%+,!:Q`8H!BQ`6LP%+4!*W`0N=ZBKGK9I:VZ.MVBG?D9`1M@$[0!5Q4!=30!A!!P#RT```!_8@?R XM*1_8$,[QV!"0D#P```!C3$7U1]\=]-Q]B@UJ'5HM2BTZ+4HM2BU*+3HM2BU* XM+4HM.BU*+4HM2BTZ+4HM2BU*+3HM2BU*+4HM.BU*+4HM2BTZ+4HM6AUYV:'8 XMHMBBV:+8HMBBV*+9HMBBV*+8HMFBV*+8HMBBV:+8HMBBV*+9HMBBV*+8HMFB XMV*+8HMBBV:+8HMBAV:#;?=0!`2"0D#T```!C3$7U1R$!!-U]N@V:'8HMBBV: XM+8HMBBV*+9HMBBV*+8HMFBV*+8HMBBV:+8HMBBV*+9HMBBV*+8HMFBV*+8HM XMBBV:+8HMBAV9UZ'5HM2BTZ+4HM2BU*+3HM2BU*+4HM.BU*+4HM2BTZ+4HM2B XMU*+3HM2BU*+4HM.BU*+4HM2BTZ+4HM6AUJ#8?<3?'?"(7D,```!F6&CZ9YB1 XMP$XMM-R6FZ:=F)BLF)F6KY::E;&4FI6SDIJ5M)&:E;60FI6VB:^5MXF?E;AY XMGBE;EIGY6Z69^5NFF.:5NUF..5O%[#EY70E\Z9RYZ\X[BNF)2:K@821$```` XMB'=L^&NB7:<-CW+6]TU/=M+WC0]ZSGS,]^RF%YR5)YR&-YQU1YQF5YQ59YQ& XM<'G#5R>,)G)YP5='C`9T>;[V=GF\]GAYNF>GFY5[>;AGQYMU?7FV9^>;57]Y XMM&@'FS6">+)H)YL5A'BP:$>:[VAGFL]HAYJFBGFI6+>:AHQYIUC7FF:.>:59 XM!XI&D'FC62>*)I)YH/:4>9[VEGF<:8>9M9EYFFFGF96;>9AIQYEUG7F6:>>9 XM5:!XE&H'F36B>))J)YD/:D>8[VIGF,:H>8M:EYBFJGF)6K>8AJQYAUKGB&:N XM>85;!XA&L'F"]K)Y@/:T>7YK9Y?5MWE\:X>7M;EY>FNGEY6[>7AKQY=UOGAV XM:^>752JY.YDZB3NY.F^3O9 XM.DD[^3HI/!DZ"3PY.>E,.4G)3%E)N3QY.:E,>4F/E,F4EOE,N4E/E,V4DI7- XME9&4SY20^5SY6)31E'^5T959;1EDXI73E3EM.6+BEI!;=9"6+Y616W61E1Z2 XMEI'!D:7Y%;=9&6\9616W61E2EI!;=9"6+BEM.6/Y73E4EM&67BE=&5?BE<^5 XMD)3/E)&5S962E,V4DY7+E924RY26^4R928^4QY2:E,64G)/%DYZ3PY.?E,&4 XMH)/!DZ*3OY.DD[V3II.[DZB3N9.JD[>3K).UDZ^2LY*RDZ^3M).MD[>3J9.[ XMDZ63OI2AE,&5FY7%EY.7RJW0I]:AWY6V<1M+````<69L^VNI39;7XH#5XH+3 XMXH31XH;/XHC-^*R^*,R6&'R/4H?'8X?&]4A\5EA\16A\17AL-GA\)8"'PE@8 XM;!:!A\!8*'P%@X:_]82'O6A8>\]8:'NVAX>Z]8B'N6B8>X6*A[A8N&MVBX>V XM6,A[98V&M6C8>T6.A[18^&L_60A[%I&'L/62AZ]I.'KO64AZUI6'K/66AZMI XM>'JEF(>J69AJEIF'J%FH>H6;AJ=IN'IEG(>F6=AJ7UGH>C:?AZ+UH(>A:AAZ XM#UHH>?:CAYY:2'GEI8:=:EAYQ::'G%IX:;:GAYI:B'FEJ8:9]:J'E_:KAY5Z XMN'E7K(>3@*R'DH*KB)"#JXB/A:F*C(FFC(B/H)&!XYB5JX"&E8F"AH`V3@`` XM`&U>:/EG+I$!%(T8-]5RXVUV+F794`0PYUNUI^D<6GYUNU`%2>==N2Y-EA;7 XM8HTX+I$!,8@V4````'MN:/IGF(PX`!@).9N9FAE[F7I):YEJ;MZ5N96FE[>7 XMI)FUF:&=L9V3X[69QI.8F9B3F'$B4@```'9C:?=H'63BUTV$BJB56*KHYHFR XMBFBK.(>*M(:`BK6$@(JV@X&*MH*"BK:"@HFV@H**MH&#BK:`A(JU@(6)MGA8 XMJU>&BK5H>*M&AXJT>'BK1HB*LVB8FS:)BK-8J*LEBXJQ6,B;%8R*L%C8JP6- XMB;!8V*KUCHJN6/BLJ)RHK*BLKXK*BLJ*RHG*BLJ*RHK*B\@X1[R#A'O(2#>[AH)[J(@7N8J`>VCG>OEFU5UDUDXM==9`H))3 XM````/#U3^T+)MLR_Q<3`R;RSL+*YLKB;BKYK>L,;>M>=B-B=B-F-F-F-GXV8 XMV?C9C9G9^-F=GXV>2=GBK8L-?['6LM:RU;/4M=.VT;C0N-"YS[K.N\V\S+W+ XMOLN^RK_*O\J_RK[+OLN]S+O.NL^XT;?2M=2SUK'7^PV/K9G9C9G9^-GXS"L( XMS&:;ZPI50```!_;&OW:L60')TL4!3%S,K>RLG-VLW&T-C0P]/4 XMT\'5TM6]?0UZV,[8G:S-I_W,K<7"K&R,:L)+Q,3&Q,2SG)P\3#R9*,S!Q,', XM@GSL'"PHK743V*BM XM@][Z:@-_I*`Y^4D#OCDI`]X\8#_EQ`0>`9P@0<0#_&`[S`*N,!@!S'PL?0#! XM*E4```!V8VGW:-O6T-8"/C`F`QV@0M0$;2!([-`$;6`]`2`S`:`L`@`FU"T" XMU`(-)]!](!O1K0K1`7T-#0T-`!3-+0TL`1S4T-3-[-70UT-[2/]'>T-[17]'=T- XMW1?0W=#=T(T=S0W-&=#S4T-3`$,"8"/6T-;;<0=7````?VQI]VB4BX6+ XML>.KOX_0B=2'UN@X6IAIB%F888F6A9>;E866BABI2%E8IH>3A92'@X>2A9.' XMA8>1A9*'AX:1A9*&B?AI"%D8:+^&CX60AHWBA8^%D(6.^&CH6/AH_H2%CH6/ XMA9"&C86.AI'DA8V%CH63XH6,A8V%E82,A8R%EOA8N%C(67A(N%BX68A8J%BX XM69A(J%BH6:A8F%BH6;A(F%B86A8>%B(6?A(>%B(2AA(:%AX2BA8 XM6%AH2DA82%A82FA8.%A(2IA(*%@X2KA(&%@H2MA7A8"$L8585H6SACA3AK>C XMNY_`FL63SHG5Z$A=:'U(G0C[_CJ[&+A8N5"1.E@```!V9VOY:L&G`6L]R[U< XM'0J*&HRZ:KIL:EL:7#I+6DP*2YI+RDO:2YI+^DMZ3!I+2DQ:2QI,>DKZ3)I* XMVER:6KIG3J"FV:9*?7IUXZ;7IGXJ;5III=6EH*;3IJ'BI=.EHZ71I:6DT:2FI<^E XMI_I,^DJ?I,VDJZ/-HZWZ/+HZ^CR:.QHLFBLZ')H;2BQZ*UH<>AM_H<6AN:#% XMH+OZ##H+V@P:"_G!G!C!C"F_G#B_C%>_>N6IB]BIH*I[UZI16IB[BI4O6J>[ XM>J4EJVNVJU):QKEJQ3]:MKEJM46L6Y6L5%K&MVK%1JQ;=:QE6L6W6L5FJUMU XMJV:*I+=*J&^WM;=^2VM;:+:UM:"UM;6@M+>T4&DD60```(AW;/AH#^\=X_W% XM_:;YG9XOE=WF\9X>;M7EYNF>GFY5[>;AGQYMU?7FV9^]YM& XM@/>;)H)YL&A'BP6%>:YH9YK5AWFL:(>:M8EYJFBGFI6+>:AHSWFF:.]YI&D' XMFB:2>*)9-YH&E'B@65>9YI9YG5EWF<:8>9M9EYFFFGF96;>9AISWF6:>]YE& XMH'F2:B>)):-YD&I'B06E>8YJ9YC5IWF,:H>8M:EYBFJO>8AJSWF&:N>81K!X XMA%L7F":R>();-Y@&M'E_6U>7YK9Y?5MWE\:X>7M;EY>FNO>7AKSWEV:^>71L XM!X=%P7ER;">')<-Y<&Q'EEQ7E6QGE%QWDVR'DER7D6RO?LQ\SO>M#WC2]VU/ XM=-;W+8<-I:*A8%H```!65&_Y;,^R`8N@$<#Y['P'++,LKBRR+FULL6_LK+"P[&RP+ XM2:JROK*UB+.]L+MGL[NPOF:SNK#`9;.XL<)5L[>PQ5.TMK#&4[.UL````?V*" XM\F84UGTH+0A,Z&S8?+B(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B, XMB(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B,B(R(C(B,B(R( XMC(B,F'RH;,A,Z"T7TU`)^M8]@0SO'8%("E\```!+2P4`W@\@L1UA````:5M$ XM^4+9P`+L@"C.`CT0(,)\`!S`PJ`:O&H!:\FLQ,B\NLIL6\V\EL2\^\A<2]&L XMA<.]*\9L*]2\5L'`U+Q5P<#6O#;`P->\-KP-B\)KP=C`P6O`VKP5O!VKP&K! XMV\"VK!V\"FK!W,"FK!W;EJP=ZY:L'>N&K!W[AJP=^W:L+?MVK\$!"V:L(!"U XM:\(!"T;`P0$<`VP,$!'`)L'!`1P!;!P@$<`6P<$!+&POP0$L7#P0$L3$P0$L XM/%P0$L+&P`$\''_``3P,GBL!2\G``3O*L!'!RK`0PLJ]_#R[W<3+O;QLR]ER XMO!1ZUX.\!7O4AJP%B]&7JVFL^:J7J\JL"I;!K&O#IVP\"L+&E7QM3)Q\G/SL XM3,RM+!TL':BPH8YB````7%F*_&L!.Q`>N`&+T!3!`0L8L-Z;2=N;>=B;J=:+ XMV=1[^M&,&=!\.LY\2LU\:LI\BLE\FLELJLALNL=LRL9LRPQ7S+#%;-L, XM1LZPPWSK##;.L<)L^QPFS[#";0L,)L^QP6T+#";/L<'VT+#"70L,)M"PPFS[ XM#";0K#;/L,-<^PQ%SK#$;-L,5KFT6L9;?%QUM<7(:TQQNUUK*Z]M:RNO77LKGVUK.Y]=>RN?;6L[EM:RNEUK.Y]M:RNF XMU;.Z;5LKI]2SNHT[*[C3L;R-*RNYT;*\K0L;VL^RO:S[&]L]L<5IBZL,=;";6RR%LK";/):S XMQ,MK6_SEN;G16]L=3V`H]0*/8"CU`H]@*/4"CV`H]0*/8"CU`H]@*/4"CV`H XM]0*C`J"`V&,```!456/^0J&2SIBP.?:1E9F5G6D9.?DYQI&1HY&;:1D*:1FFD)"HD)EI XM&*J)EI"*R)=I%ZYY=I!Z^)5I%K%Y5I%K)I1I%K-Y-I%K1I-9);5I)I);99)I XM,[=I!L=I!LA8;)9VR6=*1TN*0 XMT_C4XGU>)M9=;C;5XFU>-]3B?4^-3WU/C4]]3XU/?4^-3B?5]M5]5M==@JJQ XM%60```!(0FWY:]^P&,4!+*WLW_P==Z_!V' XMG"V&K\'8>?PMAYP=EJ_!V'G"V'GBP=AZ_!UWO!UVP,'6?`P-=\#`UGPKUGPO XMO5?#P--\6]-\6])\:]%\B]!\B\]\J\U\RLQ\ZLI\^\B-"L>-*\1]:L&-C`>M XMO-W\H!+&`8O6L'1E````0C5#^$'7Q=/+S\[-T,K2RL37PMG"VL':P=O!V\#< XMP-S`W,#,!&,';PMOFP=SBP-[[WN+`WO XMO?^]^M^]^@$*W[TSF]!IK/>KRYP*R*PKP[QL",')TLW.TLC9P,60U68```!( XM18OY:\$=E-;D75;5XEU_764Z7$L,&QP;&^H*)[RBH8N[6Z@JRZA*JYB:2[C2 XMC2?2C2C2C2C2C2C2C3?3?3C2C2C2^-*-*-+XTHTOC2^-+XTHTITHTITOC2^- XM*=+XTITOC2^=+XTN.=+XTN:=+CH-'Z'1H-'Z'0HL^CSZ/.I,ZDS:7,ILRGRZ XMC)J\>NQ+#"LL"TO[6]M[RWN[B[M[VUO[/!L<.NQJS(J]:FB]>DC`>AC"H&C%J\>HRZ70BQ#`^&<```!23&/[0M"`$T'2M&HNV>KG0JEFI?4J&FG?6MFNE?8IFND?9M&RR?;I&RQ XM;=I%T-7=HVT-3>LFT-/?LET=(!"_%M#2`1L5T=$!*Q71T`$]30T0$M70T`$[ XM'UT<`4LCT<`4S6P!3-;[`5O6_`%,UOL!6];\`4S6^P%;UOP!3-;[`5O6_`%, XMUOL!6];\`4S6^P%;UOP!3-;[`5O6_`%,UOL!6];\`4S6^P%;UOP!3-;[`5O7 XML!3->@%L9XK%>IQ'NL&,&:G$EKQLO)R,W$T:S+#Z:@```%Y01/="QE`N XMC9C-K5P<'( XMP,9ZP,G`Q6P9R[Q6Q%S;PW`2P,)P$\#!8!6\!P%KMP%L"F`8P(L9`?QP(-`!C7`1VM[=VL"K9L#8FV;`V*EGO:F&B]N5>; XMW,>JW\3`@!'!PU`6C#"1`FL```!?3VSW:JF=NDUZ;6I]BDV:38I-BCV*38H] XMBDV/H]GZ/9XJ/9XJ/9^CV>*CV>*CV?H]GBH]GBH]GZ/9XJ/9XJ/9^CV>*CV> XM*CV?H]GBH]>EU:;4J-*IT:K0@:/.@J/-@Z/,A:/)H%H\B@>CQJ"*/%H)H\2@ XMH:/"H**CP:"CH\"@I:.^H*:CO:"HH[N@J:.ZH:FCN:&KH[>AK*.VH:VCM:&O XMH[*BL*.QHK*CKZ*SHZZBM*.MHK:CJZ.VHZJCMZ.IH[FCIZ.ZHZ:CO*.DH[VC XMHZ.^HZ*CP*.@H\&CFCPJ-Z3$HUI<2C6DQJ,Z3'HSH\BD*BRJ,J',HQH,VD&- XM"B)M*@&Q"FP```!B6&/[0LY0-HVEUZV(UKUJU/P-6]3[UKT_P-7`T_O6O3_` XMU<#3^]:]/\#5P-/[UKT_P-7`T_O6O3_`U<#3^]:]/\#5P-/[UKT_P-7`T_O6 XMO3_`U<#3^]:]/\#5P-.]:]2]:\),'\#5P,%L#`U;PEP;UKPEP/P-7`P6P,#4 XMP,)<'`T\'"7`P=/!P6P,'2PL%<'"T,/!7!PL_#P6P,/.Q,%<'$S<3`;!Q,MQ XMNVP<7)JI7PL`L["Q\/`/,Q,3%M\;)P< XM:[O/C'_``P^P,/P`,/L##\`##[`P_``P^P,/P`,/L##\`##[`P_``P^P,:`S XM@#90-+#7;0```%!,0_A"R'W5P,;SJ:&+&D&NL:0ZRPI& XMJK"DH*2RH\NCRJ3*^DRJ3*I,KZ3*^DROI,NCR_I,OIH\WBH\VCS:+-HWI[6C XM*MM+VTN[6GHVMZ2C>UNK2ZLY.NM(FGMHSYSYSXT(T)SYT(T(T(T)T(T/C0^- XM#XT)T/C0YIT/H,^ASOHLVDS*3+IM>LFM6LNM.LRM*LV]"L^L^M"\VM&\R]&\N]+`RKT[R;U+ XM_(O4P/Q[U<#&P-7`QKUL#%P-;`Q;U\#%O6P<3`UL'\2]?!_#P-;"_#O7P<7;Q,3#V\[\#8O-_`V;S/P-J\R]N\O`V[R[W+RL#;P,K`V[R_ XMO]2S?=^-U]WCC*AV?HMGBH=J@W(WFQPL.5T````65!$^T+%@!%;(_`WER;WFR,#>;(P-Y;)O>7) XMP-ULG`W5RKW6RKW5R[W&R_O;;,O:;-K;;-K:;.^]AL^]=M"]9M*M5M.]-].] XM)]6]!]>L]]B\U]J\M]R\AP$+Q(`2PID!;1`9S0';>LLWFWK+-Y=^RO?7? XMOQS>;>SQO?7?LOO>;>P;>L[WFW<.]Y=ZUK>7=Q:W6W;:MUM XMRWK=7>O6:$E;IU=Y6X=7D)6V=FDI6T=FDY:RAFE)6R=U XMEI6P>026E:]Z65K7II6L>HE*MZF5J7JY2H>LE:9ZZ4I7KY6C>QE*)[*5H'M) XM2?>UE)Y[>4G(MY2<>XE)M[J4F7NY28>]E)9[Z4E7OY24?!E))\*4D7Q).0?% XME'?&E&?(DU?)E#?*E"?,DQC,F\V:SYC0E]&6T^*4U>*4TY;1E]"8SYK-F\R! XMD\QRE,ISE,EUD\AVE,9WE,5Y"3Q'D93">2E,%Y24OWE92^>6E+UYB4NWF92Z XM>;E+AYR4MXG)2W>>E+5Y^4M'H)6R>BE+%Z.5KWI92N>FE:QZB4JWJ96I>KE* XMAZR5IGK96E>OE99)!["5EE=[*5E&:+*6DV9[25DF9[:5D'5[B5=U>ZE4AFO9 XMYUOYN1/#E]21E+&C=P```&MBBOMJ`J,$)00/8$#U!`]@0/4$#V!`]00/8$#U XM!`]@0/4$#V!`]00/8$#U!`]@0/4$#V!`]00/8!:-9V@(]4"C/`QQ0./4$#V!`]00/8$#U!` XM]@0/4$#V!`]00/8$#U!`]@0/4$#V!`4$)`'@L0!X````9E]$_4(#E'U(U(A]2-.)?4?4B7TXTXJ-&M&:C0O0FYSL#/G!C-PLR\&0```"0%D_%N$Q`"UQ,0L%MZ````0"N3]F[8 XM?4O2C5?6?7?7;8;8;8?7]]?B?7[??7XGU_?7?8;8;8;8;7?7;6?2O4?8O:?; XM;:?:;:;:;:;9?9]]GB?9[??9XGV??9?9;:;:;:?9?:?:C9O8<+A;>P```$`K XMD_9N?8O9C:?:?9?:;:;:;9?9]]GB?9[??9XGV??9?9;:;:;:;:?:;;?:O8?4 XMO2?6;7?7;8;8;8;8?7]]?B?7[??7XGU_?7?8;8;8;7?7?6?5C2O4?8"0I'P` XM``!_;$CW2:R@WRJJ?:.HJ]=:6PU%H[/36BMM%:"ZSUF\SEB_S%?!RF>EH*G) XM9J.GILAEHJNFQ6:@KZ7$9:"RI,)UBVI,!EBXI+YU>[H[R$B\H[MU>^I+B%;` XMI+:%?"I+*@5L2EKZ!FQ::KHE;(IJ>C9LFIH*5VRL%US+^%SKR5S[J@71MJ)= XM.SHUU+"E77JZ@]JGJRWJ``P:`N,#`0`0KQ`P$&`A?0```']L2?=*'],0W1TS XMT0"I3],0W?'3`*E-$],0W?'3$*"M?@```$`QD_EN$]+B71;1]=%M'UT6T?71 XM;1XET6T?71;1]=%M'UT6T?71;1XET6T?71;1]=%M'UT6T>)=%M'UT6T?71;1 XM]=%M'UT6T>)=%M'UT6T?71;1]=%M'B71;1]=%M'UT6T?71;1XET6T?71;1]= XM%M'UT6T?71;1XET6T?71;1]=%M'UT6T>)=%M'UT6T?71;1]=%M'UT6T>)=%M XM'UT6T?71;1]=%N+172,0L51_````@&UP]VS*O?O*D#6;@#6,&`,XPI`QG#@#&,6`+XQI`MG'D"N@&:V:`7K;H!6MV@$ZWZ`1H!&M^@$ZW:`5K;H! XM>MF@&;U;`;O3L!V]&P'[S[`AO-L".\NP)JR:`IK'H"NL6@+:PZ`OK!H#&KH# XM.;D#69D#>7D#F'@#N%@#R3D#V#@#^!@$#%!!PP0_P01?L$?Y!)]P2_4!@*!? XMH0```%([B?5JP3W/7:]]CYUK#4^RTK30MLZXS+K*<7%\AR]AW>+J(>(MYEYFSFP>PFJL7L:6PLWL[`;"T>TN;9[:UN'N'%+I[I, XM#@/GVSP00&JB````I)$W]T&]37]1UU#7]1UU'64M91UU'64M91UU'64M92UE XM+64M92UE+64M93U5/55-544]9-L0`;X];15-%4TE/34]-2U%+44M12U%+44M XM12U5'54=52U5'54=52U5'5]1UE#6]1UT9J!?HP```%([B?5JP3V^`^?`2Z>Z XM07N'N+6V>VN;1[2P&PLWL[!:L7L:J;![";.9>9MXAXBZAW>+UV=GP(1TC"@W XM.,2"DPWBEP7H*6_>BI+YZ2DO'I:6Z>GI+EZFDMWJZ2U>LI;-ZZDLGL*2P>QI: XMY[.EK'M:2K>WI*E[BEIWNJ6E>\I*1[ZDHGOZ6@?!I8?#I'?%I%?&I3?(I1?* XMHQ?,J_I:![ZDHGO*2D>ZI:5[BEIWMZ XM2I>UI*M[.EK'L:6N>PI+!ZZDLGK*6S>KI+5ZFDMWIZ2Y>EI;IZ2DO'HJ2^>@ XMI;]XI<%WI,-UI,5SI<9QI\I* XM1[JEI7N*6G>WI*E[6DJWLZ6L>RI*Y["DL'KJ2R>LI;-ZNDM7J:2W>GI;AZ6E XMNGI*2\>BI+YZ"EOWBEP7>DPW6DQ7.EQG*DR'&CRJG,J,VIS'&CRG*DR'.EQG XM6DQ7>DPWBEP7H*6_>BI+YZ2DO'I:6Z>GI;AZFDMWJZ2U>LI;-ZZDLGL*2P>R XMI*Y[.EK'M:2K>WI*E[BEIWNJ6E>\I*1[ZDHGOZ6@?!I8?#I'?%I%?&I3?(I1 XM?*J\RIS:C/IM&DTZ+4H=:=AMM!!("K````!+2P4`<`\@D&2U````;5I>]ULD XM`50E`44>U'`2I?`0@7`0=/CBQJ*IH\*CJZ6\I:ZEN*6QJ+"HM*RDK+?.NLJ_Q,3`R;K0LMJF XMNY!DM@```&U:7O=;NZ;:LM"ZR<#$Q+_*NLZWK*2LM*BPJ+&EN*6NI;REJZ/" XMHZFBQJ*GHLBBI:',H:.ASJ&AH-*@H)U)F=:7G8EHVH7XW(1]Z"C>@HWW)P$' XM'X`0I>U`$G%0%%-`%4&0E[<```!M4&'R5L"[O,"YQ+7'LLJPRZ_-KJK0I]2E XMU:37H]BBV:+9H=JAVJ#;H-N@W)W)W)W8W8W9W8W?C=^-WXWGWOC>?>^-[B?> XM^-[WW_`5$`$%\???^-_B??^-]]_XWWW_C?^-_XWXWIWHWXWIWIWIW:#=H-V@ XMW:'JT\VQR[/*M<>XQ+O`P;L0<)VZ````?V)A\E:B XMKYZTF[B7NY2^DK^1P9",Q(G(A\F&RX7,A,V$S8/.@\Z"SX+/@M"!T('0@=&` XMT8#1@=&`T?@-'X#1^`TGTO@-)]+X#2XGTO@-+H)]/X#3XGT_@--]/X#3?3^` XMT_@-/X#3@-*!TH#3@-*!TH'2@=&"T8+1@M&#T(/0A,^$SX7.ALZ'S(G+C,?! XMD[^5OI>[FKB=M*.O$'"=NP```']B8?)6*NH[2=N)J[E[Z5OY3`QXS+B[E+Z2OY'!D(S$BC_)HEQ:?#J<&KOZV]L+FSM[:SNJ^_J<:AL`D7O- XM````I)&-]VS5J0/K4#2]`MPP)\D"'/`@`CH+:0)9M9`GFSD"F;&0*YL(`MBOD"V:V0+YK(`QBK XM@#.*F0,YJ(`UBG^`-XI?@#F*/X`[BA^`/8GX`_B'!!=_@$&&<$-U^`0X3W!% XM<_@$6"XW!'EZD!)I?!'CC%P1W+X!%@_<$5T^`0X5P0W;X!!AW!!>/@# XM^)^`/8H?@#N*/X`YBE^`-XIX`UBHD#.:F`,XJX`QBLD"^:V0+9KX`MBPD"N; XM&0*9LY`GFUD"6;:@`CH+>@`AH+F@`?H+N@`=H+VA`9H;^A`7H<&A`5H<.B`1 XMHL6BWZ+'H]NCRJ/7H\VCU://I-&DTJ7+I=6FQZ;8I\&GW*B[J-^KLZL!*OIZ XM\!?3`)=;E?4Y9TNR+#2ZXG4ZR?6 XMY5V#OZ![SP```$HWB_=KOEUGU)TNFPTN:=3D?6XUP8LULX6SE9LSN%5;@0Z! XMN%5;@[.5FS6+-;.,'C76Y'U.:=+IL-*=1]90/EUGU)TNFPTN:=3D?6XUP8LU XMLX6SE9LSN%5;@0Z!N%5;@[.5FS6+-;.,'C76Y'U.:=+IL-*=1]9;X*"IU0`` XM`$1#C?=LUXWK':M=>WU85].'?1B6T7F,^'K.A['-AK+BS(>RRY>R_+B++*F; XM#+FIS)L5SHW^6=[DG>XJWOG>Y*W?L-WCK=Y+#=K=Y;#^=[BK>Y)WN6=^,Y;&Q9M@```!208'X=0%D XM`@4!_W`=^`'7`=^-JX?8Q5?5RQC3UM&YP]&J/ZS(NBK,?`HOK+C`HJRWP:+ZRHP: XM&\I\+*_)C"RLE\/*_(C#ROR'Q,K\>,3*QWQ+VO@!UP'?@!WW`?]0%0@>79````@'&'^6BY XME`%I[>I-BJTZ[/EI26RY.>D\>2I)+$D:B1P9&LD;Z0L)"\BTBYD+:0MHNHM( XMO(LHOHL'PGKGQ'K'QGJGR'J'RGIVS&IFSFI&T&HO;2:@;4:>;6:=786<;8:; XM7:6:;::8;<:77>66;>:54!!91@$&D_4!)9)@$FD5`460:UD*UH6SEJM86Q:% XMJ5=J]95*=F6N:8.G5EK5G"IE9:Q9XJ55:K6@*D9%JUHBI%1:IJ(J146I:D*C XM4VJ5IAHV):EJ8J-26H:G*C4EJ&J"HE):=J5J)26G:D>B46IGHXHI*G>CBCD? XMIGI(HY&F>E:DD:6*9*61I8R)'Z5\F1Z*2,F2HXR&XA6CC(4EI'R%):2,=2:C XMC&8UHXQE3UI'QE1J.,1E6D?$5EI'JBGU9:5ZDI]6:D>H*?9UI6J"GUA:5Z8Y XM]8:E:F*?:06E>D.?61:E>C*?:26F:B.?636G:@.@63:G:>.@:46H:<.A65:H XM>82A:66J:56B67:K>&HVF&K)BD::6OD:A9MMAIQ=A9UM9IYM1J#VTFHFT&I& XMSFIFS&IWRGJ'R'JGQGK'Q'KGPGL(OHLHO(M(NHMI"VD+F+2+R0L)"^D:R1P9 XM&HD<22I)+'DYZ3RY:4EL^NTZK8I-Z>`6E+F0$MH```!./T#Y/QTQ#'[+RPQQ XMTQ!8#>````!R)I//;0`=/MUQ6`[A````-:=6]2]2]2]2]2]2]2]2]2]2]/`T\#3O3 XMP-/`T_P-/`TL'2P-/`TL'2P-+\'2_!TOP=+\'1PM'\'1PM'!T>+"T>+"T,/0 XMXL+0XL/0_"T.7#T,+0X#?#"XB/,```!R*I7/;^W,/0PM#BP]#"T/P]#"T,/0 XMPM##T,+1PM##T,+1PM'"T<'2P=+!TL'2P=/`T\#3P=/`T\#4P-3`U+U;U;U9 XMV&U9T[T;T;T<#0P-#`T<#0P=#`T<#0P=#!T,'0P=#!T,+/PL_"S\//PL_"S\ XM//PL_#S\+/_#S\+/XL//PL_MS#SPL&3T````_9U705L]7 XMSU;/5\Y7S5G,6R/7,Q=S%W.6\]:SUG16-%8T5?25M-6TE;35M XM)6T[YJOFJ];+MMNFZX<+5S5-14U%345-14U%/54]14U%344]53U%344]53U% XM344]7U/5]3U?4]52UE"AV`O\````3C]`^3\`_"!`K_T```"DD5GW4J%0UE+5 XM]3U?4]7U/54]14U%/54]14U%/54]14U%345-3U345-14U%345'.U<+EMNVR\ XM:[UJOVF_TU735M)7TE;25])7T5G06=!:SES-7S/7,E=R%W(6\I:S%G,6, XMU8SE?/5L]6T%;/5M!69[YHOFF]:KMLNFZX<;725-)4TE325-)4TU/34]-4TE XM334]-3TU334]-3TU334]/U/3]3T_4]12UE"!8"#^````?VQM]VJ=30;/Z9<) X2S],0W?'3G>E'"<_3$-WQTQ#U X` Xend END_OF_FILE if test 23815 -ne `wc -c <'fonts.lj/S.36.pk.UU'`; then echo shar: \"'fonts.lj/S.36.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/S.36.pk.UU' fi if test -f 'lj.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lj.c'\" else echo shar: Extracting \"'lj.c'\" \(21773 characters\) sed "s/^X//" >'lj.c' <<'END_OF_FILE' X/* Copyright 1985, 1986, 1987, 1988 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: lj.c X Author: Chris Lewis X Specs: LaserJet driver, hacked from ps.c and lcat.c X X Without font downloading, this is LJ compatible. X Font downloading will require a LJ+, LJ500+ or X LJ II. X X*/ X X#include "defs.h" X X#ifdef LJ X#include "lj.h" X X#ifndef LJF Xchar *LJF; X#endif X X#ifdef PK X#include "pk.h" X#endif X X#if defined(PARTIAL) X#include "pkc.h" X#endif X X#ifndef lint Xstatic char SCCSid[] = X "@(#)lj.c: 2.1 Copyright 90/07/18 16:51:32 Chris Lewis"; X#endif X Xstruct troff2befont ljStdFont[108] = { X X/* Note on X-shift, Y-shift and point scale factor: X The first two are shifts in the baseline position of the X character, and the third is a multiplier of the point size. X If they are zero, nothing happens. If they are non-zero, X they are first multiplied by .01, then (in the case of the X shifts), multiplied by the current points to get a shift X value in TROFF2LJ[XY] coordinates. In the case of point scale X factor, it is multiplied by * .01 and becomes X the pointsize of the sequence to be emitted. X */ X/* +-------------------------------- Troff character number X | X | +--------------------------- N: standard fonts X | | S: symbol font X | | D: draw macro X | | n: new font X | | X | | +------------------------ X-shift: scale by deci-point*100 X | | | X | | | +--------------------- Y-shift: scale by deci-point*100 X | | | | X | | | | +------------------ Point-scale X | | | | | X | | | | | +-------------- Sequence X | | | | | | X v v v v v v */ X /* 0*/ {N, 0, 0, 0, "h"}, X /* 1*/ {N, 0, 0, 0, "t"}, X /* 2*/ {N, 0, 0, 0, "n"}, X /* 3*/ {N, 0, 0, 0, "m"}, X /* 4*/ {N, 0, 0, 0, "l"}, X /* 5*/ {N, 0, 0, 0, "i"}, X /* 6*/ {N, 0, 0, 0, "z"}, X /* 7*/ {N, 0, 0, 0, "s"}, X /* 8*/ {N, 0, 0, 0, "d"}, X /* 9*/ {N, 0, 0, 0, "b"}, X /* 10*/ {N, 0, 0, 0, "x"}, X /* 11*/ {N, 0, 0, 0, "f"}, X /* 12*/ {N, 0, 0, 0, "j"}, X /* 13*/ {N, 0, 0, 0, "u"}, X /* 14*/ {N, 0, 0, 0, "k"}, X /* 15*/ {N, 0, 0, 0, NOC}, X /* 16*/ {N, 0, 0, 0, "p"}, X /* 17*/ {S, 0, 0, 0, "\366"}, X /* 18*/ {N, 0, 0, 0, ";"}, X /* 19*/ {N, 0, 0, 0, NOC}, X /* 20*/ {N, 0, 0, 0, "a"}, X /* 21*/ {N, 0, -200, 0, "_"}, X /* 22*/ {N, 0, 0, 0, "c"}, X /* 23*/ {N, 0, 0, 0, "`"}, X /* 24*/ {N, 0, 0, 0, "e"}, X /* 25*/ {N, 0, 0, 0, "'"}, X /* 26*/ {N, 0, 0, 0, "o"}, X /* 27*/ {N, 0, 0, 0, "\367"}, X /* 28*/ {N, 0, 0, 0, "r"}, X /* 29*/ {N, 0, 0, 0, "\370"}, X /* 30*/ {N, 0, 0, 0, "v"}, X /* 31*/ {N, 0, 0, 0, "-"}, X /* 32*/ {N, 0, 0, 0, "w"}, X /* 33*/ {N, 0, 0, 0, "q"}, X /* 34*/ {N, 0, 0, 0, "/"}, X /* 35*/ {N, 0, 0, 0, "."}, X /* 36*/ {N, 0, 0, 0, "g"}, X /* 37*/ {N, 0, 0, 0, "3/4"}, X /* 38*/ {N, 0, 0, 0, ","}, X /* 39*/ {N, 0, 0, 0, "&"}, X /* 40*/ {N, 0, 0, 0, "y"}, X /* 41*/ {N, 0, 0, 0, NOC}, X /* 42*/ {N, 0, 0, 0, "%"}, X /* 43*/ {N, 0, 0, 0, NOC}, X /* 44*/ {N, 0, 0, 0, "Q"}, X /* 45*/ {N, 0, 0, 0, "T"}, X /* 46*/ {N, 0, 0, 0, "O"}, X /* 47*/ {N, 0, 0, 0, "H"}, X /* 48*/ {N, 0, 0, 0, "N"}, X /* 49*/ {N, 0, 0, 0, "M"}, X /* 50*/ {N, 0, 0, 0, "L"}, X /* 51*/ {N, 0, 0, 0, "R"}, X /* 52*/ {N, 0, 0, 0, "G"}, X /* 53*/ {N, 0, 0, 0, "I"}, X /* 54*/ {N, 0, 0, 0, "P"}, X /* 55*/ {N, 0, 0, 0, "C"}, X /* 56*/ {N, 0, 0, 0, "V"}, X /* 57*/ {N, 0, 0, 0, "E"}, X /* 58*/ {N, 0, 0, 0, "Z"}, X /* 59*/ {N, 0, 0, 0, "D"}, X /* 60*/ {N, 0, 0, 0, "B"}, X /* 61*/ {N, 0, 0, 0, "S"}, X /* 62*/ {N, 0, 0, 0, "Y"}, X /*from here on are actually code 1-45, upper half of font */ X /* 63*/ {N, 0, 0, 0, "F"}, X /* 64*/ {N, 0, 0, 0, "X"}, X /* 65*/ {N, 0, 0, 0, "A"}, X /* 66*/ {N, 0, 0, 0, "W"}, X /* 67*/ {N, 0, 0, 0, "J"}, X /* 68*/ {N, 0, 0, 0, "U"}, X /* 69*/ {N, 0, 0, 0, "K"}, X /* 70*/ {N, 0, 0, 0, "0"}, X /* 71*/ {N, 0, 0, 0, "1"}, X /* 72*/ {N, 0, 0, 0, "2"}, X /* 73*/ {N, 0, 0, 0, "3"}, X /* 74*/ {N, 0, 0, 0, "4"}, X /* 75*/ {N, 0, 0, 0, "5"}, X /* 76*/ {N, 0, 0, 0, "6"}, X /* 77*/ {N, 0, 0, 0, "7"}, X /* 78*/ {N, 0, 0, 0, "8"}, X /* 79*/ {N, 0, 0, 0, "9"}, X /* 80*/ {N, 0, 0, 0, "*"}, X /* 81*/ {N, 0, 0, 0, "\366"}, X /* 82*/ {N, 0, 0, 0, "fi"}, X /* 83*/ {N, 0, 0, 0, "fl"}, X /* 84*/ {N, 0, 0, 0, "ff"}, X /* 85*/ {N, 0, 0, 0, "\277"}, X /* 86*/ {N, 0, 0, 0, "ffl"}, X /* 87*/ {N, 0, 0, 0, "ffi"}, X /* 88*/ {N, 0, 0, 0, "("}, X /* 89*/ {N, 0, 0, 0, ")"}, X /* 90*/ {N, 0, 0, 0, "["}, X /* 91*/ {N, 0, 0, 0, "]"}, X /* 92*/ {N, 0, 0, 0, "\263"}, X /* 93*/ {S, 0, 0, 0, "\316"}, X /* 94*/ {N, 0, 0, 0, "="}, X /* 95*/ {N, 0, 0, 0, "O\br"}, X /* 96*/ {N, 0, 0, 0, ":"}, X /* 97*/ {N, 0, 0, 0, "+"}, X /* 98*/ {N, 0, 0, 0, NOC}, X /* 99*/ {N, 0, 0, 0, "!"}, X /*100*/ {S, 0, 0, 0, "\314"}, X /*101*/ {N, 0, 0, 0, "?"}, X /*102*/ {N, 0, 0, 0, "\250"}, X /*103*/ {N, 0, 0, 0, "|"}, X /*104*/ {N, 0, 0, 0, NOC}, X /*105*/ {S, 0, 0, 0, "\331"}, X /*106*/ {S, 0, 0, 0, "\332"}, X /*107*/ {N, 0, 0, 0, "$"} X}; X Xstruct troff2befont ljSymFont[] = { X/* +-------------------------------- Troff character number X | X | +--------------------------- N: standard fonts X | | S: symbol font X | | D: draw macro X | | n: new font X | | X | | +------------------------ X-shift: scale by deci-point*100 X | | | X | | | +--------------------- Y-shift: scale by deci-point*100 X | | | | X | | | | +------------------ Point-scale (scaled by 100) X | | | | | X | | | | | +-------------- Sequence X | | | | | | X v v v v v v */ X /* 0*/ {S, 0, 0, 0, "\167"}, X /* 1*/ {S, 0, 0, 0, "\150"}, X /* 2*/ {S, 0, 0, 0, "\155"}, X /* 3*/ {S, 0, 0, 0, "\154"}, X /* 4*/ {S, 0, 0, 0, "\153"}, X /* 5*/ {S, 0, 0, 0, "\151"}, X /* 6*/ {S, 0, 0, 0, "\146"}, X /* 7*/ {S, 0, 0, 0, "\162"}, X /* 8*/ {S, 0, 0, 0, "\144"}, X /* 9*/ {S, 0, 0, 0, "\142"}, X /* 10*/ {S, 0, 0, 0, "\156"}, X /* 11*/ {S, 0, 0, 0, "\147"}, X /* 12*/ {S, 0, 0, 0, "\165"}, X /* 13*/ {S, 0, 0, 0, "\164"}, X /* 14*/ {S, 0, 0, 0, "\152"}, X /* 15*/ {S, 0, 0, 0, NOC}, X /* 16*/ {S, 0, 0, 0, "\160"}, X /* 17*/ {N, 0, 0, 0, "@"}, X /* 18*/ {S, 0, 0, 0, "\243"}, X /* 19*/ {S, 0, 0, 0, NOC}, X /* 20*/ {S, 0, 0, 0, "\141"}, X /* 21*/ {N, 0, 0, 0, "|"}, X /* 22*/ {S, 0, 0, 0, "\166"}, X /* 23*/ {N, 0, 0, 0, "\042"}, X /* 24*/ {S, 0, 0, 0, "\145"}, X /* 25*/ {N, 0, 0, 0, "="}, X /* 26*/ {S, 0, 0, 0, "o"}, X /* 27*/ {S, 0, 0, 0, "\244"}, X /* 28*/ {S, 0, 0, 0, "\161"}, X /* 29*/ {S, 0, 0, 0, "\241"}, X /* 30*/ {S, 0, 0, 0, "\163"}, X /* 31*/ {N, 0, 0, 0, "_"}, X /* 32*/ {N, 0, 0, 0, "\\"}, X /* 33*/ {S, 0, 0, 0, "\127"}, X /* 34*/ {S, 0, 0, 0, "\177"}, X /* 35*/ {S, 0, 0, 0, "\044"}, X /* 36*/ {S, 0, 0, 0, "\143"}, X /* 37*/ {S, 0, 0, 0, "\277"}, X /* 38*/ {S, 0, 0, 0, "\046"}, X /* 39*/ {S, 0, 0, 0, "\375"}, X /* 40*/ {S, 0, 0, 0, "\170"}, X /* 41*/ {S, 0, 0, 0, NOC}, X /* 42*/ {S, 0, 0, 0, "\131"}, X /* 43*/ {S, 0, 0, 0, NOC}, X /* 44*/ {S, 0, 0, 0, "\125"}, X /* 45*/ {S, 0, 0, 0, "\110"}, X /* 46*/ {S, 0, 0, 0, "\130"}, X /* 47*/ {S, 0, 0, 0, "\265"}, X /* 48*/ {S, 0, 0, 0, "\260"}, X /* 49*/ {S, 0, 0, 0, "\123"}, X /* 50*/ {S, 0, 0, 0, "\113"}, X /* 51*/ {N, 0, 0, 0, "\366"}, X /* 52*/ {S, 0, 0, 0, "\103"}, X /* 53*/ {S, 0, 0, 0, "\325"}, X /* 54*/ {S, 0, 0, 0, "\120"}, X /* 55*/ {S, 0, 0, 0, "\272"}, X /* 56*/ {S, 0, 0, 0, "\273"}, X /* 57*/ {N, 0, 0, 0, "~"}, X /* 58*/ {S, 0, 0, 0, "\132"}, X /* 59*/ {S, 0, 0, 0, "\104"}, X /* 60*/ {S, 0, 0, 0, "\041"}, X /* 61*/ {S, 0, 0, 0, "\122"}, X /* 62*/ {S, 0, 0, 0, "\174"}, X /* 63*/ {N, 0, 0, 0, ">"}, X /* 64*/ {S, 0, 0, 0, "\116"}, X /* 65*/ {N, 0, 0, 0, "<"}, X /* 66*/ {N, 0, 0, 0, "/"}, X /* 67*/ {S, 0, 0, 0, "\266"}, X /* 68*/ {S, 0, 0, 0, "\124"}, X /* 69*/ {S, 0, 0, 0, "\310"}, X /* 70*/ {S, 0, 0, 0, "\360"}, X /* 71*/ {S, 0, 0, 0, "\342"}, X /* 72*/ {S, 0, 0, 0, "\365"}, X /* 73*/ {S, 0, 0, 0, "\343"}, X /* 74*/ {S, 0, 0, 0, "\344"}, X /* 75*/ {S, 0, 0, 0, "\362"}, X /* 76*/ {S, 0, 0, 0, "\363"}, X /* 77*/ {S, 0, 0, 0, "\364"}, X /* 78*/ {S, 0, 0, 0, "\361"}, X /* 79*/ {S, 0, 0, 0, "\341"}, X /* 80*/ {S, 0, 0, 0, "\340"}, X /* 81*/ {S, 0, 0, 0, "\052"}, X /* 82*/ {S, 0, 0, 0, "\045"}, X /* 83*/ {S, 0, 0, 0, "\376"}, X /* 84*/ {S, 0, 0, 0, "\134"}, X /* 85*/ {S, 0, 0, 0, "\136"}, X /* 86*/ {S, 0, 0, 0, "\175"}, X /* 87*/ {N, 0, 0, 0, "=\b/"}, X /* 88*/ {N, 0, 0, 0, "{"}, X /* 89*/ {N, 0, 0, 0, "}"}, X /* 90*/ {N, 0, 0, 0, "\250"}, X /* 91*/ {N, 0, 0, 0, "\251"}, X /* 92*/ {N, 0, 0, 0, "^"}, X /* 93*/ {N, 0, 0, 0, "#"}, X /* 94*/ {S, 0, 0, 0, "\373"}, X /* 95*/ {S, 0, 0, 0, "\267"}, X /* 96*/ {N, 0, 0, 0, "~"}, X /* 97*/ {N, 0, 0, 0, "\322"}, X /* 98*/ {N, 0, 0, 0, NOC}, X /* 99*/ {S, 0, 0, 0, "\317"}, X /*100*/ {N, -220, 0, 0, "|"}, X /*101*/ {N, 0, 2, 0, "*"}, X /*102*/ {S, 0, 0, 0, "\276"}, X /*103*/ {S, 0, 0, 0, "\315"}, X /*104*/ {S, 0, 0, 0, NOC}, X /*105*/ {N, 0, 0, 0, "+"}, X /*106*/ {S, 0, 0, 0, "\242"}, X /*107*/ {N, 0, 0, 0, "\275"} X}; X Xint fontCount = 0; X XljPage() { X printf("\033&l0H"); X pagePending = 1; X} X Xstatic XdoPageStart() { X currentPage++; X fontCount = 0; X pagePending = 0; X} X Xstatic Xputoct(s) Xchar *s; { X int d; X if (strlen(s) < 3) { X fprintf(stderr, "%s: octal sequence in fonts.l[kj] bad\n", progname); X exit(1); X } X d = (*s - '0') * 64 + (*(s+1) - '0') * 8 + *(s+2) - '0'; X putchar(d); X} X Xstatic Xint Xptcvt(points) Xint points; { X register int r; X switch (points) { X case 6: r = 0; break; X case 7: r = 1; break; X case 8: r = 2; break; X case 9: r = 3; break; X case 10: r = 4; break; X case 11: r = 5; break; X case 12: r = 6; break; X case 14: r = 7; break; X case 16: r = 8; break; X case 18: r = 9; break; X case 20: r = 10; break; X case 22: r = 11; break; X case 24: r = 12; break; X case 28: r = 13; break; X case 36: r = 14; break; X default: r = 15; break; X } X return(r); X} X X/* This function originally from Ronald Florence (ron@mlfarm), X but extensively modified for new fontFlags mechanisms. X X We'll go at most 4 points up or down. If this fails, X we'll let the printer decide... You may want to tweak X these arrays. X X We go up first for requested pointsizes > 10, and down X first for requested pointsizes < 10. Seems to work best X with EQN. X */ X Xstatic int Xbestmatch(font, points) Xint font, points; { X X static int smalltry[ ] = { 0, -1, 1, -2, 2, -3, 3, -4, 4, 100 }, X bigtry[ ] = { 0, 1, 2, -1, -2, 3, 4, -4, 100 }; X X register char *p; X register int *ip; X X ip = (points < 10) ? smalltry : bigtry; X p = fonttable[font].fontFlags; X X for ( ; *ip < 100; ip++) X if (p[ptcvt(points + *ip)] != 'n') X return(points + *ip); X X return (points); X} X X#ifdef INCR Xdumpseq(font, pointidx, seq) Xint font, pointidx; Xregister char *seq; { X int fn = (font << 4) + pointidx; X static int lastftid = -1; X register int c; X register struct pkc *pc = (struct pkc *) NULL; X X DBP((D_FONT, "dumpseq font: %d, idx: %d, seq: %s\n", font, X pointidx, seq)); X X for (;c = (*seq)&0xff; seq++) { X if (!downchar(font, c, pointidx)) { X X for (pc = fonttable[font].map->pkfont[pointidx]->pkp_chars; X pc; pc = pc->pkc_next) X if (pc->pkc_char == c) X break; X X setdown(font, c, pointidx); X X if (!pc) X continue; X X if (lastftid != fn) { X DBP((D_FONT,"Emitting download font select (%d)\n", fn)); X printf("\033*c%dD", fn); X lastftid = fn; X } X X DBP((D_FONT,"Downloading %02x\n", pc->pkc_char)); X epkc_desc(pc, stdout); X } else X DBP((D_FONT,"Already downloaded %02x\n", c)); X } X} X#endif X XljSetFont(font, selpoints, fontcode, sequence) Xint font, selpoints, fontcode; Xchar *sequence; { X int points, pointidx; X register char *pf, *p; X register struct pkp *pk; X#if !defined(INCR) && defined(PK) X register struct pkc *pc; X#endif X char buf[BUFSIZ]; X#ifndef PARTIAL X FILE *fontfile; X#endif X int count; X int ftid; X X#ifdef COMPRESS X int compressed = 0; X#endif X X X#ifndef INCR X if (lastPoints == selpoints && font == lastFont) X return; X#endif X X points = bestmatch(font, selpoints); X pointidx = ptcvt(points); X X pf = &fonttable[font].fontFlags[pointidx]; X ftid = (font << 4) + pointidx; X X#ifdef INCR X#ifdef SFP X if (*pf == 'S' || *pf == 'P') { X#else X if (*pf == 'P') { X#endif X /* header downloaded, check and download individual characters */ X dumpseq(font, pointidx, sequence); X X if (lastPoints != points || font != lastFont) { X DBP((D_FONT, "Selecting font %d\n", ftid)); X lastPoints = points; X lastFont = font; X printf("\033(%dX", ftid); X } X X return; X X } X X if (lastPoints == selpoints && font == lastFont) X return; X#endif X X lastPoints = selpoints; X lastFont = font; X X switch(*pf) { X#ifdef PK X case 'p': X#ifdef PARTIAL X case 's': X#endif X sprintf(buf, "%s/%s.%d.%s", LJF, X fonttable[font].troffName, points, X (*pf == 's') ? "sfp":"pk"); X X fontCount++; X if (fontCount >= MAXDLFONTS) { X#ifdef INCR X pkflush(font, pointidx); X#else X fprintf(stderr, "Too many fonts (page %d), simplify!\n", X currentPage); X#endif X } X DBP((D_FONT,"FONTLOAD PK font (ftid: %d) %s.%d via '%s'\n", X ftid, fonttable[font].troffName, X points, buf)); X X /* Read the PK file in-core */ X pk = pk_read(buf,fontcode); X X /* Set the fontid we'll use */ X printf("\033*c%dd4F", ftid); X X /* Emit the SFP header */ X epk_desc(pk, stdout); X X#ifndef INCR X /* Emit each character */ X for (pc = pk->pkp_chars; pc; pc = pc->pkc_next) { X DBP((D_FONT,"Downloading ch %02x\n", pc->pkc_char); X epkc_desc(pc, stdout)); X } X X /* Clobber in-core PK */ X pk_destroy(pk); X#else X fonttable[font].map->pkfont[pointidx] = pk; X dumpseq(font, pointidx, sequence); X#endif X X *pf = toupper(*pf); X X /* buf */ X goto setdownloaded; X#else X case 'p': X fprintf(stderr, X "%s: Font %s, size: %d is a PK - PK not defined in defs.h\n", X progname, fonttable[font].troffName, selpoints); X goto setbuiltin; X#endif X X#ifndef PARTIAL X case 's': X sprintf(buf, "%s/lj/%s.%d.sfp", LIBDIR, fonttable[font].troffName, X points); X X fontfile = fopen(buf, "r"); X X#ifdef COMPRESS X if (!fontfile) { X sprintf(buf, "%s %s/lj/%s.%d.sfp.Z", X COMPRESS, LIBDIR, fonttable[font].troffName, points); X fontfile = popen(buf, "r"); X compressed = 1; X } X#endif X X if (!fontfile) { X fprintf(stderr, "%s: cannot open fontfile\n(%s)\n", progname, X buf); X goto setbuiltin; X } X X fontCount++; X if (fontCount >= MAXDLFONTS) { X#ifdef INCR X pkflush(font, pointidx); X#else X fprintf(stderr, "Too many fonts (page %d), simplify!\n", X currentPage); X#endif X } X X DBP((D_FONT,"Loading font (ftid: %d) %s.%d via '%s'\n", X ftid, fonttable[font].troffName, X points, buf)); X X printf("\033*c%dd4F", ftid); X X while(0 < (count = fread(buf, sizeof(char), sizeof(buf), fontfile))) X fwrite(buf, sizeof(char), count, stdout); X X#ifdef COMPRESS X if (compressed) { X if (!pclose(fontfile)) { X fprintf(stderr, "%s: compress failed!\n", progname); X exit(1); X } X } else X#endif X fclose(fontfile); X X *pf = toupper(*pf); X#endif X /* Fall Thru */ X X case 'S': case 'P': X /* Select primary font by font id */ X setdownloaded: X DBP((D_FONT, "Selecting font2 %d\n", ftid)); X printf("\033(%dX", ftid); X break; X X default: X setbuiltin: X *pf = 'b'; X X case 'b': X /* if builtin font, select it by characteristic */ X for (p = fonttable[font].fontSeq; *p; p++) { X if (*p == '\\') { X putoct(p+1); X p+=3; X } else X putchar(*p); X } X printf("\033(s%dV", points); X break; X } X} X XljChar(x, y, font, points, troffChar, sequence) Xint x, y; Xint font, points, troffChar; Xchar *sequence; { X register int nx = TROFF2LJX(x), ny = TROFF2LJY(y); X register struct troff2befont *rp; X X#ifndef OPT X sequence = (char *) NULL; X#endif X X if (pagePending) { X resetState(); X doPageStart(); X } X X DBP((D_BEND,"BEFORE (troffChar,x,y,font,points) = (%d,%d,%d,%d,%d)\n", X troffChar, x, y, font, points)); X X if (font == 3) { X rp = &be->besymfont[troffChar]; X } else { X rp = &be->bestdfont[troffChar]; X } X X switch(rp->t2b_font) { X /* Only fonts with "N" are subject to font translation */ X case N: X if (font == 3) X font = 0; /* Special chars are Roman */ X else { X DBP((D_BEND,"ljSetChar %d->%s (%s)\n", font, X xlatetable[font]->troffName, X xlatetable[font]->fontName)); X font = xlatetable[font] - fonttable; X } X break; X case S: X font = 3; X break; X case D: X break; X default: X /* Typically used when the R and S fonts don't have the X character desired, so select the font via the index X in the fonts.?? file */ X font = rp->t2b_font; X break; X } X X if (!sequence) X sequence = rp->t2b_charseq; X X if (!sequence) { X fprintf(stderr, "%s: No coding for char %d in %d font\n", X progname, troffChar, font); X return; X } X X /* We're committed now - the "if" statements avoid floating X arithmetic on slow machines */ X X if (rp->t2b_scale) points *= (.01 * rp->t2b_scale); X if (rp->t2b_xc) nx += points * (.01 * rp->t2b_xc); X if (rp->t2b_yc) ny += points * (.01 * rp->t2b_yc); X X ljSetFont(font, points, rp->t2b_font, sequence); X X DBP((D_BEND,"AFTER (sequence,x,y,font,points) = (%s,%d,%d,%d,%d)\n", X sequence, nx, ny, font, points)); X X/* Egads, I discovered that 42% of the time in troff2ps was spent X doing these damn conversions! */ X X#define XYS "\033&a%dh%dV%s" X#define XS "\033&a%dH%s" X X if (lastYPos != ny) { X printf(XYS, nx, ny, sequence); X lastYPos = ny; X } else X printf(XS, nx, sequence); X} X XljProlog() { X extern char *ctime(); X FILE *library; X int c; X register char *p; X X#ifndef LJF X LJF = mustmalloc(strlen(LIBDIR) + 5, "ljprolog"); X sprintf(LJF, "%s/lj", LIBDIR); X#endif X X /* to ensure that the strings are long enough for indexing and X are sufficiently initialized */ X X for (c = 0; fonttable[c].troffName; c++) { X register int i; X p = mustmalloc(20, "ljfontflags"); X strncpy(p, fonttable[c].fontFlags, 16); X p[16] = '\0'; X free(fonttable[c].fontFlags); X for (i = strlen(p); i < 16; i++) X p[i] = 'n'; X fonttable[c].fontFlags = p; X } X X#if defined(INCR) X /* create empty downloaded-yet arrays */ X for (c = 0; fonttable[c].troffName; c++) { X register int i; X for (i = 0, p = fonttable[c].fontFlags; *p; p++, i++) X#ifdef SFP X if (*p == 'p' || *p == 's') { X#else X if (*p == 'p') { X#endif X DBP((D_FONT, "Allocating font %d, size %d\n", X c, i)); X if (!fonttable[c].map) { X fonttable[c].map = (struct downmaps *) X mustmalloc(sizeof(struct downmaps), "downmaps"); X } X fonttable[c].map->nm[i] = (ETYP *) mustmalloc(ELEN * X sizeof(ETYP), "Nmaps"); X fonttable[c].map->lastpage[i] = 0; X } X } X X#ifdef DEBUG X dumpmaps(1); X#endif X X#endif X X#if defined(PARTIAL) X /* create need-arrays */ X for (c = 0; c < 108; c++) X if (ljStdFont[c].t2b_charseq != NOC) X for (p = ljStdFont[c].t2b_charseq; *p; p++) X addneedchar(ljStdFont[c].t2b_font, *p); X X for (c = 0; c < 108; c++) X if (ljSymFont[c].t2b_charseq != NOC) X for (p = ljSymFont[c].t2b_charseq; *p; p++) X addneedchar(ljSymFont[c].t2b_font, *p); X#endif X X#if defined(DEBUG) && defined(PARTIAL) X dumpmaps(0); X#endif X X currentPage = 0; X pagePending = 1; X X library = libopen(printer, "lib"); X X ljXlate(library); X fclose(library); X doprologs(); X} X XljEpilog() { X#if defined(INCR) X register struct fonttable *fp; X register int i; X /* delete fonts still active that we downloaded */ X for (fp = fonttable; fp->troffName; fp++) X if (fp->map) X for (i = 0; i < 14; i++) X if (fp->map->pkfont[i]) X printf("\033*c%dd2F", ((fp - fonttable) << 4) + i); X#endif X X#if defined(DEBUG) && defined(INCR) X dumpmaps(1); X#endif X} X X/* Copy the library file to the standard output, stripping X %line\n X %%% is a metadirective X and converting \nnn and \xnn as you go. X Strip out line termination. X*/ X XljXlate(library) XFILE *library; { X char buf[4]; X int c, i; X c = getc(library); X while(!feof(library)) { X X nextchar: X X switch(c) { X case '%': X /* strip from percent sign to end of line */ X /* If line is %%% pass onto interp */ X if (((c = getc(library)) == '%') && X ((c = getc(library)) == '%')) { X char buf2[4]; X sprintf(buf2, ".%s", be->bename); X fgets(buf, strlen(buf), library); X interp(buf, ljXlate, buf2); X break; X } X while ((c = getc(library)) != EOF && c != '\n'); X break; X case '\n': /* throw away real newlines. */ X break; X case '\\': X c = getc(library); X if (c == 'x' || c == 'X') { X i = 0; X while(1) { X c = getc(library); X X if (c == EOF || !((c >= '0' && c <= '9') || X (c >= 'A' && c <= 'F') || X (c >= 'a' && c <= 'f'))) X goto nextchar; X X buf[i++] = c; X if (i == 2) { X buf[i] = '\0'; X sscanf(buf, "%x", &i); X putchar(i); X i = 0; X } X } X } else { X buf[0] = c; X i = 1; X while(1) { X c = getc(library); X if (c == EOF || c < '0' || c > '7') X goto nextchar; X buf[i++] = c; X if (i == 3) { X buf[i] = '\0'; X sscanf(buf, "%o", &i); X putchar(i); X i = 0; X } X } X } X /* NOTREACHED */ X X case ' ': case '\t': X break; X X case EOF: X fprintf(stderr, "%s: Unexpected eof on ljlib\n", progname); X break; X X default: X putchar(c); X } X c = getc(library); X } X} X#endif END_OF_FILE if test 21773 -ne `wc -c <'lj.c'`; then echo shar: \"'lj.c'\" unpacked with wrong size! fi # end of 'lj.c' fi echo shar: End of archive 2 \(of 16\). cp /dev/null ark2isdone 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)