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

leonardo at ghostscript.com leonardo at ghostscript.com
Tue Sep 19 00:12:55 PDT 2006


Author: leonardo
Date: 2006-09-19 00:12:54 -0700 (Tue, 19 Sep 2006)
New Revision: 7053

Modified:
   trunk/gs/src/gdevpdfu.c
   trunk/gs/src/gdevpdtd.c
   trunk/gs/src/gdevpdtd.h
   trunk/gs/src/gdevpdtw.c
Log:
Fix (pdfwrite) : Generalize pdf_finish_font_descriptors.

DETAILS :

This is a preparation for the bug 688790  
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
It generalizes pdf_finish_font_descriptors to
pdf_finish_resources. Also define a stub for
pdf_convert_truetype_font.

This change is algorithmically equivalent.

EXPECTED DIFFERENCES :

None.


Modified: trunk/gs/src/gdevpdfu.c
===================================================================
--- trunk/gs/src/gdevpdfu.c	2006-09-19 03:55:34 UTC (rev 7052)
+++ trunk/gs/src/gdevpdfu.c	2006-09-19 07:12:54 UTC (rev 7053)
@@ -1143,7 +1143,7 @@
 	if (code >= 0)
 	    code = code1;
     }
-    code1 = pdf_finish_font_descriptors(pdev, pdf_release_FontDescriptor_components);
+    code1 = pdf_finish_resources(pdev, pdf_release_FontDescriptor_components);
     if (code >= 0)
 	code = code1;
     for (i = 0; i < NUM_RESOURCE_TYPES; ++i) {

Modified: trunk/gs/src/gdevpdtd.c
===================================================================
--- trunk/gs/src/gdevpdtd.c	2006-09-19 03:55:34 UTC (rev 7052)
+++ trunk/gs/src/gdevpdtd.c	2006-09-19 07:12:54 UTC (rev 7053)
@@ -547,11 +547,11 @@
  * writing the associated embedded font if any.
  */
 int
-pdf_finish_FontDescriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
+pdf_finish_FontDescriptor(gx_device_pdf *pdev, pdf_resource_t *pres)
 {
+    pdf_font_descriptor_t *pfd = (pdf_font_descriptor_t *)pres;
     int code = 0;
     cos_dict_t *pcd = 0;
-
     if (pfd->common.object->id == -1)
 	return 0;
     if (!pfd->common.object->written &&
@@ -568,8 +568,9 @@
 
 /* Write a FontDescriptor. */
 int
-pdf_write_FontDescriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
+pdf_write_FontDescriptor(gx_device_pdf *pdev, pdf_resource_t *pres)
 {
+    pdf_font_descriptor_t *pfd = (pdf_font_descriptor_t *)pres;
     font_type ftype = pfd->FontType;
     long cidset_id = 0;
     int code = 0;
@@ -654,8 +655,10 @@
  * Release a FontDescriptor components.
  */
 int
-pdf_release_FontDescriptor_components(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
+pdf_release_FontDescriptor_components(gx_device_pdf *pdev, pdf_resource_t *pres)
 {
+    pdf_font_descriptor_t *pfd = (pdf_font_descriptor_t *) pres;
+
     gs_free_object(pdev->pdf_memory, pfd->base_font, "pdf_release_FontDescriptor_components");
     pfd->base_font = NULL;
     /* fixme: underimplemented. */
@@ -672,3 +675,17 @@
 	pdf_reserve_object_id(pdev, (pdf_resource_t *)&pfd->common, 0);
     return 0;
 }
+
+/*
+ * Convert True Type fonts into CID fonts for PDF/A.
+ */
+int 
+pdf_convert_truetype_font(gx_device_pdf *pdev, pdf_resource_t *pres)
+{
+    if (!pdev->PDFA)
+	return 0;
+    else {
+	/* Reserved for future implementation. */
+	return 0;
+    }
+}

Modified: trunk/gs/src/gdevpdtd.h
===================================================================
--- trunk/gs/src/gdevpdtd.h	2006-09-19 03:55:34 UTC (rev 7052)
+++ trunk/gs/src/gdevpdtd.h	2006-09-19 07:12:54 UTC (rev 7053)
@@ -128,26 +128,31 @@
  * writing the associated embedded font if any.
  */
 int pdf_finish_FontDescriptor(gx_device_pdf *pdev,
-			      pdf_font_descriptor_t *pfd);
+			      pdf_resource_t *pfd);
 
-int pdf_finish_font_descriptors(gx_device_pdf *pdev,
+int pdf_finish_resources(gx_device_pdf *pdev,
 			int (*finish_proc)(gx_device_pdf *,
-					   pdf_font_descriptor_t *));
+					   pdf_resource_t *));
 /*
  * Write a FontDescriptor.
  */
 int pdf_write_FontDescriptor(gx_device_pdf *pdev,
-			     pdf_font_descriptor_t *pfd);
+			     pdf_resource_t *pfd);
 
 /*
  * Release a FontDescriptor components.
  */
-int pdf_release_FontDescriptor_components(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd);
+int pdf_release_FontDescriptor_components(gx_device_pdf *pdev, pdf_resource_t *pfd);
 
 /*
  * Mark a FontDescriptor used in a text.
  */
 int pdf_mark_font_descriptor_used(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd);
 
+/*
+ * Convert True Type fonts into CID fonts for PDF/A.
+ */
+int pdf_convert_truetype_font(gx_device_pdf *pdev,
+			      pdf_resource_t *pres);
 
 #endif /* gdevpdtd_INCLUDED */

Modified: trunk/gs/src/gdevpdtw.c
===================================================================
--- trunk/gs/src/gdevpdtw.c	2006-09-19 03:55:34 UTC (rev 7052)
+++ trunk/gs/src/gdevpdtw.c	2006-09-19 07:12:54 UTC (rev 7053)
@@ -610,9 +610,9 @@
     return 0;
 }
 int
-pdf_finish_font_descriptors(gx_device_pdf *pdev,
+pdf_finish_resources(gx_device_pdf *pdev,
 			int (*finish_proc)(gx_device_pdf *,
-					   pdf_font_descriptor_t *))
+					   pdf_resource_t *))
 {
     int j;
     pdf_resource_t *pres;
@@ -621,7 +621,7 @@
 	for (pres = pdev->resources[resourceFontDescriptor].chains[j];
 	     pres != 0; pres = pres->next
 	     ) {
-	    int code = finish_proc(pdev, (pdf_font_descriptor_t *)pres);
+	    int code = finish_proc(pdev, pres);
 
 	    if (code < 0)
 		return code;
@@ -642,10 +642,11 @@
     pdf_clean_standard_fonts(pdev);
     if ((code = pdf_free_font_cache(pdev)) < 0 ||
 	(code = pdf_write_resource_objects(pdev, resourceCharProc)) < 0 ||
- 	(code = pdf_finish_font_descriptors(pdev, pdf_finish_FontDescriptor)) < 0 ||
+ 	(code = pdf_finish_resources(pdev, pdf_convert_truetype_font)) < 0 ||
+ 	(code = pdf_finish_resources(pdev, pdf_finish_FontDescriptor)) < 0 ||
   	(code = write_font_resources(pdev, &pdev->resources[resourceCIDFont])) < 0 ||
 	(code = write_font_resources(pdev, &pdev->resources[resourceFont])) < 0 ||
-	(code = pdf_finish_font_descriptors(pdev, pdf_write_FontDescriptor)) < 0
+	(code = pdf_finish_resources(pdev, pdf_write_FontDescriptor)) < 0
 	)
 	return code;
 



More information about the gs-cvs mailing list