Article View: comp.sources.bugs
Article #722Official Patch 7 for Psroff 3.0
From: Chris Lewis
Date: Sun, 05 Jan 1992 06:36
Date: Sun, 05 Jan 1992 06:36
701 lines
20961 bytes
20961 bytes
Archive-name: psroff3.0/Patch.07
Submitted-by: clewis@ferret.ocunix.on.ca (Chris Lewis)
This is official patch 07 for Psroff 3.0.
Please apply it by:
cd <psroff source directory>
patch -N -p < <this file>
These patches primarily impact people who are driving psroff from
groff or ditroff, especially when generating HP Laserjet.
Highlights:
1) ditroff *input* coredumped when no character extensions
(-Tlj personality) sometimes. Null dereference fixed.
2) When Postscript&optimizer turned on, "period leaders" (eg:
in table of contents) looked awful. Disabled optimization on "."
character. Problem seems to be that Postscript treats a
period's width differently when adjacent to another period.
(No, I don't really believe this either, but I don't believe
the width generator is wrong either)
3) ditroff input with optimizer on would die with "can't open
ftS2". This is non-fatal, so error disabled for this font.
4) Included shell script to permit building laserjet fonts for
psroff from the Jetroff 1.0 font distribution (available from
c.s.u). (Ie: If you don't have perl and thus can't run the
intelligent font generator, you can use this shell script.
See LASERFONTS file)
5) Without a DESC file for lj, you couldn't use it with
ditroff or groff.
../widths/widthlj/DESC Needed for ditroff/groff driving Laserjet.
../widths/Makefile References DESC
../utils/calcfonts.S Minor mods for generating commands from file lists.
../utils/pk2ditwid.c Put "name" into generated width files.
../utils/psxlate.c Memory allocation checking, minor botch in long lines.
../utils.c Failed open of ftS2 no longer fatal. (optimizer)
../dit.c Coredumps on null dereference.
../defs.h PL7
../psroff.S Finally fixed bloody v flag.
../opt.c disable of . optimization
../zap missing reference to utils, and fixes for broken shells
../LASERFONTS How to build Laserjet fonts without Perl
Patchwrapped: 920105005055
Index: ./widths/widthlj/DESC
0a1,26
> # DESC for LaserJet - dummied for ljroff using pk's or SFP's. 1.1 91/12/26
> fonts 6 R I B H HI S
> sizes 6 7 8 9 10 11 12 14 16 18 20 22 24 28 36 0
> unitwidth 10
> paperwidth 2550
> paperlength 3300
> hor 1
> vert 1
>
> res 300
>
> charset
> \| \^ \- \` \'
> em hy bu sq ru fi fl ff Fi Fl de dg fm ct rg co
> sc aa ga dd
> *A *B *C *D *E *F *G *H *I *K *L *M *N *O *P *Q *R *S *T *U *W *X *Y *Z
> *a *b *c *d *e *f *g *h *i *k *l *m *n *o *p *q *r *s *t *u *w *x *y *z
> pl mi eq ** ul sl sr rn >= <= == ~= ap != -> <- ua da mu di +- ts
> cu ca sb sp ib ip if pd gr no is pt es mo
> br or ci lt lb rt rb lk rk bv lf rf lc rc
> 12 13 14 18 23 34 38 58 78 rh lh
> $J '' .. AE I! I? O/ PL Pl ae be bq cd d< d> dt hc l< lq ma n' o/ oe og
> pm po pp r> ri rq sd ss ui um a~ a^ OE A: O: U: a: o: u:
> !m nm !s :> <: <> a+ ag al an ax bt cm cr dm fa im io la lo m. mt te tf tm =~
> AL Cc Cd Ch Cs L< R> r1 r2 u= d=
> bx bs
Index: ./widths/Makefile
*** /tmp/PATCHold/./widths/Makefile Sun Jan 5 00:48:19 1992
--- ./widths/Makefile Sun Jan 5 00:48:21 1992
***************
*** 4,10 ****
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #2.19 91/07/31
SCRIPTS = gfnttab genext installdit
TD = testdir
PSW = \
--- 4,10 ----
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #2.20 91/12/26
SCRIPTS = gfnttab genext installdit
TD = testdir
PSW = \
***************
*** 16,22 ****
widthps/B widthps/CO widthps/Hb widthps/NX widthps/ZC \
widthps/BB widthps/CX widthps/Hi widthps/PB widthps/ZD \
widthps/BI widthps/Hr widthps/PI widthps/BO widthps/H \
! widthps/Hx widthps/PR
LJ3W = \
widthlj3/DESC widthlj3/S2 \
widthlj3/B widthlj3/I widthlj3/R widthlj3/S widthlj3/X \
--- 16,23 ----
widthps/B widthps/CO widthps/Hb widthps/NX widthps/ZC \
widthps/BB widthps/CX widthps/Hi widthps/PB widthps/ZD \
widthps/BI widthps/Hr widthps/PI widthps/BO widthps/H \
! widthps/Hx widthps/PR \
! widthlj/DESC
LJ3W = \
widthlj3/DESC widthlj3/S2 \
widthlj3/B widthlj3/I widthlj3/R widthlj3/S widthlj3/X \
Index: ./utils/calcfonts.S
*** /tmp/PATCHold/./utils/calcfonts.S Sun Jan 5 00:48:30 1992
--- ./utils/calcfonts.S Sun Jan 5 00:48:31 1992
***************
*** 7,13 ****
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #Copyright 1991/09/27 Chris Lewis 2.3
# Set to path of sfp2pk if you have it, otherwise NULL.
$sfp2pk = '';
--- 7,13 ----
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #Copyright 1991/12/26 Chris Lewis 2.4
# Set to path of sfp2pk if you have it, otherwise NULL.
$sfp2pk = '';
***************
*** 106,127 ****
$found[$pointsize] = 1;
chop($usedfonts);
printf STDERR ("Generating $outf at $pointsize using $usedfonts\n");
! if (system($cmdline)) {
! printf STDERR ("failed ($!) $cmdline\n");
! exit(1);
! }
! if (system("$basedir/pk2sfp t > $newfonts/$outf.$pointsize.sfp")) {
! printf STDERR ("pk2sfp sort to build $outf.$pointsize.sfp failed\n");
! exit(1);
! }
! unlink('t');
! if ($sfp2pk) {
! if (system("$sfp2pk < $newfonts/$outf.$pointsize.sfp " .
! "> $newfonts/$outf.$pointsize.pk")) {
! printf STDERR ("sfp2pk < $outf.$pointsize.sfp failed\n");
exit(1);
}
! unlink("$newfonts/$outf.$pointsize.sfp");
}
close(GEN);
}
--- 106,132 ----
$found[$pointsize] = 1;
chop($usedfonts);
printf STDERR ("Generating $outf at $pointsize using $usedfonts\n");
! if ($nogenerate) {
! printf "$cmdline\n";
! printf "$basedir/pk2sfp t > $newfonts/$outf.$pointsize.sfp\n";
! } else {
! if (system($cmdline)) {
! printf STDERR ("failed ($!) $cmdline\n");
! exit(1);
! }
! if (system("$basedir/pk2sfp t > $newfonts/$outf.$pointsize.sfp")) {
! printf STDERR ("pk2sfp sort to build $outf.$pointsize.sfp failed\n");
exit(1);
}
! unlink('t');
! if ($sfp2pk) {
! if (system("$sfp2pk < $newfonts/$outf.$pointsize.sfp " .
! "> $newfonts/$outf.$pointsize.pk")) {
! printf STDERR ("sfp2pk < $outf.$pointsize.sfp failed\n");
! exit(1);
! }
! unlink("$newfonts/$outf.$pointsize.sfp");
! }
}
close(GEN);
}
***************
*** 184,189 ****
--- 189,198 ----
$sfp2pk = $1;
} elsif ($arg =~ /^-f(.*)/) {
$newfonts = $1;
+ } elsif ($arg =~ /^-F(.*)/) {
+ $fontfilelist = $1;
+ } elsif ($arg =~ /^-O/) {
+ $nogenerate = 1;
} elsif ($arg !~ /^-/) {
if (-d $arg) {
$dirlist = "$dirlist $arg";
***************
*** 202,209 ****
$sfp2pk = '';
}
! if (!$dirlist) {
! printf STDERR ("No directories to search - aborting\n");
exit(0);
}
--- 211,218 ----
$sfp2pk = '';
}
! if (!$dirlist && !$fontfilelist) {
! printf STDERR ("No directories or files to search - aborting\n");
exit(0);
}
***************
*** 215,223 ****
open(DISCARD, ">discard");
$cmdline =
! "find $dirlist -type f '(' -name '*pk' -o -name '*.sfp' ')' -print";
printf STDERR ("Commandline: $cmdline\n");
! open(INLIST, "$cmdline|") || die "Cannot start $cmdline\n";
while(<INLIST>) {
chop;
--- 224,235 ----
open(DISCARD, ">discard");
$cmdline =
! "find $dirlist -type f '(' -name '*pk' -o -name '*.sfp' ')' -print|";
! if ($fontfilelist) {
! $cmdline = "<$fontfilelist";
! }
printf STDERR ("Commandline: $cmdline\n");
! open(INLIST, "$cmdline") || die "Cannot start $cmdline\n";
while(<INLIST>) {
chop;
***************
*** 319,325 ****
'cmr,jmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
do gen('I', 'Times-Italic', '\033(8U\033(s1p1s-3b05T', 'ROMAN8',
! 'cmsl,jmsl/cmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
do gen('B', 'Times-Bold', '\033(8U\033(s1p0s03b05T', 'ROMAN8',
'cmbx,jmbx/cmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
--- 331,337 ----
'cmr,jmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
do gen('I', 'Times-Italic', '\033(8U\033(s1p1s-3b05T', 'ROMAN8',
! 'cmti,cmsl,jmsl/cmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
do gen('B', 'Times-Bold', '\033(8U\033(s1p0s03b05T', 'ROMAN8',
'cmbx,jmbx/cmr', 'cmsy,jmsy', 'cmti,jmti', 'cmtrf,jmtrf');
Index: ./utils/pk2ditwid.c
*** /tmp/PATCHold/./utils/pk2ditwid.c Sun Jan 5 00:48:41 1992
--- ./utils/pk2ditwid.c Sun Jan 5 00:48:42 1992
***************
*** 10,16 ****
#ifndef lint
static char SCCSID[] =
! "@(#)pk2ditwid.c 2.3 Copyright 91/02/20 09:09:45 Chris Lewis";
#endif
#include "defs.h"
--- 10,16 ----
#ifndef lint
static char SCCSID[] =
! "@(#)pk2ditwid.c 2.4 Copyright 91/12/26 17:59:20 Chris Lewis";
#endif
#include "defs.h"
***************
*** 131,136 ****
--- 131,137 ----
} else {
fprintf(fout, "# %s\n", buf);
fprintf(fout, "# Generated by pk2ditwid\n");
+ fprintf(fout, "name %s\n", buf);
fprintf(fout, "spacewidth 22\n");
fprintf(fout, "charset\n");
}
Index: ./utils/psxlate.c
*** /tmp/PATCHold/./utils/psxlate.c Sun Jan 5 00:48:52 1992
--- ./utils/psxlate.c Sun Jan 5 00:48:54 1992
***************
*** 23,29 ****
*/
#ifndef lint
static char SCCSid[] =
! "@(#)psxlate.c: 2.17 Copyright 91/10/23 10:47:15 Chris Lewis";
#endif
#ifdef ALONE
--- 23,29 ----
*/
#ifndef lint
static char SCCSid[] =
! "@(#)psxlate.c: 2.18 Copyright 91/12/21 13:13:44 Chris Lewis";
#endif
#ifdef ALONE
***************
*** 228,233 ****
--- 228,234 ----
int nest = 0;
magicstr = malloc(strlen(buffer) + 1);
+ allchk(magicstr);
strcpy(magicstr, buffer);
while(1) {
***************
*** 452,457 ****
--- 453,459 ----
append(2);
p = (struct pagedesc *) malloc(sizeof(struct pagedesc) * pagecnt);
+ allchk(p);
mid = pagecnt / 2;
***************
*** 508,513 ****
--- 510,516 ----
append(4);
p = (struct pagedesc *) malloc(sizeof(struct pagedesc) * pagecnt);
+ allchk(p);
mid = pagecnt / 2;
for (i = 0, end = pagecnt - 1; i < mid; i += 2, end -= 2) {
p[i] = pageidx[end];
***************
*** 544,549 ****
--- 547,553 ----
if (buffer == NULL) {
buffer = malloc(4096);
+ allchk(buffer);
buflimit = 4096;
}
***************
*** 552,559 ****
--- 556,566 ----
putc(ch, out);
curcount++;
if (p - buffer > buflimit-3) {
+ int offset = p - buffer;
buflimit += CHUNK;
buffer = realloc(buffer, buflimit);
+ allchk(buffer);
+ p = buffer + offset;
}
*p++ = ch;
if (ch == '\n')
***************
*** 690,693 ****
--- 697,709 ----
fputs(cmdbuffer, stdout);
fclose(f);
+ }
+
+ allchk(p)
+ register char *p; {
+ if (!p) {
+ fprintf(stderr, "%s: [re|m]alloc failed - out of memory\n",
+ progname);
+ exit(1);
+ }
}
Index: ./utils.c
*** /tmp/PATCHold/./utils.c Sun Jan 5 00:49:12 1992
--- ./utils.c Sun Jan 5 00:49:22 1992
***************
*** 12,18 ****
#ifndef lint
static char SCCSid[] =
! "@(#)utils.c: 2.21 Copyright 91/11/22 03:21:21 Chris Lewis";
#endif
#ifndef HEADERSIZE
--- 12,18 ----
#ifndef lint
static char SCCSid[] =
! "@(#)utils.c: 2.22 Copyright 91/12/26 17:58:48 Chris Lewis";
#endif
#ifndef HEADERSIZE
***************
*** 527,536 ****
DBP((D_SPEC, "Failed to open widthtable %s\n", widthtables));
free(p->widthtable);
p->widthtable = (char *) 1;
! fprintf(stderr, "%s: failed to open width table %s\n",
! progname, widthtables);
! fprintf(stderr, "\trecheck -W option\n");
! exit(1);
}
}
--- 527,539 ----
DBP((D_SPEC, "Failed to open widthtable %s\n", widthtables));
free(p->widthtable);
p->widthtable = (char *) 1;
! /* This isn't really the right way to do this, but.... */
! if (strcmp(p->troffName, "S2") != 0) {
! fprintf(stderr, "%s: failed to open width table %s\n",
! progname, widthtables);
! fprintf(stderr, "\trecheck -W option\n");
! exit(1);
! }
}
}
Index: ./dit.c
*** /tmp/PATCHold/./dit.c Sun Jan 5 00:49:43 1992
--- ./dit.c Sun Jan 5 00:49:46 1992
***************
*** 12,18 ****
#ifndef lint
static char SCCSid[] =
! "@(#)dit.c: Copyright 91/11/22 03:53:18 Chris Lewis";
#endif
extern struct cattab tabN[], tabS[], *extidx;
--- 12,18 ----
#ifndef lint
static char SCCSid[] =
! "@(#)dit.c: Copyright 91/12/26 17:58:58 Chris Lewis";
#endif
extern struct cattab tabN[], tabS[], *extidx;
***************
*** 93,99 ****
addtab(tabN);
addtab(tabS);
! addtab(extidx);
/* Magic */
dittab['-'] = &tabN[31];
--- 93,100 ----
addtab(tabN);
addtab(tabS);
! if (extidx)
! addtab(extidx);
/* Magic */
dittab['-'] = &tabN[31];
Index: ./defs.h
*** /tmp/PATCHold/./defs.h Sun Jan 5 00:49:58 1992
--- ./defs.h Sun Jan 5 00:50:00 1992
***************
*** 9,15 ****
*/
/* Official Release and Patch level: */
! #define T2VERSION "@(#)PSROFF Copyright 91/11/22 Chris Lewis - R3 PL6"
/* Configuration parameters:
*/
--- 9,15 ----
*/
/* Official Release and Patch level: */
! #define T2VERSION "@(#)PSROFF Copyright 91/12/26 Chris Lewis - R3 PL7"
/* Configuration parameters:
*/
Index: ./psroff.S
*** /tmp/PATCHold/./psroff.S Sun Jan 5 00:50:13 1992
--- ./psroff.S Sun Jan 5 00:50:15 1992
***************
*** 7,13 ****
#
# Specs: troff2ps driver
#
! #ident "@(#)psroff.sh: 2.18 Copyright 91/11/22 03:21:09 Chris Lewis"
LIBDIR="%%LIBDIR%%"
FONTDIR="%%FONTDIR%%"
--- 7,13 ----
#
# Specs: troff2ps driver
#
! #ident "@(#)psroff.sh: 2.19 Copyright 91/12/26 17:58:37 Chris Lewis"
LIBDIR="%%LIBDIR%%"
FONTDIR="%%FONTDIR%%"
***************
*** 298,304 ****
cat $files |
! if [ -f "%%PERL%%" -a -z "$v" ]
then
%%LIBDIR%%/catconv
else
--- 298,304 ----
cat $files |
! if [ -f "%%PERL%%" -a -n "$v" ]
then
%%LIBDIR%%/catconv
else
Index: ./opt.c
*** /tmp/PATCHold/./opt.c Sun Jan 5 00:50:24 1992
--- ./opt.c Sun Jan 5 00:50:25 1992
***************
*** 16,22 ****
#ifdef OPT
#ifndef lint
static char SCCSid[] =
! "@(#)opt.c: 2.6 Copyright 91/08/12 23:52:41 Chris Lewis";
#endif
struct insbuf {
--- 16,22 ----
#ifdef OPT
#ifndef lint
static char SCCSid[] =
! "@(#)opt.c: 2.7 Copyright 92/01/03 11:33:47 Chris Lewis";
#endif
struct insbuf {
***************
*** 247,259 ****
}
cantcache = !wp || (int) wp == 1 || (font == symidx ? bp->t2b_font != S:
! bp->t2b_font != N);
! if (bp->t2b_xc || bp->t2b_yc || bp->t2b_scale || cantcache)
optflush();
DBP((D_CAT, "opt: font: %d/%d xpos: %d/%d\n",
optfont, font, optxpos, xpos));
if (optxpos != xpos) /* handle spaces one day... */
optflush();
--- 247,265 ----
}
cantcache = !wp || (int) wp == 1 || (font == symidx ? bp->t2b_font != S:
! bp->t2b_font != N)
! #ifndef FIXEDPERIODWIDTH
! /* period widths are screwed in Postscript */
! || (font != symidx && nc == 35)
! #endif
! ;
! if (cantcache || bp->t2b_xc || bp->t2b_yc || bp->t2b_scale)
optflush();
DBP((D_CAT, "opt: font: %d/%d xpos: %d/%d\n",
optfont, font, optxpos, xpos));
+
if (optxpos != xpos) /* handle spaces one day... */
optflush();
Index: ./zap
*** /tmp/PATCHold/./zap Sun Jan 5 00:50:33 1992
--- ./zap Sun Jan 5 00:50:34 1992
***************
*** 1,9 ****
:
! #1.3 91/07/23: Used to bypass broken makes - see MISC "Broken makes"
if [ $# = 0 ]
then
make sedscript makeincl
! for i in adapters lib widths tests man
do
cd $i
for j in *.S
--- 1,9 ----
:
! #1.4 91/12/26: Used to bypass broken makes - see MISC "Broken makes"
if [ $# = 0 ]
then
make sedscript makeincl
! for i in adapters lib widths tests man utils
do
cd $i
for j in *.S
***************
*** 15,21 ****
;;
'*.S')
echo "No .S files in $i"
! continue
;;
esac
f=`basename $j .S`
--- 15,21 ----
;;
'*.S')
echo "No .S files in $i"
! break
;;
esac
f=`basename $j .S`
Index: ./LASERFONTS
*** /tmp/PATCHold/./LASERFONTS Sun Jan 5 00:50:44 1992
--- ./LASERFONTS Sun Jan 5 00:50:45 1992
***************
*** 1,5 ****
How to build Fonts and Width Tables for your Laserjet
! 2.4 91/07/20
This readme presents a general discussion on how to build fonts
for psroff. The first part gives a complete description of what
--- 1,5 ----
How to build Fonts and Width Tables for your Laserjet
! 2.5 91/12/26
This readme presents a general discussion on how to build fonts
for psroff. The first part gives a complete description of what
***************
*** 131,136 ****
--- 131,138 ----
There is a perl script in utils called "calcfonts", which if invoked
in the top level make via:
+ [If you don't have Perl, go to "AUTOMATING IF YOU DON'T HAVE PERL"]
+
make buildljfonts
Will traverse every directory you've specified for PKFONTS during
***************
*** 172,174 ****
--- 174,230 ----
only used if you've selected a point size which is marked "b" (builtin),
or is marked "n" (non-existent), and the bestmatch code in lj.c didn't
find an existing font (same typeface) at a "close enough" pointsize.
+
+ AUTOMATING IF YOU DON'T HAVE PERL
+
+ If you don't have perl, the following script will construct R, I, B
+ and C at point sizes 6 through 28 from the Jetroff 1.0 font distribution.
+ Run this in place of "make buildljfonts". After running it,
+ copy all of the files from /tmp/newfonts into $LJF. Then
+ mark point sizes 6 thru 28 (in R, I, B and C) as "s" in lj.fonts, then:
+
+ make register
+ su root
+ make install
+ make installwidths
+
+ ---------------------- Snip here ---------------------
+ PSRC=<path to psroff source>
+ JFONTS=<path to jetroff fonts>
+ NEWFONT=/tmp/newfonts
+ if [ ! -d /tmp/newfonts ]
+ then
+ mkdir /tmp/newfonts
+ fi
+ for i in 6 7 8 9 10 11 12 14 16 18 20 22 24 28
+ do
+ $PSRC/utils/pk2sfp -m \
+ $PSRC/utils/maps/cmr.ROMAN8 $JFONTS/devjet/pk/cmr$i.300pk \
+ $PSRC/utils/maps/cmsy.ROMAN8 $JFONTS/devjet/pk/cmsy$i.300pk \
+ $PSRC/utils/maps/cmti.ROMAN8 $JFONTS/devjet/pk/cmti$i.300pk \
+ $PSRC/utils/maps/cmtrf.ROMAN8 $JFONTS/devjet/pk/cmtrf$i.300pk \
+ > t
+ $PSRC/utils/pk2sfp t > $NEWFONT/R.$i.sfp
+ $PSRC/utils/pk2sfp -m \
+ $PSRC/utils/maps/cmr.ROMAN8 $JFONTS/devjet/pk/cmbx$i.300pk \
+ $PSRC/utils/maps/cmsy.ROMAN8 $JFONTS/devjet/pk/cmsy$i.300pk \
+ $PSRC/utils/maps/cmti.ROMAN8 $JFONTS/devjet/pk/cmti$i.300pk \
+ $PSRC/utils/maps/cmtrf.ROMAN8 $JFONTS/devjet/pk/cmtrf$i.300pk \
+ > t
+ $PSRC/utils/pk2sfp t > $NEWFONT/B.$i.sfp
+ $PSRC/utils/pk2sfp -m \
+ $PSRC/utils/maps/cmtt.ROMAN8 $JFONTS/devjet/pk/cmtt$i.300pk \
+ $PSRC/utils/maps/cmsy.ROMAN8 $JFONTS/devjet/pk/cmsy$i.300pk \
+ $PSRC/utils/maps/cmti.ROMAN8 $JFONTS/devjet/pk/cmti$i.300pk \
+ $PSRC/utils/maps/cmtrf.ROMAN8 $JFONTS/devjet/pk/cmtrf$i.300pk \
+ > t
+ $PSRC/utils/pk2sfp t > $NEWFONT/C.$i.sfp
+ $PSRC/utils/pk2sfp -m \
+ $PSRC/utils/maps/cmr.ROMAN8 $JFONTS/devjet/pk/cmti$i.300pk \
+ $PSRC/utils/maps/cmsy.ROMAN8 $JFONTS/devjet/pk/cmsy$i.300pk \
+ $PSRC/utils/maps/cmti.ROMAN8 $JFONTS/devjet/pk/cmti$i.300pk \
+ $PSRC/utils/maps/cmtrf.ROMAN8 $JFONTS/devjet/pk/cmtrf$i.300pk \
+ > t
+ $PSRC/utils/pk2sfp t > $NEWFONT/I.$i.sfp
+ done
+ ---------------------- Snip here ---------------------
Technical Details
Message-ID:
<2974@ecicrl.ocunix.on.ca>Path:
arc1-ca.pugleaf.net!wupost!cs.utexas.edu!utgpu!cunews!revcan!infotax!ecicrl!ferret.ocunix.on.ca!clewisShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!wupost!cs.utexas.edu!utgpu!cunews!revcan!infotax!ecicrl!ferret.ocunix.on.ca!clewis From: clewis@ferret.ocunix.on.ca (Chris Lewis) Newsgroups: comp.sources.bugs,comp.lang.postscript,comp.text,alt.sources Subject: Official Patch 7 for Psroff 3.0 Message-ID: <2974@ecicrl.ocunix.on.ca> Date: 5 Jan 92 06:36:14 GMT Sender: clewis@ferret.ocunix.on.ca Followup-To: comp.sources.bugs Organization: Elegant Communications Inc., Ottawa, Canada Lines: 701