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

bugzilla-daemon at ghostscript.com bugzilla-daemon at ghostscript.com
Tue Jul 20 09:33:22 UTC 2010


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

--- Comment #4 from norbert.janssen at oce.com 2010-07-20 09:33:19 UTC ---
(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 spxpcl_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;
    }
}till is pcl_end_page_noop(), thus not printing any pages.

-- 
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