[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