[gs-cvs] rev 7794 - in trunk/gs: lib src
leonardo at ghostscript.com
leonardo at ghostscript.com
Tue Mar 20 18:48:32 PDT 2007
Author: leonardo
Date: 2007-03-20 18:48:30 -0700 (Tue, 20 Mar 2007)
New Revision: 7794
Modified:
trunk/gs/lib/pdf_ops.ps
trunk/gs/src/gdevpdtt.c
Log:
Fix (PDF interpreter, pdfwrite) : Transparently pass unusialrenedering modes.
DETAILS :
Bug 689124 "Converting PDF to PDF makes text non-selectable"
The old code transformed a text with unusual rendering mode
into outlines.
1. When the current device is pdfwrite,
the new code of PDF interpreter doesn't emulate
unusual rendering modes. (Patch from Alex).
2. pdfwrite transparently passes unusual rendering modes.
EXPECTED DIFFERENCES :
pdfwrite :
"chartab.pdf"
"Bug687724.pdf"
"bugsample.pdf"
"GS_Stroke_error.pdf"
"PixelisAd.pdf"
"CAT_LOGO.ps"
"017-01.ps"
"045-01.ps"
"093-01.ps"
"175-01.ps"
"327-01.ps"
"334-01.ps"
"335-01.ps"
"336-01.ps"
Actually it's a PDF conversion progression.
The difference in rasters is a minor secondary effect.
Modified: trunk/gs/lib/pdf_ops.ps
===================================================================
--- trunk/gs/lib/pdf_ops.ps 2007-03-19 04:27:34 UTC (rev 7793)
+++ trunk/gs/lib/pdf_ops.ps 2007-03-21 01:48:30 UTC (rev 7794)
@@ -594,7 +594,7 @@
] readonly def
/setshowstate
{ WordSpacing 0 eq TextSpacing 0 eq and
- { TextRenderingMode 0 eq {
+ { TextRenderingMode 0 eq currentdevice .devicename /pdfwrite eq or {
{ setfillstate show }
} {
TextRenderingMode 3 eq {
@@ -626,7 +626,7 @@
} ifelse
} ifelse
}
- { TextRenderingMode 0 eq TextRenderingMode 3 eq or
+ { TextRenderingMode 0 eq TextRenderingMode 3 eq or currentdevice .devicename /pdfwrite eq or
% Tr was set to graphic state.
{ WordSpacing 0 eq
{ { setfillstate TextSpacing 0 Vexch 3 -1 roll ashow } }
Modified: trunk/gs/src/gdevpdtt.c
===================================================================
--- trunk/gs/src/gdevpdtt.c 2007-03-19 04:27:34 UTC (rev 7793)
+++ trunk/gs/src/gdevpdtt.c 2007-03-21 01:48:30 UTC (rev 7794)
@@ -2000,7 +2000,7 @@
ppts->values.size = size;
ppts->values.matrix = tmat;
ppts->values.render_mode = (penum->pis->text_rendering_mode == 3 ? 3 :
- font->PaintType == 0 ? 0 : 1);
+ font->PaintType == 0 ? 0 : penum->pis->text_rendering_mode);
ppts->values.word_spacing = w_s;
ppts->font = font;
More information about the gs-cvs
mailing list