[gs-cvs] gs/src

Igor Melichev igor at ghostscript.com
Tue Jan 11 04:27:53 PST 2005


Update of /cvs/ghostscript/gs/src
In directory casper2:/tmp/cvs-serv17168/gs/src

Modified Files:
	gdevpdtt.c 
Log Message:
Fix (the new filling algorithm) : Prevent painting outside the clipping box.

DETAILS :

Bug 687872 "access violation in GS 8.50".

When a trapesoid degenerates to a rectangle,
the old code wrongly truncated it with the clipping box.

Minor change : Moved ybot, ytop definitions closer to their usage.

Due to another known bug 687717, this patch may sometimes cause a regression,
which looks as another missed pixel at a path's Y extreme.
Such regression, when it appears with this patch,
to be considered as a part of the problem 687717.
Expected differences are such cases.

EXPECTED DIFFERENCES :

Normal, 300 dpi :

"Clarke Tate Manns Chinese.ai"
"doretree.ps"
"gs5.98-dragon.pdf"
"gs6.0-dragon.pdf"
"QA_Inv.pdf"
"shading_prob_800.ps"

pdfwrite 300 dpi :

"doretree.ps" 
"gs5.98-dragon.pdf" 
"gs6.0-dragon.pdf" 
"QA_Inv.pdf" 


Index: gdevpdtt.c
===================================================================
RCS file: /cvs/ghostscript/gs/src/gdevpdtt.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- gdevpdtt.c	15 Dec 2004 23:21:32 -0000	1.95
+++ gdevpdtt.c	11 Jan 2005 12:27:50 -0000	1.96
@@ -115,6 +115,8 @@
 	return_error(gs_error_rangecheck);
     }
     if (penum->current_font->FontType == ft_user_defined && 
+	    penum->orig_font->FontType != ft_composite &&
+	    penum->outer_CID == GS_NO_GLYPH &&
 	    !(penum->pte_default->text.operation & TEXT_DO_CHARWIDTH)) {
 	int code;
 	gs_font *font = penum->orig_font;
@@ -2008,6 +2010,14 @@
 	       a transparency with CompatibilityLevel<=1.3 . */
 	    goto default_impl;
 	}
+	if (penum->outer_CID != GS_NO_GLYPH) {
+	    /* Fallback to the default implermentation for handling 
+	       Type 3 fonts with CIDs, because currently Type 3
+	       font resource arrays' sizes are hardcoded to 256 glyphs. 
+	       A better solution would be to re-encode the CID text with
+	       Type 3 glyph variations. */
+	    goto default_impl;
+	}
 	if (code < 0)
 	    return code;
     }
@@ -2051,6 +2061,8 @@
 	if (code == TEXT_PROCESS_RENDER) {
 	    pdev->charproc_ctm = penum->pis->ctm;
 	    if (penum->current_font->FontType == ft_user_defined && 
+		    penum->orig_font->FontType != ft_composite &&
+		    penum->outer_CID == GS_NO_GLYPH &&
 		    !(penum->pte_default->text.operation & TEXT_DO_CHARWIDTH)) {
 		/* The condition above must be consistent with one in pdf_text_set_cache,
 		   which decides to apply pdf_set_charproc_attrs. */



More information about the gs-cvs mailing list