[gs-bugs] [Bug 691464] PCLSelectFont (pxl) messes with pcl-ctm

bugzilla-daemon at ghostscript.com bugzilla-daemon at ghostscript.com
Tue Jul 20 09:44:06 UTC 2010


http://bugs.ghostscript.com/show_bug.cgi?id=691464

--- Comment #5 from norbert.janssen at oce.com 2010-07-20 09:44:05 UTC ---
(In reply to comment #4)
> (In reply to comment #3)
> > (In reply to comment #2)
> > > possible fix:
> > > 
> > > add a pcl_do_resets(global_pcs, pcl_reset_initial); to the pxpcl_release().
> > 
> > it's not complete. It looks like the char_matrix is not reset.
> > I'm inclined to think that the pxpcl_release should also do more with
> > xfm_state (esp. lp2dev_mtx, pd2dev_mtx)
> > 
> > I see in the callstack:
> > pcl_process
> >  - pcl_text
> >   - pcl_set_graphics_state
> >    - pcl_set_ctm -> uses xfm_state.pd2dev_mtx which is still containing values
> > from the PCLselectFont.
> 
> 
Found it: the pxpcl_release() does not reset the pcs->end_page to
pcl_end_page_top(). It still is pcl_end_page_noop(), thus not printing any
pages (pcl is still in pclxl_snippet mode!).

pxpcl_release(void)
{
    if (global_pcs) {
         if (gs_debug_c('i'))
             dprintf("passthrough: releasing global pcl state\n");
         pcl_grestore(global_pcs);
         gs_grestore_only(global_pcs->pgs);
         gs_nulldevice(global_pcs->pgs);
         pcl_do_resets(global_pcs, pcl_reset_permanent);
         global_pcs->end_page = pcl_end_page_top;  /* pcl_end_page handling */
         pxpcl_pagestatereset();
         global_pcs = NULL; /* moved after pxpcl_pagestatereset(); */
         global_this_pass_contiguous = false;
         global_pass_first = true;
         global_char_shear.x = 0;
         global_char_shear.y = 0;
         global_char_scale.x = 1.0;
         global_char_scale.y = 1.0;
         global_char_bold_value = 0.0;
}
> }

-- 
Configure bugmail: http://bugs.ghostscript.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the gs-bugs mailing list