Article View: gnu.ghostscript.bug
Article #665Yet another fix for the Ghostscript interpreter
From: Hitoshi Aida
Date: Mon, 01 May 1989 16:55
Date: Mon, 01 May 1989 16:55
117 lines
4390 bytes
4390 bytes
The BuildChar interface of the Ghostscript is not compatible with
the PostScript in that the character coordinate system is not
translated to the currentpoint. This is a fix for it.
Hitoshi AIDA (aida@csl.sri.com)
Computer Science Laboratory, SRI International
*** gschar.c Fri Apr 28 15:34:43 1989
--- gschar.c.org Fri Feb 24 01:03:58 1989
***************
*** 27,33 ****
#include "gzdevice.h" /* must precede gxchar */
#include "gxfont.h"
#include "gxchar.h"
! #include "gzpath.h" /* gxpath->gzpath 04/25/89 H.AIDA */
#include "gzstate.h"
/* Export the FontType that corresponds to */
--- 27,33 ----
#include "gzdevice.h" /* must precede gxchar */
#include "gxfont.h"
#include "gxchar.h"
! #include "gxpath.h"
#include "gzstate.h"
/* Export the FontType that corresponds to */
***************
*** 296,316 ****
cc->offset.y = -min(cll.y, cur.y);
/* Check whether the copy will succeed */
gx_color_render(pgs->color, pgs);
! /* Begin code modified by H.AIDA 04/27/89 */
! if ( (code = gs_gsave(pgs)) < 0 )
! { gx_unalloc_cached_char(dir, cc);
! return code;
! }
! cur.x = pgs->path->position.x - pgs->ctm.tx_fixed;
! cur.y = pgs->path->position.y - pgs->ctm.ty_fixed;
! gs_moveto(pgs, (floatp)0, (floatp)0);
! if ( gx_copy_cached_char(pgs, cc, 0) > 0 )
! { gx_unalloc_cached_char(dir, cc);
! gs_grestore(pgs);
! return 0;
! }
! gs_grestore(pgs);
! /* End code modified by H.AIDA 04/27/89 */
/* Nothing can go wrong now.... */
penum->cc = cc;
cc->code = gs_show_current_char(penum);
--- 296,309 ----
cc->offset.y = -min(cll.y, cur.y);
/* Check whether the copy will succeed */
gx_color_render(pgs->color, pgs);
! if ( gx_copy_cached_char(pgs, cc, 0) > 0 )
! { gx_unalloc_cached_char(dir, cc);
! return 0;
! }
! if ( (code = gs_gsave(pgs)) < 0 )
! { gx_unalloc_cached_char(dir, cc);
! return code;
! }
/* Nothing can go wrong now.... */
penum->cc = cc;
cc->code = gs_show_current_char(penum);
***************
*** 322,334 ****
pgs->device = &penum->dev_cache_dev;
/* Adjust the translation in the graphics context */
/* so that the character lines up with the cache. */
- /* Modified by H.AIDA 04/27/89 */
- pgs->ctm.tx = fixed2float(pgs->ctm.tx_fixed = cc->offset.x);
- pgs->ctm.ty = fixed2float(pgs->ctm.ty_fixed = cc->offset.y);
- pgs->inverse_valid = 0;
- pgs->path->position.x = cc->offset.x + cur.x;
- pgs->path->position.y = cc->offset.y + cur.y;
- /* Old code ....
{ gs_matrix mat;
gs_currentmatrix(pgs, &mat);
mat.tx = fixed2float(cc->offset.x);
--- 315,320 ----
***************
*** 386,396 ****
code = gx_copy_cached_char(pgs, cc, 1);
if ( code < 0 ) return code;
}
! } break; /* 04/27/89 H.AIDA */
case sws_no_cache: ;
- gs_grestore(pgs); /* 04/27/89 H.AIDA */
}
! /* gs_grestore(pgs); 04/27/89 H.AIDA */
color_loaded = 0;
move: if ( penum->add )
gs_rmoveto(pgs, penum->ax, penum->ay);
--- 372,381 ----
code = gx_copy_cached_char(pgs, cc, 1);
if ( code < 0 ) return code;
}
! }
case sws_no_cache: ;
}
! gs_grestore(pgs);
color_loaded = 0;
move: if ( penum->add )
gs_rmoveto(pgs, penum->ax, penum->ay);
***************
*** 453,462 ****
/* Character is not cached, client must render it. */
if ( (code = gs_gsave(pgs)) < 0 ) return code;
gs_setmatrix(pgs, &pgs->char_tm);
- /* quick "currentpoint translate" 04/26/89 H.AIDA */
- pgs->ctm.tx = fixed2float(pgs->ctm.tx_fixed = pgs->path->position.x);
- pgs->ctm.ty = fixed2float(pgs->ctm.ty_fixed = pgs->path->position.y);
- pgs->inverse_valid = 0;
penum->width_set = sws_none;
penum->update = 1;
/* Try using the build procedure in the font. */
--- 438,443 ----
Technical Details
Message-ID:
<8905011655.AA08991@porthos.csl.sri.com>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!CSL.SRI.COM!aidaShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!CSL.SRI.COM!aida From: aida@CSL.SRI.COM (Hitoshi Aida) Newsgroups: gnu.ghostscript.bug Subject: Yet another fix for the Ghostscript interpreter Message-ID: <8905011655.AA08991@porthos.csl.sri.com> Date: 1 May 89 16:55:11 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 117