clewis@ecicrl.UUCP (Chris Lewis) (11/17/90)
Submitted-by: Chris Lewis <clewis@ecicrl.uucp> Archive-name: psroff2.0/Part11 #! /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/I.10.pk.UU fonts.lj/S.12.pk.UU opt.c # utils/Makefile utils/fonts/cmss10.pk.UU utils/pk2ps.c # utils/showfont.S widths/Makefile # Wrapped by clewis@ecicrl on Fri Nov 16 23:36:54 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 11 (of 16)."' if test -f 'fonts.lj/I.10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/I.10.pk.UU'\" else echo shar: Extracting \"'fonts.lj/I.10.pk.UU'\" \(7133 characters\) sed "s/^X//" >'fonts.lj/I.10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/I.10.pk XM]UD``*``````````!":N``0FKN`.J0```!4&"/<<8\<.&'#!X`^H````%0@' XM\QP.'APX<,"`X`^S````(@<'[QT<A0P8*(X`H!HA````#`D>_!UB;T4UXD7C XM-N,FXR?QV/-48F#@'2(````5#@S\'!@8\/?'S0T$!!`0@(("$!!`1@8@(+!1 XM(P```",?)?T<QB<L<V/'\G+'-CQR<L<V/'\G+'-CQR<L<V/')RG0+2^R<L<V XM/'XB<L<V/')RO2+0DG+'-CQ_)RQS8\<G+'-CQ_)RQS8\?R<L4,!/)````!43 XM(?T>SQTFLC$B@4%185%146%A,F%#\R830C44,S4;-!M2&YNJJYP17!,\%"46 XM%#,T%2-$%2,U%2,7%107%"46%!85%!@C$BMM/QO`;R4````C&R'Z'E33)",= XM$S)1PS)CA#-Q&!,R@9,S@8-#@7-3@7)C@6-B@6-R@5."<5.384.R45+0%!4] XM%%-DT#4D&S4E&R4V&34GW%S8H%C8X%B<X%3<X%#@X$SDW$SHW$CPF$RT" XM43/1(Q0M-%#`5R8````@'1_]'</<(AVB,=GR0=CS0=@S'9)!V2,=GS(=HQ&) XM@[2SPK2RL1.QL2.AL32!LD.!HE-QHV-1LG-!LX,QLX,APY2A(Y.A,Z.10W(3 XM<6)20T*5A7#@$2<````,!@SY'!CWS000@A!&(-`H*````!`.*OP>T<&RLK+! XMPK*_*_*_*SOROSOB*^<\XRT=\M+1TM$!`7#0*RD````0#BH`'G$!`0$!TM'2 XMT=XBP^?"XK/[*_._*SLK.RL[*_*RLK*RLK'0P"@J````%1$2^QZ>(M(9)14B XM-!-#,B(WB_2C$1)T(2-#,C024E&2TATO*<`@*P```"`;'/P7TN(ML]OD+;/; XMXBP"G#V^0ML]OC+;/;+2X!`L````#`4,_0,[WG"$0B$1`,`*+0````X,`O\) XM'9'@"BX````,!`3\`W?VP$<O````%1<I`![8+7/7+7/7+7/7+7/7+7/7+7/7 XM+7/7+7/7+7/7+7/6/7+7/7+7/7+7/7+7/7+7/7+7/7+7/7+7/7+7/6/7+8#0 XM+S`````5$1W\&X6C,W)B;R@D*3\CDR*CXQ.FY*,3HB.3+RHR*B,I,RDE)R8F XM*"0J6=`8,0```!4-'/P;LI-V4C.N(YY3GE.>4Y.D3<`T,@```!43'/X;EK)3 XM@8-O&C]$@_-8-#D])-(]+STCTCTCTCTBTRTRTR@7*18:%AL5T4T4TD#`,S,` XM```5$AW]&Y6R0X%S88->)&1#<](]$](M(M$[;4/3\]+B0SA"]70D@S.$,:-1 XM@W)3IH#`,S0````5$AS^&],M(M+ST4T!$\$CL2.R(Z(SH4.14X%C<6-Q<V)S XM88-1DT&C/5Y+/1/22K'`,34````5$AW]&V)S:WF)GD'3'4$UD1)"@F-_&#TC XMTN)".$+TA"2#,:0QHUX*"0[60P#HV````%1$=_!NEHT&"<6)C4F1"=#-S XM0M$]$M$S5C$D)4<C,1<R])(N(Z,3DRXBHR*3,X)2<U)R<D*U@,`O-P```!42 XM'?L;,=/],M(BP3'!0;%!L=0=,=,=,=,M,=/RTBTO/131\]'B30XDTBT`T#8X XM````%1(=_1N5LE*!@F*"7B*B\SDD1R94)V(I?'N((V8E9"A#*C,K(N(L(BP3 XM*R0J%2@G-2IHP#PY````%1$=_!N%HE&"8F*"0X(SDC.3(J/C$Z,3E!.3(X0R XMA$)A$U%1(V4CT3T2T30H)$8T1B4V)A<H%#I:D!`Z````#`<2_!%"1/,][S-$ XM)(`7.P````P(&OT14E3T/:-/13?Q;Q;Q86%PH!FX````#`@>_1127T4M+C%N XM,EXC4EXS3C1#4,`0/0```"`<#/T/+<+>#3WBW"#`*;D````4$!W_%*+0]-`@ XM4.,=$M$=$M$=$M`L/#P]`X,CAY,BHB.10F-G8-`B/P```!0/'?H<5V)B09(B XME_AI.SL[.RPM'1TM\=XA!9\[3"O`4D`````@'!W\'-!]4W+1+!P=(:'4&!UA XM882!47)"<4%B87$Q8H-!,5.#4>(14Y-2XU.341%BDT$A8W1!,6)A$D%!<D$C XM(D&%1''?'?'?'3.2EM"JP#]!````'QP=_QS5'>+<\]OTVEV2%-@237(DUQ-- XM8C36%%U"5-0633\732&$TAA=#2T!I,\;2QQ+'02?'11TQ4E\P#5"````'1L< XM_AM-706#M*.DI)2SGTM'3#CTM(2DE)2D=+TL24I*2>)+1^-,1TM(2DA*24E& XMUH#`0$,````>'#UA1-84/7$^)-KD3; XM37$TUA7SUA8]07/3&3TAHM`L*QTC<M9\P#Q$````(!X<_AM-736$T$L\3#OT XMT#I-!(XTTCA-)'32-TTS?B321TTCA-%']-(X31.4T#I,2DL[2SQ).M7`P#I% XM````'!L<_AM-J%I(3#XX30&$T1A&%QCT8=-%+31#TKTT4M/B1ATT87%_32%_ XM31&$T"A,*$PX2E394,`N1@```!L:'/X;39A92$L^.$P830&$86&/1ATD4M)$ XM/1O212TN-&'1Y4V$V5U-#0#`1$<````A'#UA1-84/7$^)-KB3;3-/34TU$---%\]-&\])'/06"T$HJ(BLV)1T6T-`A XM2````!\?'/X;32R%E<Y$I,Y4I,`4WD2DSE2DQ*35E8PL4-`620````\1'/\; XM387.1,Y4SE3.5,35C4#`(TH````5%!W^&WT,72Y$TN5-+E32](-4?U1'1$@U XM.18[%#T%T,!+2P```"`?'/X;30686UI,/$P=%+'22ATTD=-)'42!U48==%'8 XM1#UT--9#$4U4(23501-=15341DU$=-)(32])31]*302TM,2UIFQ;,,`B3``` XM`!H6'/X;31Q=3D34Y4U.1-5+'B5,'U2Q9*)4HU2$+7+06$T````F)AS^&TD! XM*84!%L$4`07?$4T13?$4P23/$TH23?$TD331-(%$T41Q1,\51A1-\5115-%D XM,6319"%TP70A9-\701=-%UA-&$A-&#E,*#A,1RE8E27%T$).````'Q\<_AM) XMBH6TMK+!%+'1%:'?$DH<\42!WQ5''?%D8<\81!WQE#'1E2'1I"'!MM\<7?'4 XMT0$#P@$"Q`$!F<&0P$%/````(!P>_!S0?5-CT3D\/"H]`X/2-CTS5--$/5,T XMU3,]8RXDUHX]9!XDU4,]1$/4-4TD8]%'30.3P[.3TC4]9]#`*E`````<&AS^ XM&TU<5TI*.4I.*$L^)TM'2SA*.4DY2$K0T.--CE383974S1#`6%$````@'"7\ XM'-!]4V/1.3P[.CT#@](V/3-4TT0]4S35,SUC+B36CCUD%-8R]-5#/41#U#5& XM-D8U$Q4W-!43.3(6$CLQ%DTD0W&Y<=4G'5)AUC0M:==]AMI'P$!2````'QT= XM_AM-335ST4E,2DM+._2TGTM*2SM*/$D]!'30T--'/22#T4A-!)/024OD24Q) XM1A1*115:-1''-!VE,,`Y4P```!<6'OX<IE&"8B)RDW*C8L)>(\)$P5357574 XMG1O+R]&=1=5-;S3B'1-!T24L-#PE2B8B)C<5><`L5````!X<'/P;/<)'5D(I XM22(:21(J21+QM)$AI*$1M*'0XTVN5-KE3:3;74TYV"I5````'QL=^AO4I%M' XM32CC31CE31CE31CB31KSP;.QTY$!$H$!,T(!90$0R#]6````'QT=^QO(DVT$ XM=-(H32&4T1M-`;],'$L=!:'1])'2]('35AU48=5%'61"UD0==2'90AV?01VO XM7<\]WRU0R&57````*RD=^QO$M9-;6D=+6RA,2QE+6QE+6AI*$4H:2A%)*E@2 XM21Q($E@<]'%$<=#T851AT44611TE0611TT,74QU$,80QU/0AE"'502E!'601 XMI!'6:EV$M=A,/9/0/9/0+:\M$M/`1E@````?'QS_&UQ*AX7%D]))+36!U4<= XM9&'75!V4,ME2';01W%WDWO7=;;$DVA--D477)4UQ9=4834&5TAM-$K7"T$I; XM9J;#R#M9````'QT<^QO)@VT$=-(H71&DT!M;'02AT5D=%8'31QU%4=9%'64Q XMV$(=E!':;;]-P]SD3</<3<77S0#`/%H````9&1S^&VUE6D8[1RM(*E@;21I) XM&DH977373737773737377721I)&DH92QE**$L82R=,)TI&25;6;0&EL````, XM#BG^'G]_<KY2OE*^4KY2OE*^0L=G<-`:70````P.*0(>?W_"Y;*^4KY2OE*^ XM4KY"=V=PX!!>````%0H&]QP$`X&PQD"@$.`18`````P&#/H<!"$((000N^>, XMP"MA````%1(2_1%7DU*$4G-C8G/2\ZAT0V-38G-3<T\X,T=#1A$R$C02,2-D XM,\`O8@```!<2'?P<)M%-'E/1XCTC-(,20F1R1(,_.B/B.CXA.C(Z(SDS.#-( XM)"(D)A5(T"%C````$@\2_1%V<S-25#)C,V)"SB.^(]+2H2.!0G%B4890P"]D XM````%Q0=_1S1;33ETST^(Z0S@D(38H13@U.34J-.(Z,^(Z-?*C4X1B=()"%) XM0V+`)64````2$!+^$7:#0F)R0W,CDB*B$Z(=(3SB/1+1*Q,I%"@6-"E6P")F XM````#1(=_QS%LR.20X,T<U*.(]'B.[OST>4]'E/1/22Z@,`[9P```!46'``2 XMU3M"(B@C(1(W)207-3KC-CHU/"4M`S+0$DTAU_+7O,G1<J-AT"4M`S\M$E+" XM<;*2<\>@P"9H````%Q0=_QQ6TTT^4]/B/4,UDQ)"A&-O1S;C.#7E.#4X-D=" XMDI#0%VD````,"AW_'(+W-R!,9D<VY3;E-C=#D=`@:@````T0)00<`0+]/2![ XM?$T\Y3SE/.4U)35$-4,W(SE9P#5K````%A4=_QQ6U$U.4]3B/5-(8V2#8I-A XMLU'#0=`S'1,3T8Q"/#-+-#LT2C4Z-4@W.#94DH+0%FP````,"QW_'%9TY7-^ XM4WY3?E-SA$D@T"EM````)"$2_Q$V-F:$(5)!4H5C$F-O2$@VXSDY->4Y.34Y XM.39(2$*3DY#0'FX````7%!+_$38UA!)"A&-O1S;C.#7E.#4X-D="DI#0)&\` XM```5$Q+^$8:R4W."4Y,SLC+"+B/&XL,BPC*S,Y-3<W-2MH#`+G`````7%AH` XM$48TM!)"I'*$@W.3<Z)^(Z/B4Z-O.3<X-T<X,20J,TSB/5XSTYT`P"YQ```` XM%A(:_1&$46)!,D-A$S.#/SDRXCHQXCHS*C,Y,SA$)T8D(3A#/2XCT>,\D=`: XM<@```!`0$O\1-B-V$W0D5#-D,GXSSE/#U)I@T"=S````$`\2_Q%F(4)C,H(Q XMD3*1,X$UN(B(Q"&3+QHB*"(X$R$5)!-ET!UT````$`L:_!EN(9\H*#=%OS-^ XM4W..,U$O-!0C%D38'74````7$1+\$65B1T,X/E(X,N,X,_-T,V124116)L@I XM=@```!83$OP1A')(-3@F.!<W)S<811HU&O-!LS'0,AT#$=%=%-(]0M0<V#QW XM````'AL2_!&"@G)&1C0X)R4W-Q<V1A?S41-1@T$C09-!,D&3,4(QLR%#(;\Q XM%3$<1DU'/3@@$2@@$1D;P"YX````%A82_Q$X.%54DV+#4=`T'2,ATS$M1-4] XM<]5-02/2$TT!4\%SHG.$=%=)(,`X>0```!87&@`12$=D@Y."HX&S<K-QQ%'1 XM-1T?-!TC,=0R'4,1U5U4UCV"V/'8\=$T'1]#'2,BU$U0T"=Z````$A$2_Q%- XM0V-1<U)S47-A8W%3T]\]-1<V%C<5-Q4X%3<D-C34R`GV````%10!_@O7X`^L XM````%0X$^1L>!/XV/Z`XX`ZK````%0L$]QQ@WC_'L�$/X````@&QS^&M[" XMP#CJTL`XP%32````(!L<_A>GU2<M$K*QTAD=07'4$14=03%!TQ03'3%A(=(7 XM$1TADM$:+0&R_!PK'0*AT2D=(1%QTA(6'3$Q0=,4$QU!41'4%QU!D=(;*RT2 XM<M5ZP!]^````(!L)_@Y5TQ.-(2O0$45+6%A;14$="R'2@QTU4,!,^P```"HE XM'/X7VBHMA(362$USD]=(362$UDA-<Y/72$UDA-9(37.3UTA-;TA-I(3:.3VD XMA-I(3:2$VCD]I(3:2$VDA-HY/:2$VDA-HJ+(3/T````J)1S^%RHMI(3:2$VC XMD]I(3:2$VDA-HY/:2$VDA-I(3:.3VDA-KTA-9(37.3UTA-9(362$USD]=(36 XM2$UDA-<Y/72$UDA-@J+:T#N]````$@LE_1PU4D$S42)E]681.2DY*BDW(B0S XM(R0Q-2'B-3$E,30C(S0B)SDJ*3DI,19O56(A4S%"53"8"5\````5%0,`]]6( XM"7P````,`BG['MD8"OP````9%!7^%`\@P"L\````(!D8_179/73636363636 XM3636363636]-I-I-I-I-I-I-I-I-I-I-H\@K/@```"`9&/T5/:3:3:3:3:3: XM3:3:3:3:3:]-9-9-9-9-9-9-9-9-9-9-<]G(+%P````5$"G^'O+2XBTN(M+B XM+2XBTO+2XBTN(M+B+2\M+B+2XBTN(M+B+2+2$-`;>P```!4.*?T>I(.CLK[# XMLK.3A-/3PL[#PL/#U-@;?0```!4.*?T>33T\+.P\+#P]2#H[*^P[*SDX2L`W XMNP```"`9'?P<U%UB0=,V'1-QT2D<.1PW.S<\.!T//8XCU;U.,]CC/4>A6:%" X/18%15T-1,SB$=8#U]O;V X` Xend END_OF_FILE if test 7133 -ne `wc -c <'fonts.lj/I.10.pk.UU'`; then echo shar: \"'fonts.lj/I.10.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/I.10.pk.UU' fi if test -f 'fonts.lj/S.12.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/S.12.pk.UU'\" else echo shar: Extracting \"'fonts.lj/S.12.pk.UU'\" \(6583 characters\) sed "s/^X//" >'fonts.lj/S.12.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/S.12.pk XM]UD``,``````````!":N``0FKK!3(0```"8E,?XDV!UR_6+6\M;RUN(M;RUO XM+6\M;RUO+6\M8L0L4L,\4L),0L(13#+`(DPBQDP2QDP"R$LLCTHLKT@LST8L XM[T0L]3+0]"+2]M3TUO+*P%8D````,BL5_11GU6NM"W0WHX)3=H*R0;5BT!,= XM!4+2$AT5(M,1+2?5+4;5+476+575+674+5;4+5?2(1TR)=$2'2)%T!,=`F6Q XM0K*&<U*#IS1[T*MM5V"0'24````G(1S]&:8;3UL7L?6T$)S8"<&T];%['UM! XMIL!%)@```"<@%?T49=1$K#8F23<H1RD;-2D<0RH=!"&ATC$J'26QTTL=0['4 XM2AU%D=,A.ATA))'1(T@L)3D;)T@8.4@S/'9=1,@Y*@```"<8&/D7+775,3TS XM,]$U/#<Z.3@[-CT#0](R/4;6]-9M0R/2-#T#8[.#DZ-SPU/1,STS$]5=<I@) XM+0```"<>`OP,TL`Q/````"8='/P9WBW$VDVDVDVDV5V5V4VDVDVDVDVO3>3> XM3>3>3>3>7=7>3>3>3>3>3>+(,3T````F'1S\&2WDWDWDWDWDWEW5WDWDWDWD XMWDWO3:3:3:3:3:3979793:3:3:3:3<+>R!]#````'QHB_B']QDM630-DT29- XM(6]-(N-4TQ[65-3]*[!91````"HE(_XBQAU_/5]=,172$DT1-=`43/%5SA9, XMT77,&$RQE<H:3)&UR!P$QQPDQ2PEQ!Q$PRQ%PAQDP2QEP!R$LLA:'*22RE@< XMQ'+,5ASD4<]4'00_UQV0P$](````)R`D_2+(V38]4Z/2/#Q-%*/3.4TT=-5% XM755$UT/UUU+TV4'U0<%*XDT4KT'!2OV5%-E"]==3371%U55-5']--)312TQ- XM$Z/5-CV8P,!"2P```",>(_XBT>(M[B3<;;\13:$EV?$TV!1=?Q5-8675\734 XM&%T_&4TAI='QM-`<7/'02QT5KQTDD=-8+31TT53YG$@;3@```"$<(OXAH.-E XM'<XA6Q5>)=5>(5L=SD%EH)@14````"4@(OXAUNLU2D1?I$I`R$Y2````)!TB XM_2']\DU&)=8S76)$UB1=8D75)4UA9-4674%UTQA-Q=Q=Q-Q=Q-TMX=X=X=\= XM09'5&!UA<=<6'7)1V"0=@D'9)!V#,=9BWAWQP"E3````$A$:_A27<V)2T1TA XMTATBTATN,M(]%-%-%=!L?&T%T?/2+1+2'$?`*U0````G("/](D715IJ4J*/& XMPB9&1B$H1$@Z-#HK,CL<,CW"(MWVWNUTV?TXP#E5````)!TB_2%_T];D39G4 XM0D%,1$-(1D5%]'1D-(1T'E6$=12$=#]'1D5&14A$0TQ"04U)VN1-;]-@P#97 XM````)R`B_2&/T]GD3164E?)(2$7G1T='-T<X]&1DE%14LU13T#1$/2,T,]1! XM04V(W>1-G].`P$U8````)!\C_B*YUT5-,[/0/0.STCE-)'3415U%1-9#YEUE XM--9$745?341_3223TCOST#T"T"T3LW\7*R<1%QL7$A<I)Q(8&1@2J:/YF2"X XM65D````J)2/^(=GQUS30%%SQ5,X67,)TS!A<HI3*&ER"M,@<!<8L%,8<)<0L XM-,0<1<(L5,(<=,`<A;')2ARED<M(',5QS48<Y5'/1!T%,=%"'241T_75\]<< XM8,!76@```!H:)?XCQ]2]$V3"HZ'0.3LX],."T$XMH]E+94DU(T<Y$D8[$44\ XM$40]!4305#T5--%3/20TTD--(T310TTD--(T311$T38]`W/#D[.3D\14T;U& XMT9`V7````"<>)_P?LBL$KDKDKDKDKDK5K5K4KDKDKDKDKSLDLDLDLDLDLEL5 XMLDLDLDLDLDLDLB"VTI@U7@```"<>)_P?*R2R2R2R2R2R2R6Q6R2R2R2R2R2R XM.O2N2N2N2N2M6M6M2N2N2N2N2N2P(-+2B`E?````&1D#`/72T#MA````(!L5 XM_A2F`5-"`2-R@5.285.C44.S43]+-!/TPS%$PR%$U!%$U5]-1_/4@L$3@Y(C XM04-34C%VE##`66(````<&BW^(M1=8E+3&"T1DM`:.QL_H<.1T#D<.1T#D=`J XM'#D<.A5A*Q05/!1A.O'0.?'01^,=%&\=%''1.!T$<1'#@1&SD1&CH2&#H4)3 XML671\=OC';XQW,`U8P```!H9(/\4=<%8L4J13'%#<W$RL6%!PE$_'1%!UQ,= XM?Q(=CQ$=GB+:XAVN(MGC+9XBVO&PP#]D````%A0C_B+031)"L7&AD8+4XRU3 XMU$TUTUU$TUT#%*-#DV-S@F.27TDDXDHC]+%$HD2A8Y)CD8*"@W&C0M!:T!UE XM````%`\5_126:52CL[.TL[`0'22^0]\].",U)V3`.V8````6$RW](M`=3B'5 XM?"0:(ED=0=0=0M,M0=0M/RT_+3XBT^@M0]-----M&-"-!])=,]3B*A4L%!T4 XM<,`Q9P```!D5(/X4)'5!,D)",3,A<A%#$81$E/0Z/C0Z-.,Z-.,Z-#HV*CU? XM/4XSU.,]4G#`16@````7%"/^(L71(RPE*B8I)S<W-C@U2#4Y-$DT.C\THS.D XM\DI"U?'5+TI".D)*0DHS24/TDT2#8X-C<W-RDF*B4L(RT4S0'VD````2#!7] XM%&*?..,XXCCB.#DW$381-Q$V$R44)!95P#9J````'1<5_11BHW.&8V(D4V%# XM8U'1-!TC,=(R+375K0-4KS@Y.3@Y-1XA.342.B02/"(4+0-`P$!K````'1<C XM_2)CV3UTU_/8XCUTU_/737\]=-?SUTU_/674$CTR(](C30)3PF.R=)*3@J-S XMI%/#0]`S/103TS$M4\`T;````!X9(/X4@K*?.CCC.CCC.CCB.CDZ-!\TDT%$ XMA$%$<2)!,Q)",C%#)7-?/8XSV.,]DMK`,6T````9%A7]%$3"%[NS]#LU.R8Z XM-3LF.C8Z)SDG.3<X.#@I-RDW*C4L-"T#(M$Q+335P$)N````%A,M_B+!U.(= XM9Y11@R6#TCTDT>)-+ST_33,6HV&"%X+3+3+4'4+4'4Y"U//432?1?0G0C1;2 XM33\Y%BLD'11@T"IO````&!45_A2FTT.3<W.34Z-#M/)+3B%,C\04PR2T,[-# XMHV*3<W.31,:@P#)P````'!D5_A1=<]DMDR85&1<6&!@5*!@5'4)1U/%AT_)2 XMTO)BT38]#R<\-SPW2CD[&BC`-7$````:%B#^%-!=(D+0)BLG.2@X*4]CE.)3 XMI.)#I%.44Z-CDW2#='*#(4.3-;\]7C/5XSUBU\`J<@```!P9%?X4G3?5;59% XM2S@Z.CCSLWXCPVXCPW.S@[*BHZ*3PG+2)#U5TL`C<P```!86%?X474/6+6,F XM'!@;&1L8+7\M;C+6/6\M;B/5/7+1T#)T````&Q<5_A0TPD$RI"%#E1%#I5.T XM4\-#TE/17B,!`4\P$!7ST6/!<[&#H:.!PU(!%J#`3W4````>&"W](M4=GC'9 XMXQV>,=D==]%"$CLE%"@U%B8V%R0W%R0H%S(W
.!AO@8,3@8(R@7,R<7-# XM87)B85."44.C(3/1?7\=GC'9XQTPP%)V````'QH?_A0UU!(3/2$Q0]`93!H[ XM&SH<2!T3<=(V'31!U30=4S'601V$V3VDVCV4V!$]<235%#U!4],632%ST1@] XM`92QLZ'$@=$T$QTC(3'41,!7=P```"`<+?XBU^(=WC'=XQW>(=!*%B03*!9" XM%#<6410W%U4W&$4V&C0W&B4W&A4X&A7S<;%/.!H5-QH6-QD7-Q@8-Q<:-1<< XM)18=$S$SU7VN,=WC'=\=4,`Z>````!\=%0`44=8F'611UE,=A#'9/R';+Q'" XML2\;+!(;*Q(K'!(J*Q,J*B,I2"0V,29%HK:BJ'6*5UEX"7D````.`C'Z)-K0 XM'WH````8#S'\)+23L[.^`2.SL[.4`0/3T]X!(]/3TP$$V!][````&`\Q_"1` XM$#T]/>`2/3T],!!).SL[X!([.SLY2\`L?````"<@%OT65M<4G5$[U!(V32(3 XME-`A*TLA+023$M)&,AU+,=64'78`$8`SF`Y]````)R`6_1;6#&U@QM;(,'X` XM```8$3']).(M/B+3XBT^(M/B+3XBT^(M/C+3XBT^(M/B+3XBT^(M/B+3XBT_ XM+3'`57\````G("7](U:FBFI38T-C,X,C@R*FHB*TLA.TM>+0+03CWUW3\2W2 XM(]LS+;)#V34]<W+7*#U3D],[/1/0/#TCH]0X/6-CV#0]HR/<(BW6WO0!#RT@ XML!^A````&1(M_2*1Q"P_3!:R$A*#(B-3,C,D0D9B8NUH*(`>H@```#(K$OT4 XMJ"L?*Q\K$K$K$RW*XZXJ\J_RK_*O*+`?HP```!D2+?TBCM8H)B9D)$(S(S4R XM(C@A(2ML'TPRQ1B`'J0````R*A+\%'*N\J[RKBKBK3K=L3L"L"L/*P\K`JC( XM-:8````9%!C^%RU4TUTB%-`C2R4Z)D@H-RE%*T,M`R\M%M`R*T,I12@W)D@E XM.B-+(4T%TDTRU<`UJ````!D4&/X7U2TTTET$$K0RHU*$8G."5)(TLB/0;]$B XM/0(TLE22<X*$8J-2M#+002TETTU2B`FP````&1D#`"72R!VU````(1H?_1WM XMDME=<Q+7(CU3,],U/1-UA:T=*)#`';8````A&A_]'9C2T:6%<]$U/3,SU3(M XM<A/77MG9(,`OMP```"$8'OP:O0C3=-5-8]<]<]@M@]CRV#V/+9`E_9/9\MD] XMDMD]D]D]E-E-C3O0P"VZ````)QX>_!J]:-ETVTW#W3W3WBWCWO+>/>Y2WSW_ XM+?/?+?/?/?/?3?3>V;U@R"V[````)QX>_!K6O9WDWTWSWSWSWRWSW_+?/EWR XMWC_>+>/>+>/=/=/<3;1]F-:PL"^^````)QXG_!^\><ETS$S3SCSCSRSSSRSS XMS^8M`]`M`]`M`]`]`]!-!-#)O'#5_1"X+[\````G'B?\'\>\G03030/0/0/0 XM+0/0+0/FT"SSSRSSSRSSSCSCS4S$?)G'#?_1$*@,R````"$:#?T1V>J](,`8 XMS````!D2%/T59JI\71/],0@_'3/17'JF8+!GS0```#(K+_TCQ9U,'/65RTP4 XMR$Q4Q3R3PSRSP3S3L\\Y/1."TR<],V+5)3U30M<C/7,O+9(3V5Z-M=D_$MDB XM/7,RUR0]4U+5)CTS<M,H/1.3SSL\T\$\L\,\D\5,5,A,%,M97/P=2<70'<X` XM```6#R[](G'>8]Y!A"$D$!$4(22.(=X!4]YA<-`HSP```!8/+?TB<=Y#WB&! XM45$0(.-QWD/1`?'>0]XQ<"`145&.(=Y#T7#`.=4````5$R_](]$](3'0(CP2 XM2R)+(RSRT_/3XRT^0],M/F/3+3Y#T^,M/ST_+",K0BM"'#(M`3'2/1#04]@` XM```9$BK])=\J0B@D1R8G)S4H1"=4)R$C-R$R*"(B)S(B)R,A\W(V8S;B8D93 XM1O4E9#5N)"9C-F\R<Q(R<B(C<B\Q)S,A)R16-3<G)B@T*)GB+<"`V0```#$J XM+_TCU(`2T=U8793136/5/4+9+2+;+0+=*RWRGR`1)_(!,E\@%2,M.J(BT48Y XM(BT#=)(BPX22$L.BM/M-I.6DVR$J/:(BI-DB*DP9(BL\&2,K.ADD+#@:)2Q$ XM*B8M%L)_(!$I+?*RW2T"VRTBV2U#U3UDT4V5A=W1`2C4J`W:````'A<8_1?5 XMZXN-4+@,X````"L.,>XC`^[>@(@,X0```"L.,>XEZQ:-L,`=X@```"L0,>XC XMT2Q+2TM+2TM:6O6O6FI:XFI:X!!JT"#C````*Q`S^"6N`1;Y:6I:6EEI6&H] XM;5QL7%Q;:_:^`1;8'>0````K$#'N)>`?:UOB:UMK]<]<7%Q-34U-34`0((@, XM\````"L.,?8CV^L88+`,\0```"L.,?8ECMX#X-@=\@```"L0,?@C(!!-34U- XM34Q<7/7/6VM;XFM;X!]@V"#S````*Q`S[B7@$6OVMK7%Q<;%UM.FA9:5I:6F XMGVG@$6K`'?0````K$#'X):X!!J6N)J6FKUKUI:6TM+2TM+3"T9@*]0```"L& XM,^XE#X"H"?8````R,0$`#-:P+_L````R*QS]&<3RW"W/+<+<+<+<U9UG/:/9 XM787<3=3=/>+>UJU;/=+>+>+>\M[RS=@+_````!X7&/T7`"*@L"_]````,BL< XM_1G-\MXM[RWBWBWBO5K6WCWCW5W%V4V4VCVRC6G5VSW"W"W"W/+<\L20$OX` X4```G("+](*7J4J76ZCI2I=;U]O;% X` Xend END_OF_FILE if test 6583 -ne `wc -c <'fonts.lj/S.12.pk.UU'`; then echo shar: \"'fonts.lj/S.12.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/S.12.pk.UU' fi if test -f 'opt.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'opt.c'\" else echo shar: Extracting \"'opt.c'\" \(6352 characters\) sed "s/^X//" >'opt.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: opt.c X Author: Chris Lewis X Specs: Optimizer module X */ X X#include "defs.h" X Xint specXPos, specYPos; Xextern struct cattab tabN[], tabS[]; X X#ifdef OPT X#ifndef lint Xstatic char SCCSid[] = X "@(#)opt.c: 2.2 Copyright 90/08/10 15:16:19 Chris Lewis"; X#endif X Xstruct insbuf { X char font, points, nc; X short xpos, ypos; X}; X X#define INSBUFSIZ 200 X#define OPTSIZ 100 Xstruct insbuf insbuf[INSBUFSIZ]; Xstatic struct insbuf *insptr = insbuf; Xstatic int insypos = -1; X Xcanoninsert(xpos, ypos, font, points, nc) Xregister int xpos, ypos; Xregister int font, points, nc; { X DBP((D_CAT, "canoninsert: %d %d %d %d %d\n", xpos, ypos, font, points, X nc)); X X if (insypos != ypos || (insptr - insbuf >= INSBUFSIZ - 2)) { X canonflush(); X insypos = ypos; X } X insptr->font = font; X insptr->points = points; X insptr->nc = nc; X insptr->xpos = xpos; X insptr++; X} X X#ifdef SORT Xint xsortorder; X Xxsort(a, b) Xregister struct insbuf *a, *b; { X int ret; X if (a->xpos < b->xpos) X ret = -1; X else if (a->xpos > b->xpos) X ret = 1; X else X ret = 0; X return(xsortorder * ret); X} X#endif X Xcanonflush() { X register struct insbuf *ip; X insptr--; X DBP((D_CAT, "canonflush: start: %d chars\n", insptr - insbuf + 1)); X X if (insptr < insbuf) { X insptr = insbuf; X return; X } X X if (insptr->xpos < insbuf[0].xpos) { X DBP((D_CAT, "canonflush: BACK (%d chars)\n", insptr - insbuf + 1)); X#ifdef SORT X xsortorder = -1; X insdump(insbuf, insptr); X qsort(insbuf, insptr - insbuf + 1, sizeof(struct insbuf), xsort); X insdump(insbuf, insptr); X#endif X for(ip = insptr;ip >= insbuf; ip--) X canonchar(ip->xpos, insypos, ip->font, ip->points, ip->nc); X } else { X DBP((D_CAT, "canonflush: FORW (%d chars)\n", insptr - insbuf + 1)); X#ifdef SORT X xsortorder = 1; Xinsdump(insbuf, insptr); X qsort(insbuf, insptr - insbuf + 1, sizeof(struct insbuf), xsort); Xinsdump(insbuf, insptr); X#endif X for(ip = insbuf;ip <= insptr; ip++) X canonchar(ip->xpos, insypos, ip->font, ip->points, ip->nc); X } X insptr = insbuf; X optflush(); X} X Xcanonchar(xpos, ypos, font, points, nc) Xregister int xpos, ypos; Xregister int font, points, nc; { X static struct insbuf lastchar; X static short lastypos; X static sstate = 0; X static char sbuf[512]; X register char *p; X#ifdef INSPECIAL X /* Inline special directives, not supported yet */ X switch(sstate) { X case 0: X if (font == 3 && nc == 34) { X sstate = 1; X lastchar.xpos = specXPos = xpos; X lastchar.font = font; X lastchar.points = points; X lastchar.nc = nc; X lastypos = specYPos = ypos; X optflush(); X return; X } X break; X case 1: X if (font == 3 && nc == 34) { X if (xpos == lastchar.xpos && ypos == lastypos) { X sstate++; X sbuf[0] = '\0'; X return; X } else { X lastchar.xpos = xpos; X lastypos = ypos; X /* stay in this state */ X } X } else X sstate = 0; X X if (be->beputchar) X (*be->beputchar)(lastchar.xpos, lastypos, lastchar.font, X lastchar.points, lastchar.nc, (char *) NULL); X break; X case 2: X if (nc == 34 && font == 3) { X DBP((D_CAT, "Special inline sequence: %s\n", sbuf)); X dospecial(sbuf); X sstate = 0; X return; X } X if (strlen(sbuf) > sizeof(sbuf) - 1) { X fprintf(stderr, X "%s: unterminated/too long \\(bs\\(bstr\\(bs\n", X progname); X sstate = 0; X return; X } X if (font == 3) X p = tabS[nc].ch_name; X else X p = tabN[nc].ch_name; X if (strlen(p) >= 2) { X if (strcmp(p, "hy") == 0 || X strcmp(p, "mi") == 0 || X strcmp(p, "\\-") == 0) X p = "-"; X else if (strcmp(p, "ff") == 0 || X strcmp(p, "fi") == 0 || X strcmp(p, "fl") == 0) X ; X else if (strcmp(p, "Fi") == 0) X p = "ffi"; X else if (strcmp(p, "Fl") == 0) X p = "ffl"; X else X p = " "; X } X strcat(sbuf, p); X return; X } X#endif X optinsert(xpos, ypos, font, points, nc); X} X Xint optxpos, optypos; Xint optfont, optpoints, optnc, origxpos; Xchar optbuffer[OPTSIZ]; Xchar *optp = optbuffer; X Xoptflush() { X X if (!optimize) X return; X X if (optbuffer[0] && be->beputchar) X (*be->beputchar)(origxpos, optypos, optfont, optpoints, optnc, X optbuffer); X optbuffer[0] = '\0'; X optp = optbuffer; X} X Xoptinsert(xpos, ypos, font, points, nc) Xint font, points, nc; Xint xpos, ypos; { X struct troff2befont *bp; X static char *wp; X extern struct cattab tabN[], tabS[]; X struct cattab *ct; X register char *from; X int cantcache; X X if (!optimize) { X if (be->beputchar) X (*be->beputchar)(xpos, ypos, font, points, nc, (char *) NULL); X return; X } X X DBP((D_CHAR, "OLD: x,y,f,p,c = %d,%d,%d,%d,%d\n", X optxpos, optypos, optfont, optpoints, optnc)); X DBP((D_CHAR, "NEW: x,y,f,p,c = %d,%d,%d,%d,%d\n", X xpos, ypos, font, points, nc)); X X /* the 10 is to ensure that there's enough room for moderately X long multiple-character sequences */ X X if (ypos != optypos || optfont != font || optpoints != points || X wp != xlatetable[font]->widthtable || X optp > optbuffer + OPTSIZ - 10) X optflush(); X X wp = xlatetable[font]->widthtable; X X if (font == 3) { X bp = &be->besymfont[nc]; X ct = &tabS[nc]; X } else { X bp = &be->bestdfont[nc]; X ct = &tabN[nc]; X } X X cantcache = !wp || (int) wp == 1 || (font == 3 ? bp->t2b_font != S: X bp->t2b_font != N); X X if (bp->t2b_xc || bp->t2b_yc || bp->t2b_scale || cantcache) X optflush(); X X if (optxpos != xpos) /* handle spaces one day... */ X optflush(); X X if (!optbuffer[0]) { X optypos = ypos; X optxpos = xpos; X origxpos = xpos; X optfont = font; X optnc = nc; X optpoints = points; X } X X if (cantcache) { X if (be->beputchar) X (*be->beputchar)(xpos, ypos, font, points, nc, (char *) NULL); X return; X } X X optxpos += ((wp[ct->ch_wididx]) * points + 3) / 6; X DBP((D_CAT, "optxpos: %d\n", optxpos)); X X for (from = bp->t2b_charseq; *from;) X *optp++ = *from++; X *optp = '\0'; X} X#endif X X#ifdef SORT Xinsdump(b, p) Xregister struct insbuf *b, *p; { X if (!(debug&D_VERB)) X return; X DBP((D_VERB, "insdump:\n")); X for(; b <= p; b++) X DBP((D_VERB, "%d %d\n", b->xpos, b->nc)); X} X#endif END_OF_FILE if test 6352 -ne `wc -c <'opt.c'`; then echo shar: \"'opt.c'\" unpacked with wrong size! fi # end of 'opt.c' fi if test -f 'utils/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/Makefile'\" else echo shar: Extracting \"'utils/Makefile'\" \(6805 characters\) sed "s/^X//" >'utils/Makefile' <<'END_OF_FILE' X# Copyright 14:22:49 Chris Lewis XSCRIPTS = psdtwd showfont mkenctab calcfonts catconv XPROGRAMS = hpinterp psxlate pk2sfp pk2ditwid pktype dumpft pk2ps lj2ps XMAPS = maps/S.cmtrf \ X maps/alnum.ROMAN8 \ X maps/cmmi.MATH8 \ X maps/cmr.MATH8 \ X maps/cmr.ROMAN8 \ X maps/cmss.ROMAN8 \ X maps/cmsy.MATH8 \ X maps/cmsy.ROMAN8 \ X maps/cmti.MATH8 \ X maps/cmti.ROMAN8 \ X maps/cmtrf.MATH8 \ X maps/cmtrf.ROMAN8 \ X maps/cmtt.ROMAN8 X Xinclude ../makeincl X Xall: subst.done $(SCRIPTS) $(PROGRAMS) X Xsubst.done: ../makeincl ../sedscript X rm -f $(SCRIPTS) X touch subst.done X Xljtab.c: ../troff2ps mkenctab ../lib/lj.fonts X cd ../ ; ./troff2ps -Tlj -z > utils/T X ./mkenctab T ljtab.c X rm -f T X X# This isn't perfect, but close X../debug.o ../pk.o ../cattab.o: ../defs.h ../pk.h X @echo "Some troff2ps objects are out of date" X @echo "Make troff2ps at the top level first" X exit X Xtmaps: $(MAPS) X X$(MAPS): X cd maps ; get s.$(@F) X Xljtab.o pk2sfp.o pk2ditwid.o pktype.o dumpft.o: ../defs.h ../pk.h X Xpktype: ../pk.o ../debug.o pktype.o X $(CC) $(CFLAGS) -o pktype pktype.o ../debug.o ../pk.o $(LIBFLAGS) X Xpk2ps: ../pk.o ../debug.o pk2ps.o X $(CC) $(CFLAGS) -o pk2ps pk2ps.o ../debug.o ../pk.o $(LIBFLAGS) X Xhpinterp: hpinterp.o X $(CC) $(CFLAGS) -o hpinterp hpinterp.o $(LIBFLAGS) X Xpsxlate: psxlate.o X $(CC) $(CFLAGS) -o psxlate psxlate.o $(LIBFLAGS) X Xpk2ditwid: ../pk.o ../debug.o pk2ditwid.o ljtab.o X $(CC) $(CFLAGS) -o pk2ditwid pk2ditwid.o ../debug.o ../pk.o ljtab.o \ X $(LIBFLAGS) X Xpk2sfp: ../pk.o ../debug.o pk2sfp.o ljtab.o X $(CC) $(CFLAGS) -o pk2sfp pk2sfp.o ../debug.o ../pk.o ljtab.o \ X $(LIBFLAGS) X Xdumpft: dumpft.o ../cattab.o X $(CC) -o dumpft dumpft.o ../cattab.o $(LIBFLAGS) X Xclean: X rm -f *.o $(SCRIPTS) $(PROGRAMS) ljtab.c *.D *.sfp diagnostics X rm -f fonts/*.LOG fonts/[A-Z].* fonts/[A-Z][A-Z].* fonts/*.D X rm -f fonts/cmtrf*.sfp buildcmtrf X rm -fr testdir X Xinstall: X cd $(LIBDIR)/lib ; rm -f $(SCRIPTS) X $(IGNORESH) cp $(SCRIPTS) $(LIBDIR)/lib X for i in $(PROGRAMS) ; \ X do \ X if [ -f $(LIBDIR)/$$i ] ; \ X then \ X rm -f $(LIBDIR)/$$i.old ; \ X cp $(LIBDIR)/$$i $(LIBDIR)/$$i.old 2> /dev/null ; \ X fi ; \ X cp $$i $(LIBDIR)/$$i ; \ X done X X# Try to convert a vendor supplied ft into dit2catwid input X# and back again. If the number of differences is 0 or 1, X# everything's working (we permit one difference due to space X# handling) Xtestdumpft: dumpft X ./dumpft -d < $(FONTDIR)/ftR > fonts/R.ftout 2> fonts/R.dfterr X ../widths/dit2catwid fonts/R.ftout fonts/R.ftout fonts/R.d2out X -cmp -l /usr/lib/font/ftR fonts/R.d2out > fonts/R.errors X $(IGNORESH) test `wc -l fonts/R.errors | \ X sed -e 's/^[ ]*\([0-9][0-9]*\).*/\1/'` -lt 2 X Xbuildcmtrf: pk2sfp $(MAPS) X for i in ../fonts.lj/S.*.pk ; \ X do \ X ps=`echo $$i | sed -e 's/^.*S.\([0-9]*\).pk/\1/'` ; \ X echo "Building cmtrf$$ps.sfp" ; \ X ./pk2sfp -m maps/S.cmtrf $$i > fonts/cmtrf$$ps.sfp ; \ X done X touch buildcmtrf X Xfonts/cmtrf10.sfp: buildcmtrf X Xbuildfonts: $(NEWFONTS) calcfonts buildcmtrf pk2sfp X $(IGNORESH) test -z "$(PKFONTS)" || \ X perl ./calcfonts -f$(NEWFONTS) -s$(SFP2PK) $(PKFONTS) X X# Use real cmtrf from $(PKFONTS) rather than fonts/cmtrf*.sfp XbuildSfonts: calcfonts pk2sfp X rm -f buildcmtrf fonts/cmtrf*.sfp X $(IGNORESH) test -z "$(PKFONTS)" || \ X perl ./calcfonts -S -f../fonts.lj -s$(SFP2PK) $(PKFONTS) X X# This code is for demonstration purposes w.r.t. PK/SFP merging. X# sfp2pk comes from Rick Richardson's jetroff, and the hyphens X# allow this makefile to continue if you don't have sfp2pk. X Xtestmerge: pk2sfp fonts/cmtrf10.sfp $(MAPS) X ./pk2sfp -m -v \ X maps/cmtrf.MATH8 \ X fonts/cmtrf10.sfp \ X maps/cmr.MATH8 \ X fonts/cmr10.pk \ X maps/cmsy.MATH8 \ X fonts/cmsy10.pk \ X maps/cmmi.MATH8 \ X fonts/cmmi10.pk \ X > fonts/S.10.sfp 2> fonts/S.10.LOG X -$(SFP2PK) < fonts/S.10.sfp > fonts/S.10.pk 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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/R.10.sfp 2> fonts/R.10.LOG X -$(SFP2PK) < fonts/R.10.sfp > fonts/R.10.pk X ./pk2sfp -m -v \ X maps/cmr.ROMAN8 \ X fonts/cmsl10.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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/I.10.sfp 2> fonts/I.10.LOG X -$(SFP2PK) < fonts/I.10.sfp > fonts/I.10.pk X ./pk2sfp -m -v \ X maps/cmr.ROMAN8 \ X fonts/cmbx10.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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/B.10.sfp 2> fonts/B.10.LOG X -$(SFP2PK) < fonts/B.10.sfp > fonts/B.10.pk X ./pk2sfp -m -v \ X maps/cmr.ROMAN8 \ X fonts/cmssi10.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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/HI.10.sfp 2> fonts/HI.10.LOG X -$(SFP2PK) < fonts/HI.10.sfp > fonts/HI.10.pk X ./pk2sfp -m -v \ X maps/cmtt.ROMAN8 \ X fonts/cmtt10.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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/C.10.sfp 2> fonts/C.10.LOG X -$(SFP2PK) < fonts/C.10.sfp > fonts/C.10.pk X ./pk2sfp -m -v \ X maps/cmr.ROMAN8 \ X fonts/cmss10.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 maps/cmss.ROMAN8 \ X fonts/cmss10.pk \ X > fonts/H.10.sfp 2> fonts/H.10.LOG X -$(SFP2PK) < fonts/H.10.sfp > fonts/H.10.pk X Xkeepbuiltfonts: testmerge X cp fonts/[RIBHC]*.pk ../fonts.lj X Xtestpk2ditwid: pk2ditwid testdir X ./pk2ditwid -Ss $(LJF)/S.10.pk X mv S testdir/S.10 X ./pk2ditwid -Ss $(LJF)/S.12.pk X mv S testdir/S.12 X diff testdir/S.10 testdir/S.12 > testdir/S.diff X X$(NEWFONTS): X mkdir $(NEWFONTS) X Xtestdir: X mkdir testdir X Xtestpart: pk2sfp testdir X ./pk2sfp $(LJF)/R.10.pk > testdir/R.10.pk X ./pk2sfp -p $(LJF)/R.10.pk > testdir/R.10.pkp X ./pk2sfp $(LJF)/S.10.pk > testdir/S.10.pk X ./pk2sfp -S $(LJF)/S.10.pk > testdir/S.10.pkS X ./pk2sfp -p $(LJF)/S.10.pk > testdir/S.10.pkp X ./pk2sfp -pS $(LJF)/S.10.pk > testdir/S.10.pkpS X Xcmpfont: pk2sfp testdir X @for i in fonts/[A-Z]*.10.pk ; \ X do \ X f=`basename $$i .10.pk` ; \ X ./pk2sfp $(LJF)/$$f.10.pk > testdir/$$f.10.old ; \ X ./pktype -v testdir/$$f.10.old ; \ X mv $$f.10.old.D testdir/$$f.10.old.D ; \ X ./pk2sfp fonts/$$f.10.pk > testdir/$$f.10.new ; \ X ./pktype -v testdir/$$f.10.new ; \ X mv $$f.10.new.D testdir/$$f.10.new.D ; \ X set +e ; \ X cmp -l testdir/$$f.10.new testdir/$$f.10.old > testdir/$$f.fDIF; \ X diff testdir/$$f.10.new.D testdir/$$f.10.old.D > testdir/$$f.dDIF; \ X set -e ; \ X done END_OF_FILE if test 6805 -ne `wc -c <'utils/Makefile'`; then echo shar: \"'utils/Makefile'\" unpacked with wrong size! fi # end of 'utils/Makefile' fi if test -f 'utils/fonts/cmss10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/fonts/cmss10.pk.UU'\" else echo shar: Extracting \"'utils/fonts/cmss10.pk.UU'\" \(6526 characters\) sed "s/^X//" >'utils/fonts/cmss10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 utils/fonts/cmss10.pk XM]UD11T9T;U!+(#$N,B!O=71P=70`H```;2.]4@`$)JX`!":NP#M!"JJN'!D= XM_QRSV/77$3UO(CU#)-,C33)#TC1-$E31)CT/-DOSA**4DZ2/U'\\1BT$7ST4 XM,])2\]-!/53(,$(*JJX<%1W\'-"--4A42D-+0N1,04M"25/432;41&@TI22U XM%,0>1-",04M"25/431?`)T,*..8;%1_]':B\=&1DDE3333]-/B33Z$U>)-7T XMU4U4P52B9'2,MT#(,$0+CCT>%QW\'-&=-TA62E1+4TQ#300DT3+TT4%-(QYT XMTHXM%!300O3$-*5$AETWT9"X$44)CCL9$AW\'-SJPOQ1ZTPM@-@01@D<=1@1 XM'?P<`HZM\!(>U-#`+D<*JJT<%1_]':>]!T95231+(TT_33XDT^5-3TG-$^(4 XMT#\DPS2S1*-4DV1E?0MTV`Y("U5:'10=_!SL3`,NW$!H"4D$<<H,!!W\'-W` XM$$H'CCL4#1[^')[;9W5!PJ5DV$%+"QQV'18=_!Q`$(U!3$)+0TI$245(1D=' XM1DA%241*1#M#6D)J03%)<EAD2&5'5E9(1DA5245*1$I32T/TQ"34%-6X#$P( XMJJT6#QW\'.SDO2#(-TT.``4D&QW\'.)M*>(3T"%^(CLB<DDR<SDC?S1S-_0W XM)']$4T=34E=4,U?B8S)GXG,2=^*$A]=`V#-."U5:'10=_!SVNJ83IA26\CEB XM2&,X;S1V]$9E-F5%9C5O9$;W0V@S:$)ODR:4%J,6JOM@P#5/"\<>'QH?_AVF XMU,T-&U996%=,15Q4310^)--!YTU9TU\4TT)=%3311%Q56E=8659;T=#-1J#( XM'U`*..8;%!W\'-%M-$A32D)+0>5,BT%*44ABU#TE[$TPP#Y1"\<>'QHC_AVF XMU,T-&U996%=:55Q4310^)--!Z$U4\4TT)'-D-&1$160E5'04=5B55KT=#1TF XM%-I-E=E=E1#8,U(*55@;%1W\'-@!)4A42D-+0N1,04M"2E)(8P$T`2781D=' XM-T=&](1?243TI#2T+TQ!34#`+E,(XY`7$A_^'6>;8V1#@S.B,M+C/23231?) XMJYJIT&T4TO3CTET"$[,4DS5C:Y=@R`U4"N.0'!D=_QP"7MVTH-@750L`!1T4 XM'OP<X!A-/Q2S-)-4<W14BL9PR#16"JJN'!D=_QSTU3XA33,_31-%T#7TPWXD XMHY](.T<L]&/012T?1#TD,M-"/4\R+502UO78.\A?5P\<=B<D'?\<3$T'_%PQ XM2Q$\(N)*(CHS2#(Y-$@C2#1()#@U1R0X)O1C1&-D8F-C=%)C8H1#9$.$0G1# XMGS0H-"I#*#,Z0BE".^(R*C(M`Q&S(=$Q'"$M%<713072/1.`P$58"JJN'!D= XM_QP4TC-=!$3$9+.$DY2$I&3$4]$T310DTT$]5M==?TUVUC$]0R320ST44]`V XM2SA)2%@Z1SQ%3%--%2/304TUR#%9"JJN'!L=`!Q=5!74,UTC5-%%70-ULY2D XME9.U=,1ST%4])$330SU%$]9!/7;87:ZTL+`R6@G''AD4'?X<'\?#3#7#3#7# XM3#3#7#3#7#3#3#7#3#7#3#3#7#3#7#3#3#7#3#7#3#W`T!YA^"@0=_AS$T>Q3@!%J!$1&"PHE`QQN XM--3IQ4E!A%/8+&L'TH`4#QW]'.H\-T$V0C5#-$0S13)&,4>'EE$V4C5#1#4T XM-4,V0C<R-T$X0(@);`/2?@H#'?T<WL@8;0RV#B(;$OT1,V9C,9.2T1L59FB$ XMANR3D]@2;@A$1A4.$OT1,U,Q@M%5AV[(,-`?;P@``A42$O\19JI\5&0TA".C XM'D/'I!.C)(0T9%QZIF#8(7`(1$85#QK]$3-4,8/25%%',3A^66@Q1D%44=(Q XM@S-%YSS0(7$(1$85#QK^$50S.!,M%4449!.&Y9>#$W0512TX$T4SY\/8$7(% XM=WH."1+]$3-B<;-4]%ZC8,`:<P8B(Q`-$O\1-UHK%&(?.DIWAHI+])==,J5S XMT!-T!<<=#PP8_Q<^4V^TZSDT%)2%4M@1=0A$1A4.$OT1[3AF`5&1,F,PV!YV XM!V"X$Q`2_Q'SHQ.2+S@SXC8UXC0W\R.?(BHQ*_1@V#EW"N[R'!D2_Q'S=79R XM$G,38A-B(U,34R\U,B4S-",S-/,S,S-2,T(R8R)3(F\Q-3$W\A)R$H5UE(-0 XMT"EX!V"X$Q(2`!$3HR2#1&-C4X-#DR.VU`$#`136LR.30I-#<V-3@S.C%*38 XM+'D'8+@3$!K_$?.C\3@R1S/S8U-28T-R0W,R@R.2(Y,2LA*R$=\]\M\M.'EJ XM6]`8>@;TH!(.$O\1'BV4E*.DE*.CI)2CI)20++@+``BJK18/'?P<UNSKP$`! XM#558(QX=_AS0]-QMLA/:\B38,TUR1-;S5-0V73-TTCA=$Y30.EP[3"Q+\]!) XM/16#TD<]-6/413U50]9#_?$"\,`\`@QQRB`;'_X=I]6]'2ME:5E76U9-!%32 XM0UTE+TU$'TUHXST#CBUD\4U$)=)3321%T%5;5UE996O2T;U7H,`T`PG'(!D6 XM'?\<GB34XB$]+R)-$C/0,TSR1+\U2B9)\W2"A'.%;SE&*D7SM$+$/ST$(M%! XM/168#P0*JJT<%QW^'-L)CBIPQMO(#`4+55H=%!W\'`'^W<2H+`8+CCL>&1W^ XM'-RZ6Z];I;I;KUNENO6Z6Z6Y2Z.Z2Y2Z.Z2Y2Z.Z.Z2Y2ZO!UL`A!PQQRB`; XM'OX=195I:#I:)$,T-!1C(U=S(G:"$W/[7:[72\`T"`N..QX9'?X<OC36?2T* XMU'8D%E5$-4141#]&14'D1T9/%&14-%1$140U5B06?4K0TGU^-*#`,@D,<<H@ XM&QW^',XDM71K9%T%1'%E1&-51%7G141'1$1']$0TE#0EE205O2T-#2O6;9XT XML,`R"@N..QX9'OX=E]+0K4=G95M4300_320>5-1.(4TD/TT$5+1SLX24GSD[ XM\W/$5-`U-_I:T"`P"``"%1`=_AMDJ'I41$-C/B.#'L.CXA.#,V-$1%IXEE#` XM$C$(``(5#1S\&W&C=EA2,Z[7-=W0*S((``(5$!S^&U698T1#<S*$$Y,2I!&D XM$;/]/$P\3#Q+2TM,/#P\/#P\/`(@T"DS"``"%1`=_AM6B6-30W,CA"\93/3# XMQ+2'EJ<!!-/4WC7[:4(H-#5%F670*C0(``(5$AO_&J35T1/"$[,3LB.O,CGS XM,X\T-S4V138V-48U-S1'-`)N:S30)34(``(5$!S^&A\!`N8],E:UQ&-#54)& XM0D=.7$$902E")T0T1IAFT"XV"``"%1`=_AN%F'-18\/////3-4,H,QHF1"5D XM%(,4EN2C\3DQ.#,H,S8U-#>*5=@;-P@``A40&_X:`BT\///#Q,/$P\]+XDOC XM3#SE2-`I.`@``A40'?X;5HI41#\X,>,Z/Q.#-$1:AHI41#\X,>4Z,3@R1D-$ XM1:AET#$Y"``"%1`=_AMDJ'-#4V,S@C.#$Y,3HAY#II03A!1E)$8J$S@C14+? XM/2T])1<E-$:*5]`X)`@``A40(?X>?RQWM$$B0C,D(C,GXS0G0R=2*(F)F)F) XM(5@C."-.-R1&)"$E(S$T(R-"(36I;/)PP$LF#"(E'QH?_AV$V&UHU3(]3D-# XMTS--,R34,CU3%-9M=;)UPF7"9[)4$[)$,Y)31()$4W)39%-3=$)C@S)SDQ*3 XMA:.4@2-H0SHZ5G8@T"`_!XX[%`\=_APW:STD9"&CXL.TI*2DH\+#SB+//1!: XMXC?0(#X'CCL4#QW^%%XC!:'?/.,L._.SM*2^(\.A(V40$"MG0*@)$`/2?@H# XM$OT1V]`0$01$1@L*&@,1?@%S$4T813#0,AD'L%X4#QW]'$:(:D1$+C.#$W03 XM<R-4,R<S)5,F0U0S<R-T$X,3A^26@Q-T$S<C)S,F0,`L&@N..QX:$OX11G5J XM.$P:,V=$(95RQ(.])]8]HLT%4\\X2SA95H4QP<&SI&ACP"X;#''*(!T2_Q%E XME8E8:SI$5!1$(Y9R(Y6&XKU?L\.TPY7$=Y$D5!53.SQ)6G66,,`W'`@``A42 XM'/\6TAT_/131.*:VQ41C17(U03$V,V5#931D-6-%8S8Q,44R=4-D1<:VJ#T4 XMT?/3'2#`/AT-QR`D(!W_'+_8LR39\S39)$V/-$U_-4UR9-;S9-7S?2<H34.$ XMU-+3T],Y33*DTO.DT?.TT2Q-`\30/-;0T\!$'@^./2@D'_\=I][?8!%65M58 XM746DU$M--,32XDT$T>)-%-'TT=0>)-%-%=!-+TT$TEQ--,336TU%I-587696 XMUP$8WZ?6P%(?#''*(!LA_A[7/1<SS1O3IE:5AG679)A4HR0TI#0DHT0DE$04 XMHVB4:)-XA'B#B'2(<YADF&.D%$24)$.D)#2D-".D2957E7:%EE:M.]'#-]$] XM<)@,(04<<PT#'?L<TA&FD)@,/`4<<PT#'?L4FF$=(+`\(PU56",>)?X<PN(G XM+&-CQN(G+&-CQN,G+&-CC0'2XJ)RQC8\;C)RK2'0@V/&XB<L8V/&XB<L8V/& XMXB<L(,!G)0U56",>(?X>1-(H;0-XPG0DHW-#HG-C@W-C@H-C<X-C8Y-C8J-C XM4Z-C4L-#4\0D0]&%+393U$8F34-6TR6-$T0DPU-#PE-CHU-CHF-CDV-C@W-C XM@H-C<X-C<J-#<Z0D<LAST&@M)$#H"R<$<<@,`PC\'/^TEM`@*`8XY1`+*OX> XM@W-S<W\W\WXC?C-^LYXSGB.?.?.3DY.3V"`I!CCE$`LJ_AXY.3DY\Y\YXCGC XM.>L^-S?B-_-_-S<W-SC0)RH(``(5$!+^'G(!`]\H)"0A4B)142%4J/:*11(5 XM%2(E$D)"CR`0/2?0#RL,<<H@&QS^%]["P#CLTL#H"RP$<<@,`PC\`O^TEM@) XM+@1QR`P#`_P"D-`N+P@``A40*?X>`0\M/]+3TM/?+3WRT]\M/?+3TM/?+3WR XMT]\M/?+3TM/?+3WR`0"X"CH$<<@,`Q+\$9V)N`\[!''(#`,7_!&=B1+B$1(0 XMP!`]#''*(!L,_@\=P=X,O>'<$,`Y0`JJK1P7'?X<I]&ZT8959*-4:31J,VLD XM5#835%434W?F4Y,34W,C5%0D5#1#:51G=&64UVA&TYS0A;@,6P2?2PP(*?T> XMS^UES+@,702?2PP(*0`>S.UES^`+8`1QR`P#"/P<:2W_V`\2"``"%0D'_1PW XM-S<W-S<PT!`3"``"%0D'^!QC4U-34U-38-@3%`@``A4.!_T:.#$V,S0U,C=I XM2R;8$Q4(``(5#@C]'/.'9!-C)$0Z6(10N`D6"``"%0X#_1G>T!`7"JJN'`D' XM]QPE-QXC,Q<U(.`,&`<<<Q(&!?O\'..<X-`.(`/2?@H*!0`/<E4F-5*`T!-> XM"``"%0X'_1QBM)9S(U-#,V,3@\@)7P1QR`P$!/P<T^`4?0@``A4-!_P<'#GC XMSASQYPYX\X<`X!%^"``"%0X%_1L\'?AW_[A^X/#8"W\(``(5#`3\'.-$0,`: XM"PE56!@9'0`<AE9W1V@X4X.N8X-_M'?M(X-PP!@,")/K%A(>`!W2-U,V8S5[ XM/1YCO\,^TD.#P!D-")/K%A(=`!QU,V8S5S-3<^9#C2\S[20X,,`?#@T%LR(> XM'@`=WCA61#9U5#6$;#D]'F.3O[5T/M)#DX/`(`\-!;,B'AT`'(5D0V=50UA& XM0U.3<^9#DXT?5T/M)#DX,-@2(@@``A4+"/\<XC4Q)BXA%Q$F(<@)+0555@X+ XM`@`)V=`27`@``A4+"/@<$F+B$7$28AXC4Y@)>P@``A44`P`,TE@)?!```RHI XM`P`,U?`/:61E;G1I9FEE<B!#35-3\!5C;V1I;F=S8VAE;64@5&58('1E>'3P X5#&9O;G1F86-E8GET9?0`Z@``]?;V X` Xend END_OF_FILE if test 6526 -ne `wc -c <'utils/fonts/cmss10.pk.UU'`; then echo shar: \"'utils/fonts/cmss10.pk.UU'\" unpacked with wrong size! fi # end of 'utils/fonts/cmss10.pk.UU' fi if test -f 'utils/pk2ps.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/pk2ps.c'\" else echo shar: Extracting \"'utils/pk2ps.c'\" \(6667 characters\) sed "s/^X//" >'utils/pk2ps.c' <<'END_OF_FILE' X/* Copyright 1985, 1986, 1987, 1988 90/07/18 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: sfp2ps.c X Author: Chris Lewis X Specs: Displays SFP font information in Postscript. X (analogous to showfont, but it reads PK/SFP X files and generates postscript, rather than X executing on the printer using the built-in X fonts) X */ X X#ifndef lint Xstatic char SCCSID[] = X "@(#)pk2ps.c 2.1 Copyright 90/07/18 16:49:58 Chris Lewis"; X#endif X#include "defs.h" X#include "pk.h" X Xint verbose = 0; Xchar *progname; Xextern char *mustmalloc(); Xlong pks_malloc; Xlong highest = 0; Xint fontonly = 0; X X/* Dummied out for pk.c */ Xneedchar(a, b) Xint a, b; { X return(1); X} X Xmain(argc, argv) Xint argc; Xchar **argv; { X int c; X extern int optind, getopt(); X extern char *optarg; X register struct pkc *pc; X register struct pkp *p; X extern struct ras *pkrast(); X struct pkp *pk_read(); X register int i, len; X int chcount; X X progname = argv[0]; X while((c = getopt(argc, argv, "fD:v")) != EOF) X switch(c) { X case 'D': X#ifdef DEBUG X setdebug(optarg, "diagnostics"); X break; X#else X fprintf(stderr, "%s: debug not supported recompile with DEBUG\n", X progname); X exit(1); X#endif X case 'v': X verbose = 1; X break; X case 'f': X fontonly = 1; X break; X default: X fprintf(stderr, "Usage: %s pk_files\n", progname); X exit(1); X } X for (; optind < argc; optind++) { X char *filebuf = mustmalloc(strlen(argv[optind]) + 10); X register char *cp; X X printf("%%FILE: %s\n", argv[optind]); X X highest = 0; X X cp = strrchr(argv[optind], '/'); X X if (cp) X strcpy(filebuf, cp+1); X else X strcpy(filebuf, argv[optind]); X cp = strchr(filebuf, '.'); X if (cp) X *cp = '\0'; X X if (!fontonly) { X printf("/saveobj save def\n"); X } X X printf("10 dict dup begin\n"); X printf("/FontType 3 def\n"); X printf("/FontMatrix [1 0 0 1 0 0] def\n"); X printf("/FontBBox [1.28 1.2 -0.16 -.024] def\n"); X printf("/FontInfo 5 dict def\n"); X printf("FontInfo begin\n"); X printf(" /isFixedPitch false def\n"); X printf("end\n"); X printf("/Encoding 256 array def\n"); X printf("0 1 255 {Encoding exch /.notdef put} for\n"); X printf("Encoding\n"); X X p = pk_read(argv[optind]); X X chcount = 0; X for (pc = p->pkp_chars; pc; pc = pc->pkc_next) { X if (pc->pkc_next) X printf("dup "); X printf("%d /ch%d put\n", pc->pkc_char, pc->pkc_char); X highest = max(highest, pc->pkc_char); X chcount++; X } X X if (verbose) { X fprintf(stderr, "Emitting %s, %d codes\n", filebuf, chcount); X } X X if (highest <= 127) X highest = 128; X else X highest = 256; X X printf("/BuildChar\n"); X printf(" { 0 begin\n"); X printf(" /char exch def\n"); X printf(" /fontdict exch def\n"); X printf(" /charname fontdict /Encoding get char get def\n"); X printf(" /charinfo fontdict /CharData get charname\n"); X printf(" get def\n"); X printf(" /wx charinfo 0 get def\n"); X printf(" /charbbox charinfo 1 4 getinterval def\n"); X printf(" wx 0 charbbox aload pop setcachedevice\n"); X printf(" charinfo 5 get charinfo 6 get true\n"); X printf(" fontdict /imagemaskmatrix get\n"); X printf(" dup 4 charinfo 7 get put\n"); X printf(" dup 5 charinfo 8 get put\n"); X printf(" charinfo 9 1 getinterval cvx\n"); X printf(" imagemask\n"); X printf(" end\n"); X printf("} def\n"); X printf("\n"); X printf("/BuildChar load 0 6 dict put\n"); X X#define DOTS2UNITS(x) ((x) / ((p->pkp_npts / POINT) * 300)) X X printf("/imagemaskmatrix [%.2f 0 0 -%.2f 0 0] def\n", X 1 / DOTS2UNITS((double) 1), X 1 / DOTS2UNITS((double) 1) X ); X printf("/CharData %d dict def\n", chcount+1); X printf("CharData begin\n"); X X for (pc = p->pkp_chars; pc; pc = pc->pkc_next) { X register struct ras *r; X r = pkrast(pc); X if (!r) { X fprintf(stderr, "%0: no raster image for %02x\n", X progname, pc->pkc_char); X continue; X } X printf( X " /ch%d [ %.2f %.2f %.2f %.2f %.2f %d %d %.2f %.2f\n\t<", X pc->pkc_char, X X DOTS2UNITS((double) pc->pkc_dx / pow2(16)), /* width */ X X DOTS2UNITS((double) -pc->pkc_x_off), /* bblx */ X DOTS2UNITS((double) pc->pkc_y_off - X pc->pkc_height + 1), /* bbly */ X DOTS2UNITS((double) -pc->pkc_x_off + pc->pkc_width),/* bbux */ X DOTS2UNITS((double) pc->pkc_height + pc->pkc_y_off),/* bbuy */ X X r->ras_width, X r->ras_height, X (double) pc->pkc_x_off - .5, /* shift x */ X (double) pc->pkc_y_off - .5 /* shift y */ X ); X len = r->ras_height * r->ras_bline; X for (i = 0; i < len; i++) { X printf("%02x", r->ras_raster[i]); X if (i % 30 == 29) X putchar('\n'); X } X printf(">]\n def\n"); X free(r->ras_raster); X free(r); X } X printf(" /.notdef [ .24 0 0 0 0 1 0 0 0 <>] def\n"); X X printf(" end\n"); X /* Should be unique enough between Postscript runs */ X printf(" /UniqueID %ld def\n", (long) getpid() + (optind << 16)); X printf("end\n"); X printf("/%s exch definefont pop\n", filebuf); X X /* end of font definition */ X if (!fontonly) { X X printf("36 %d moveto\n", 11 * 72 - 36); X printf("/%s findfont 18 scalefont setfont\n", filebuf); X printf("(%s) show\n", argv[optind]); X printf("36 %d moveto\n", 11 * 72 - 54); X printf("/Courier findfont 18 scalefont setfont\n"); X printf("(%s) show\n", argv[optind]); X X#ifdef NEVER X printf("/%s findfont 10 scalefont setfont\n", filebuf); X printf("72 500 moveto (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show\n"); X printf("72 400 moveto (abcdefghijklmnopqrstuvwxyz) show\n"); X#endif X X#define XPOS(i) (((i) % 16) * 30 + 72) X#define YPOS(i) (680 - ((i) / 16) * 44) X#define PSIZE 7 X#define PSEP 8 X X printf("/%s findfont 18 scalefont setfont\n", filebuf); X for (i = 0; i < highest; i++) { X printf("%d %d moveto\n", XPOS(i), YPOS(i) + 3 * PSEP + 3); X printf("(\\%03o) show\n", i); X } X printf("/Courier findfont %d scalefont setfont\n", PSIZE); X for (i = 0; i < highest; i++) { X if ((i % 16) == 0) { X printf("%d %d moveto\n", 36, YPOS(i) + 2 * PSEP); X printf("(DEC:) show\n"); X printf("%d %d moveto\n", 36, YPOS(i) + PSEP); X printf("(HEX:) show\n"); X printf("%d %d moveto\n", 36, YPOS(i)); X printf("(OCT:) show\n"); X } X printf("%d %d moveto\n", XPOS(i), YPOS(i) + 2 * PSEP); X printf("(%3d) show\n", i); X printf("%d %d moveto\n", XPOS(i), YPOS(i) + PSEP); X printf("( %02x) show\n", i); X printf("%d %d moveto\n", XPOS(i), YPOS(i)); X printf("(%03o) show\n", i); X } X printf("showpage\n"); X printf("saveobj restore\004"); X } X X pk_destroy(p); X free(filebuf); X } X exit(0); X} END_OF_FILE if test 6667 -ne `wc -c <'utils/pk2ps.c'`; then echo shar: \"'utils/pk2ps.c'\" unpacked with wrong size! fi # end of 'utils/pk2ps.c' fi if test -f 'utils/showfont.S' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/showfont.S'\" else echo shar: Extracting \"'utils/showfont.S'\" \(4512 characters\) sed "s/^X//" >'utils/showfont.S' <<'END_OF_FILE' X%%STARTSHELL%% X#@(#)showfont 2.1 90/07/18 X# Shell script to dump postscript fonts with widths into a pretty table X# usage: showfont <fontname> X# emits postscript to display the font called <fontname> along with X# interesting font metrics. If a file exists called <fontname>, X# the file is merged with the postscript, and a second argument is X# used for the font name. X# X# Cell format: X# octal decimal hex X# height CHARACTER X# widthps X# lbear catwidth rbear X# X# widthps is suitable for the widths/widthps/entries (unitwidth 10, res 720) X# cat width is same scale as CAT: (unitwidth 6, res 432) X# the Character is displayed at 18 point. X Xcopies=1 Xif [ $# = 0 ] Xthen X echo "usage: showfont <fontname>" >&2 X exit 1 Xfi X( Xcat << !END! X%! PS-Adobe 1.0 X%%Title: showfont -- displays the font metrics in a pretty one page table X%%Creator: Ken Marchant & Chris Lewis X%%CreationDate: March 1989 X%%Pages: atend X%% X/SAVEOBJ save def X!END! X Xif [ -r "$1" ] Xthen X cat $1 X shift Xfi Xfont=$1 Xcase $font in X /*) X font=`echo $font | sed -e 's/^.//'` X ;; Xesac Xcat << !ENDTHING! X X(START showfont display $font `date`\n) print Xflush X/FONTname ($font) def X X%% Setup functions used and etc... X X/rowmove { X /I exch def X I 16 mod 30 mul 72 add X 680 I 16 idiv 30 mul sub X moveto X} def X X/widths 259 array def X/widthps 259 array def X/heights 259 array def X/lbear 259 array def X/rbear 259 array def X/tmp 1 string def X.5 setlinewidth X X/Helvetica findfont 9 scalefont setfont X X%% Draw the grid around the cells X%% and add the hex labels to the outside of the box X X0 1 16 X{ X /i exch def X /j i 30 mul def X %% vertical lines X j 62 add dup 220 moveto X 700 lineto X stroke X X %% horizontal lines X j 220 add dup 62 exch moveto X 542 exch lineto X stroke X X i 16 ge { clear exit } if X X %% hex across the top X j 77 add dup 705 moveto X i 16 ( ) cvrs show X X %% hex along the sides X 50 670 j sub 12 add moveto X i 16 ( ) cvrs show X} Xfor X X% scale width in points at 18pts to width in 1/720'nds at 10 point. X/myscaleps { X 720 mul 72 div 10 mul 18 div round cvi X} def X X X% scale width in points at 18 pts, to width in 1/432'nds at 6 point. X/myscale { X 2 mul X % 10 mul round cvi 10 div X round cvi X} def X X/irmove { X CY add exch X CX add exch moveto X} def X X%% Print out the headings in the font to be displayed and Times-Roman X X/Times-Roman findfont 18 scalefont setfont X295 FONTname stringwidth pop .5 mul sub 750 moveto FONTname show X XFONTname findfont 18 scalefont setfont X295 FONTname stringwidth pop .5 mul sub 730 moveto FONTname show X X%% loop thru all the charcters and display in 18 point X%% insert the character widths into the widths array X0 1 258 X{ X newpath X /i exch def X i rowmove X i 255 gt { X i 256 eq { /tmp (ff) def } if X i 257 eq { /tmp (ffi) def } if X i 258 eq { /tmp (ffl) def } if X } { X /tmp 1 string def X tmp 0 i put X } ifelse X tmp show X X widths i tmp stringwidth pop dup /width exch def X myscale put X X widthps i tmp stringwidth pop myscaleps put X X % Set current point again. X i rowmove X /curx currentpoint pop def X X % retrieve bounding box info. X tmp false charpath flattenpath pathbbox X /ury exch def X /urx exch def X /lly exch def X /llx exch def X X % calc left bearing as leftx - curx X X lbear i llx curx sub myscale put X X % calc height as upper y - lower y X X heights i ury lly sub myscale put X X % calc right bearing as width - upper x X X rbear i width urx curx sub sub myscale put X X} Xfor X X%%display the widths in the widths array X X/Helvetica-Narrow findfont 5 scalefont setfont X X0 1 258 X{ X /i exch def X X i rowmove X X currentpoint /CY exch def /CX exch def X X 2 -8 irmove X widths i get ( ) cvs show X X -9 8 irmove X heights i get ( ) cvs show X X -9 0 irmove X widthps i get ( ) cvs show X X -9 -8 irmove X lbear i get ( ) cvs show X X 12 -8 irmove X rbear i get ( ) cvs show X X -9 15 irmove X i 8 ( ) cvrs show X X 1 15 irmove X i 10 ( ) cvrs show X X 12 15 irmove X i 16 ( ) cvrs show X} Xfor X XFONTname findfont 18 scalefont setfont X72 144 moveto (This is a test of this font.) show X72 124 moveto (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show X72 104 moveto (abcdefghijklmnopqrstuvwxyz) show X72 84 moveto (0123456789!@#\$\\%^&*\\(\\)_+=) show X72 64 moveto ({}[]\\\\|;:'",.<>?/&~\`) show X Xshowpage X(END showfont display $font `date`\n) print Xflush XSAVEOBJ restore X%%Pages: 1 X!ENDTHING! Xecho "\004\c" X) END_OF_FILE if test 4512 -ne `wc -c <'utils/showfont.S'`; then echo shar: \"'utils/showfont.S'\" unpacked with wrong size! fi # end of 'utils/showfont.S' fi if test -f 'widths/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'widths/Makefile'\" else echo shar: Extracting \"'widths/Makefile'\" \(6562 characters\) sed "s/^X//" >'widths/Makefile' <<'END_OF_FILE' X#2.4 90/08/08 XSCRIPTS = gfnttab XTD = testdir XPSW = \ X widthps/DESC \ X widthps/AB widthps/BR widthps/HB widthps/I widthps/PX \ X widthps/AI widthps/BX widthps/HO widthps/NB widthps/R \ X widthps/AR widthps/C widthps/NI widthps/S \ X widthps/AX widthps/CB widthps/HX widthps/NR widthps/S2 \ X widthps/B widthps/CO widthps/Hb widthps/NX widthps/ZC \ X widthps/BB widthps/CX widthps/Hi widthps/PB widthps/ZD \ X widthps/BI widthps/Hr widthps/PI widthps/BO widthps/H \ X widthps/Hx widthps/PR X Xinclude ../makeincl X Xall: subst.done $(PSW) dit2catwid $(SCRIPTS) ljwidths widths X X$(PSW): X @eval `echo $@ | sed -e 's/\(.*\)\/\([^\/]*\)$$/d=\1 f=s.\2/'` ; \ X cd $$d ; $(GET) $(GFLAGS) $$f X Xwidths: gfnttab dit2catwid X -rm -f gfnttab.log X for i in width* ; \ X do \ X echo "Processing $$i" ; \ X ./gfnttab $$i >> gfnttab.log ; \ X done X Xsubst.done: ../makeincl ../sedscript X rm -f $(SCRIPTS) X touch subst.done X X../utils/pk2ditwid: X cd ../utils ; make pk2ditwid X X# The "for ps in" list below is sort of monotonic increasing ratios X# away from point size 10, further, the larger fonts are the ones X# most likely to not be EXACTLY what pointsize they say they are X# (eg: my PK 36 is actually closer to 32) Xsepwidths: ../utils/pk2ditwid X rm -f pk2sep.log pk2sep.err X @$(IGNORESH) if [ -d $(LJF) ] ; \ X then \ X fontlist=`find $(LJF) -type f \ X '(' -name '*.*.pk' -o -name '*.*.sfp' ')' -print | \ X sed -e 's/^\.\///' -e 's/\..*$$//' -e 's/.*\///' | sort -u` ; \ X for font in $$fontlist ; \ X do \ X case $$font in \ X ?) ;; \ X ??) ;; \ X *) \ X echo "$$font can't be a psroff/troff font!" \ X >> pk2dit.err ; \ X continue ; \ X ;; \ X esac ; \ X file= ; \ X for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \ X do \ X file= ; \ X if [ -r $(LJF)/$$font.$$ps.pk ] ; \ X then \ X file=$(LJF)/$$font.$$ps.pk ; \ X elif [ -r $(LJF)/$$font.$$ps.sfp ] ; \ X then \ X file=$(LJF)/$$font.$$ps.sfp ; \ X fi ; \ X if [ -n "$$file" ] ; \ X then \ X if [ "$$font" = S ] ; \ X then \ X args=-S ; \ X else \ X args= ; \ X fi ; \ X echo "pk2ditwid: $$file" >> pk2sep.log ; \ X ../utils/pk2ditwid $$args $$file >> pk2sep.log \ X 2>> pk2sep.err ; \ X if [ $$? != 0 ] ; \ X then \ X echo "pk2ditwid (on $$font) failed - check pk2sep.log" \ X >> pk2sep.err ; \ X else \ X mv $$font widthlj/$$font.$$ps ; \ X fi ; \ X fi ; \ X done ; \ X done ; \ X for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \ X do \ X for i in $$fontlist ; \ X do \ X if [ ! -r widthlj/$$i.$$ps ] ; \ X then \ X continue ; \ X fi ; \ X case $$i in \ X S) \ X args="-s widthlj/R.$$ps widthlj/S.$$ps" ; \ X if [ ! -r widthlj/R.$$ps ] ; \ X then \ X continue ; \ X fi ; \ X ;; \ X *) \ X args="widthlj/S.$$ps widthlj/$$i.$$ps" ; \ X ;; \ X esac ; \ X echo "dit2catwid: $$i.$$ps" >> pk2sep.log ; \ X ./dit2catwid $$args widthlj/ft$$i.$$ps >> pk2sep.log \ X 2>> pk2sep.err ; \ X done ; \ X done ; \ X fi X X# The "for ps in" list below is sort of monotonic increasing ratios X# away from point size 10, further, the larger fonts are the ones X# most likely to not be EXACTLY what pointsize they say they are X# (eg: my PK 36 is actually closer to 32) Xljwidths: ../utils/pk2ditwid X rm -f pk2dit.log pk2dit.err X @$(IGNORESH) if [ -d $(LJF) ] ; \ X then \ X fontlist=`find $(LJF) -type f \ X '(' -name '*.*.pk' -o -name '*.*.sfp' ')' -print | \ X sed -e 's/^\.\///' -e 's/\..*$$//' -e 's/.*\///' | sort -u` ; \ X for font in $$fontlist ; \ X do \ X case $$font in \ X ?) ;; \ X ??) ;; \ X *) \ X echo "$$font can't be a psroff/troff font!" \ X >> pk2dit.err ; \ X continue ; \ X ;; \ X esac ; \ X file= ; \ X for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \ X do \ X if [ -r $(LJF)/$$font.$$ps.pk ] ; \ X then \ X file=$(LJF)/$$font.$$ps.pk ; \ X break ; \ X elif [ -r $(LJF)/$$font.$$ps.sfp ] ; \ X then \ X file=$(LJF)/$$font.$$ps.sfp ; \ X break ; \ X fi ; \ X done ; \ X if [ -n "$$file" ] ; \ X then \ X echo "Best fit for $$font is $$file" >> pk2dit.log ; \ X if [ "$$font" = S ] ; \ X then \ X args=-S ; \ X else \ X args= ; \ X fi ; \ X echo "Creating widthlj/$$font from $$file" ; \ X ../utils/pk2ditwid $$args $$file >> pk2dit.log \ X 2>> pk2dit.err ; \ X if [ $$? != 0 ] ; \ X then \ X echo "pk2ditwid (on $$font) failed - check pk2dit.log" \ X >> pk2dit.err ; \ X else \ X mv $$font widthlj/$$font ; \ X fi ; \ X fi ; \ X done ; \ X fi X @test ! -s pk2dit.err || (cat pk2dit.err ; exit 1) X @rm -f pk2dit.err X Xinstall: X Xinstallwidths: X @$(IGNORESH) \ X test -w $(FONTDIR) || (echo "Install as root" ; exit 1 ; ) ; \ X for i in width* ; \ X do \ X base=`echo $$i | sed -e 's/.*width//'` ; \ X test -d $(FONTDIR)/$$base || mkdir $(FONTDIR)/$$base ; \ X test -w $(FONTDIR)/$$base || \ X (echo "Install as root" ; exit 1 ; ) ; \ X files=`echo width$$base/ft*` ; \ X if [ "$$files" = "width$$base"'/ft*' ] ; \ X then \ X echo "No $$base widths to install" ; \ X continue ; \ X fi ; \ X echo "Installing $$base widths" ; \ X mv width$$base/ft* $(FONTDIR)/$$base ; \ X done X Xcmp: X test -d $(TD) || mkdir $(TD) X @$(IGNORESH) for i in width* ; \ X do \ X base=`echo $$i | sed -e 's/.*width//'` ; \ X cd $$i ; \ X for j in ft* ; \ X do \ X if [ ! -f $$j ] ; \ X then \ X continue ; \ X fi ; \ X echo "Comparing $$j to $(FONTDIR)/$$base/$$j" ; \ X set +e ; \ X cmp -l $$j $(FONTDIR)/$$base/$$j ; \ X set -e ; \ X done ; \ X cd ../ ; \ X done > $(TD)/widthdiff 2>&1 X Xtest: dit2catwid $(SCRIPTS) X test -d $(TD) || mkdir $(TD) X cp widthps/S $(TD)/S X sed -e '1,/charset/d' widthps/S2 >> $(TD)/S X ./dit2catwid -v $(TD)/S widthps/R $(TD)/ftR > $(TD)/ftR.nout X @echo "Comparing $(TD)/ftR and $(FONTDIR)/ps/ftR" X -cmp -l $(TD)/ftR $(FONTDIR)/ps/ftR X ./dit2catwid -vc $(TD)/S widthps/R $(TD)/ftR.c > $(TD)/ftR.c.nout X ./dit2catwid -sv widthps/R $(TD)/S $(TD)/ftS > $(TD)/ftS.nout X @echo "Comparing $(TD)/ftS and $(FONTDIR)/ps/ftS" X -cmp -l $(TD)/ftS $(FONTDIR)/ps/ftS X ./dit2catwid -svc widthps/R $(TD)/S $(TD)/ftS.c > $(TD)/ftS.c.nout X Xclean: X rm -rf dit2catwid $(SCRIPTS) */ft* *.o $(TD) *.fonts.new X rm -f gfnttab.log pk2dit.log pk2sep.log pk2dit.err pk2sep.err X Xdit2catwid.o: ../defs.h X X../cattab.o: ../defs.h X @echo "cattab.o is out of date, please run make troff2ps in top level first" X exit X Xdit2catwid: ../cattab.o dit2catwid.o X $(CC) $(CFLAGS) -o dit2catwid dit2catwid.o ../cattab.o $(LIBFLAGS) END_OF_FILE if test 6562 -ne `wc -c <'widths/Makefile'`; then echo shar: \"'widths/Makefile'\" unpacked with wrong size! fi # end of 'widths/Makefile' fi echo shar: End of archive 11 \(of 16\). cp /dev/null ark11isdone 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)