[gnu.ghostscript.bug] GhostScript v1.2 comments

ghost@SUN.COM (L. Peter Deutsch) (03/24/89)

> Date: Fri, 10 Mar 89 07:23:40 EST
> From: parcplace!crtb%dxi.nih.gov.nih.gov (chuck bacon)
> Message-Id: <8903101223.AA06650@dxi.NIH.GOV>
> To: bug-ghostscript%prep.ai.mit.edu
> Subject: GhostScript v1.2 comments
> 
> 1. I've added a call to gs_closepath inside gs_fill, in gspaint.c;
>    the Red Book calls for this, and it helps prevent line glitches.

This change is neither necessary nor desirable.  The fill algorithm
in gxfill.c implicitly closes all subpaths, not just the current one:
see the code in add_y_list with the comment '"Close" an open
subpath'.  Please send me an example of a file that produces "line
glitches" without this fix.

I do know of a problem with visual glitches on lines in release 1.2,
caused by interacting bugs in gz_fill_trapezoid and gz_draw_line.
The symptom is that nearly horizontal lines are displaced to the
right.  I just finished a fix for this.

> 2. gsfont, gsim2out, gxdraw and gdevx all die miserably under gcc, and so
>    were separately run through ansi2knr. The rest generate TONS of warnings.

People have reported conflicting stories about running Ghostscript
through gcc.  I'm working on the problem of the large number of
(harmless but distracting) warnings, but "die miserably" sounds more
serious.  What version of gcc did you use?

> 3. gfonts.ps: Change FontMatrix size from 1/8 to 1/16; closer to Courier.
>    Increase /CharData size from 128 to 150 (see (4)).

You're right that the FontMatrix values need adjusting: I forgot that
uglyfont's bitmap includes 2 scan lines above, and 3 scan lines
below, the principal character box (e.g., the bounding box for
capital 'A').  I think the right fix is to change the Y value in
FontMatrix from 1/14 to 1/9, but I need to think about this a little
more.

> 4. uglyfont.cp: Add codes for codes above 127, matching defined codes
>    in StandardEncoding.  They all look like hyphens, but still...

Good point.  I've changed gfonts.ps to make all the unmapped
characters display as a tilde (~).  There's no need to duplicate the
bitmaps.

> 5. The interpreter always clears operand stack when returning to prompt.
>    This prevents hand-entering programs.  I may try to fix this.

I'll fix it in the next release: I'd be happy to look at any proposed
fix you send me.  I'll also try to fix the problem (reported by
another user) that prevents you from entering a procedure or
expression that takes more than one line.

> 6. userdict length should be 200, not 100, to match the LaserWriter, and
>    prevent lots of crashes with /dictfull errors.

Until I implement expandable dictionaries, this is the right thing to
do.  Sorry I didn't read the Red Book carefully enough.

> And, of course, there's save and restore.  That's a major project, I know,
> but absolutely vital.  I've used it a good bit in order to provide `local'
> variables.  Most public ps files can't live without it either.

I've thought a little about how to implement save and restore.  I
have an implementation in mind that isn't TOO awful or expensive,
although it does slow down storing into arrays and dictionaries a
little (I don't see how to avoid this, frankly).  save and restore
are not high on my list right now, but if other users also feel this
is important, I'll move them up.  (You're right, it's a relatively
big project.)

	Thanks for helping improve Ghostscript -

		- P. D.

		aladdin!ghost@parcplace.com
		...{sun!}parcplace!aladdin!ghost
		P. O. box 60264, Palo Alto, CA 94306

thawk1@ibmpcug.UUCP (Timothy Hawkins) (03/28/89)

There is a bug in the rand function on 1.2, it returns negative numbers
which is at odds with the adobe standard, how ever it is easy to fix.
just add an value = labs(value); inside the rand function before
pushing the value back on the stack.. This can cause a lot of mysterious
"rangechecks" in sample files of the "draw random things on the page"
nature.. About the tracking of operator names.. An approach That I used
in my own postscript interpreter is not to place the address of the operator
into the operator object , but the index number of a look up table
for "name", "address" pairs, backtracking an operator becomes a simple case
of looking up the table and retrieving the name... 
This also allows one to have a central name/object table with a single install
 routine.































-- 
Automatic Disclaimer:
The views expressed above are those of the author alone and may not
represent the views of the IBM PC User Group.

ath@helios.prosys.se (Anders Thulin) (03/29/89)

In article <10581@ibmpcug.UUCP> thawk1@ibmpcug.UUCP (Timothy Hawkins) writes:
>
>There is a bug in the rand function on 1.2, it returns negative numbers
>which is at odds with the adobe standard, how ever it is easy to fix.
>just add an value = labs(value); inside the rand function before
>pushing the value back on the stack.. 

Just make sure that your labs() handles MIN_LONG (-MAX_LONG-1) properly.
Some of them don't: they just return it unchanged. This goes for
abs() too.
-- 
Anders Thulin			INET : ath@prosys.se
ProgramSystem AB		UUCP : ...!{uunet,mcvax}!enea!prosys!ath
Teknikringen 2A			PHONE: +46 (0)13 21 40 40
S-583 30 Linkoping, Sweden	FAX  : +46 (0)13 21 36 35