🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sources.bugs
1 messages
1 total messages Started by Chris Lewis Sun, 05 Jan 1992 06:36
Official Patch 7 for Psroff 3.0
#722
Author: Chris Lewis
Date: Sun, 05 Jan 1992 06:36
701 lines
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 ---------------------
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads