[gs-cvs] rev 7058 - trunk/gs/src

leonardo at ghostscript.com leonardo at ghostscript.com
Tue Sep 19 12:40:21 PDT 2006


Author: leonardo
Date: 2006-09-19 12:40:20 -0700 (Tue, 19 Sep 2006)
New Revision: 7058

Modified:
   trunk/gs/src/gdevpdtf.c
   trunk/gs/src/gdevpdtf.h
   trunk/gs/src/gdevpdtw.c
   trunk/gs/src/gdevpdtw.h
Log:
Fix (pdfwrite) : Wrinting a PDF/A, convert True Type fonts into CIDFontType2 (continued).

DETAILS :

This is a partial fix the bug 688790  
"pdfwrite : The PDF/A conversion needs to re-encode texts".

This is a code restructurization against missed function prototypes.
The change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.


Modified: trunk/gs/src/gdevpdtf.c
===================================================================
--- trunk/gs/src/gdevpdtf.c	2006-09-19 18:59:10 UTC (rev 7057)
+++ trunk/gs/src/gdevpdtf.c	2006-09-19 19:40:20 UTC (rev 7058)
@@ -882,19 +882,6 @@
 
 /* ------ CID-keyed ------ */
 
-/* Write CIDSystemInfo */
-private int
-pdf_write_cid_systemInfo_separate(gx_device_pdf *pdev, const gs_cid_system_info_t *pcidsi, long *id)
-{   
-    int code;
-
-    *id = pdf_begin_separate(pdev);
-    code = pdf_write_cid_system_info(pdev, pcidsi, *id);
-    pdf_end_separate(pdev);
-    return code;
-}
-
-
 /* Allocate a CIDFont resource. */
 int
 pdf_font_cidfont_alloc(gx_device_pdf *pdev, pdf_font_resource_t **ppfres,
@@ -1070,77 +1057,3 @@
     return pdf_write_cmap(pdev, pcmap, ppres, font_index_only);
 }
 
-static const char *OneByteIdentityH[] = {
-    "/CIDInit /ProcSet findresource begin",
-    "12 dict begin",
-    "begincmap",
-    "/CIDSystemInfo 3 dict dup begin",
-      "/Registry (Adobe) def",
-      "/Ordering (Identity) def",
-      "/Supplement 0 def",
-    "end def",
-    "/CMapName /OneByteIdentityH def",
-    "/CMapVersion 1.000 def",
-    "/CMapType 1 def",
-    "/UIDOffset 0 def",
-    "/XUID [1 10 25404 9999] def",
-    "/WMode 0 def",
-    "1 begincodespacerange",
-    "<00> <FF>",
-    "endcodespacerange",
-    "1 begincidrange",
-    "<00> <FF> 0",
-    "endcidrange",
-    "endcmap",
-    "CMapName currentdict /CMap defineresource pop",
-    "end",
-    "end",
-NULL};
-
-/* 
- * Write OneByteIdentityH CMap. 
- */
-int
-pdf_write_OneByteIdentityH(gx_device_pdf *pdev)
-{ 
-    int code, i;
-    pdf_data_writer_t writer;
-    cos_dict_t *pcd;
-    char buf[200];
-    static const gs_cid_system_info_t cidsi = {{(const byte *)"Adobe", 5}, {(const byte *)"Identity", 8}, 0};
-    long id;
-
-    if (pdev->IdentityCIDSystemInfo_id == gs_no_id) {
-	code = pdf_write_cid_systemInfo_separate(pdev, &cidsi, &id);
-	if (code < 0)
-	    return code;
-	pdev->IdentityCIDSystemInfo_id = id;
-    }
-    if (pdev->OneByteIdentityH != NULL)
-	return 0;
-    code = pdf_begin_data_stream(pdev, &writer,
-				 DATA_STREAM_NOT_BINARY |
-			    /* Don't set DATA_STREAM_ENCRYPT since we write to a temporary file.
-			       See comment in pdf_begin_encrypt. */
-				 (pdev->CompressFonts ? 
-				  DATA_STREAM_COMPRESS : 0), gs_no_id);
-    if (code < 0)
-	return code;
-    pdev->OneByteIdentityH = writer.pres;
-    pcd = (cos_dict_t *)writer.pres->object;
-    code = cos_dict_put_c_key_string(pcd, "/CMapName", "/OneByteIdentityH", 17);
-    if (code < 0)
-	return code;
-    sprintf(buf, "%ld 0 R", pdev->IdentityCIDSystemInfo_id);
-    code = cos_dict_put_c_key_string(pcd, "/CIDSystemInfo", buf, strlen(buf));
-    if (code < 0)
-	return code;
-    code = cos_dict_put_string_copy(pcd, "/Type", "/CMap");
-    if (code < 0)
-	return code;
-    for (i = 0; OneByteIdentityH[i]; i++) {
-	stream_puts(pdev->strm, OneByteIdentityH[i]);
-	stream_putc(pdev->strm, '\n');
-    }
-    return pdf_end_data(&writer);
-}

Modified: trunk/gs/src/gdevpdtf.h
===================================================================
--- trunk/gs/src/gdevpdtf.h	2006-09-19 18:59:10 UTC (rev 7057)
+++ trunk/gs/src/gdevpdtf.h	2006-09-19 19:40:20 UTC (rev 7058)
@@ -450,11 +450,6 @@
 int pdf_cmap_alloc(gx_device_pdf *pdev, const gs_cmap_t *pcmap,
 		   pdf_resource_t **ppres /* CMap */, int font_index_only);
 
-/* 
- * Write OneByteIdentityH CMap. 
- */
-int pdf_write_OneByteIdentityH(gx_device_pdf *pdev);
-
 /*
  * Add a CID-to-GID mapping to a CIDFontType 2 font resource.
  */

Modified: trunk/gs/src/gdevpdtw.c
===================================================================
--- trunk/gs/src/gdevpdtw.c	2006-09-19 18:59:10 UTC (rev 7057)
+++ trunk/gs/src/gdevpdtw.c	2006-09-19 19:40:20 UTC (rev 7058)
@@ -700,7 +700,17 @@
     return pdf_write_cid_system_info_to_stream(pdev, pdev->strm, pcidsi, object_id);
 }
 
+int
+pdf_write_cid_systemInfo_separate(gx_device_pdf *pdev, const gs_cid_system_info_t *pcidsi, long *id)
+{   
+    int code;
 
+    *id = pdf_begin_separate(pdev);
+    code = pdf_write_cid_system_info(pdev, pcidsi, *id);
+    pdf_end_separate(pdev);
+    return code;
+}
+
 /*
  * Write a CMap resource.  We pass the CMap object as well as the resource,
  * because we write CMaps when they are created.
@@ -767,3 +777,78 @@
 	return code;
     return code;
 }
+
+static const char *OneByteIdentityH[] = {
+    "/CIDInit /ProcSet findresource begin",
+    "12 dict begin",
+    "begincmap",
+    "/CIDSystemInfo 3 dict dup begin",
+      "/Registry (Adobe) def",
+      "/Ordering (Identity) def",
+      "/Supplement 0 def",
+    "end def",
+    "/CMapName /OneByteIdentityH def",
+    "/CMapVersion 1.000 def",
+    "/CMapType 1 def",
+    "/UIDOffset 0 def",
+    "/XUID [1 10 25404 9999] def",
+    "/WMode 0 def",
+    "1 begincodespacerange",
+    "<00> <FF>",
+    "endcodespacerange",
+    "1 begincidrange",
+    "<00> <FF> 0",
+    "endcidrange",
+    "endcmap",
+    "CMapName currentdict /CMap defineresource pop",
+    "end",
+    "end",
+NULL};
+
+/* 
+ * Write OneByteIdentityH CMap. 
+ */
+int
+pdf_write_OneByteIdentityH(gx_device_pdf *pdev)
+{ 
+    int code, i;
+    pdf_data_writer_t writer;
+    cos_dict_t *pcd;
+    char buf[200];
+    static const gs_cid_system_info_t cidsi = {{(const byte *)"Adobe", 5}, {(const byte *)"Identity", 8}, 0};
+    long id;
+
+    if (pdev->IdentityCIDSystemInfo_id == gs_no_id) {
+	code = pdf_write_cid_systemInfo_separate(pdev, &cidsi, &id);
+	if (code < 0)
+	    return code;
+	pdev->IdentityCIDSystemInfo_id = id;
+    }
+    if (pdev->OneByteIdentityH != NULL)
+	return 0;
+    code = pdf_begin_data_stream(pdev, &writer,
+				 DATA_STREAM_NOT_BINARY |
+			    /* Don't set DATA_STREAM_ENCRYPT since we write to a temporary file.
+			       See comment in pdf_begin_encrypt. */
+				 (pdev->CompressFonts ? 
+				  DATA_STREAM_COMPRESS : 0), gs_no_id);
+    if (code < 0)
+	return code;
+    pdev->OneByteIdentityH = writer.pres;
+    pcd = (cos_dict_t *)writer.pres->object;
+    code = cos_dict_put_string_copy(pcd, "/CMapName", "/OneByteIdentityH");
+    if (code < 0)
+	return code;
+    sprintf(buf, "%ld 0 R", pdev->IdentityCIDSystemInfo_id);
+    code = cos_dict_put_string_copy(pcd, "/CIDSystemInfo", buf);
+    if (code < 0)
+	return code;
+    code = cos_dict_put_string_copy(pcd, "/Type", "/CMap");
+    if (code < 0)
+	return code;
+    for (i = 0; OneByteIdentityH[i]; i++) {
+	stream_puts(pdev->strm, OneByteIdentityH[i]);
+	stream_putc(pdev->strm, '\n');
+    }
+    return pdf_end_data(&writer);
+}

Modified: trunk/gs/src/gdevpdtw.h
===================================================================
--- trunk/gs/src/gdevpdtw.h	2006-09-19 18:59:10 UTC (rev 7057)
+++ trunk/gs/src/gdevpdtw.h	2006-09-19 19:40:20 UTC (rev 7058)
@@ -59,6 +59,12 @@
 int pdf_write_cid_system_info(gx_device_pdf *pdev,
 			      const gs_cid_system_info_t *pcidsi, gs_id object_id);
 
+/* Write CIDSystemInfo */
+int pdf_write_cid_systemInfo_separate(gx_device_pdf *pdev, 
+		              const gs_cid_system_info_t *pcidsi, long *id);
+
+
+
 /*
  * Write a CMap resource.  We pass the CMap object as well as the resource,
  * because we write CMaps when they are created.
@@ -66,4 +72,9 @@
 int pdf_write_cmap(gx_device_pdf *pdev, const gs_cmap_t *pcmap,
 		   pdf_resource_t **ppres, int font_index_only);
 
+/* 
+ * Write OneByteIdentityH CMap. 
+ */
+int pdf_write_OneByteIdentityH(gx_device_pdf *pdev);
+
 #endif /* gdevpdtw_INCLUDED */



More information about the gs-cvs mailing list