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