[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