[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