[gs-cvs] rev 7054 - trunk/gs/src
leonardo at ghostscript.com
leonardo at ghostscript.com
Tue Sep 19 01:20:46 PDT 2006
Author: leonardo
Date: 2006-09-19 01:20:45 -0700 (Tue, 19 Sep 2006)
New Revision: 7054
Modified:
trunk/gs/src/devs.mak
trunk/gs/src/gdevpdfu.c
trunk/gs/src/gdevpdtd.c
trunk/gs/src/gdevpdtd.h
trunk/gs/src/gdevpdtf.c
trunk/gs/src/gdevpdtf.h
trunk/gs/src/gdevpdtw.c
Log:
Fix (pdfwrite) : Generalize pdf_finish_font_descriptors (continued).
DETAILS :
This is a preparation for the bug 688790
"pdfwrite : The PDF/A conversion needs to to re-encode texts".
The last patch appears incomplete.
This adds the pdf_resource_type_t parameter to pdf_finish_resources,
and defines pdf_convert_truetype_font_descriptor for future implementation.
This change is algorithmically equivalent.
EXPECTED DIFFERENCES :
None.
Modified: trunk/gs/src/devs.mak
===================================================================
--- trunk/gs/src/devs.mak 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/devs.mak 2006-09-19 08:20:45 UTC (rev 7054)
@@ -1012,7 +1012,7 @@
$(GLOBJ)gdevpdtd.$(OBJ) : $(GLSRC)gdevpdtd.c $(math__h) $(memory__h) $(gx_h)\
$(gserrors_h) $(gsrect_h)\
$(gdevpdfo_h) $(gdevpdfx_h)\
- $(gdevpdtb_h) $(gdevpdtd_h)
+ $(gdevpdtb_h) $(gdevpdtd_h) $(gdevpdtf_h)
$(GLCC) $(GLO_)gdevpdtd.$(OBJ) $(C_) $(GLSRC)gdevpdtd.c
$(GLOBJ)gdevpdtf.$(OBJ) : $(GLSRC)gdevpdtf.c $(gx_h) $(memory__h)\
Modified: trunk/gs/src/gdevpdfu.c
===================================================================
--- trunk/gs/src/gdevpdfu.c 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdfu.c 2006-09-19 08:20:45 UTC (rev 7054)
@@ -1143,7 +1143,8 @@
if (code >= 0)
code = code1;
}
- code1 = pdf_finish_resources(pdev, pdf_release_FontDescriptor_components);
+ code1 = pdf_finish_resources(pdev, resourceFontDescriptor,
+ 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 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdtd.c 2006-09-19 08:20:45 UTC (rev 7054)
@@ -22,6 +22,7 @@
#include "gdevpdfo.h" /* for object->written */
#include "gdevpdtb.h"
#include "gdevpdtd.h"
+#include "gdevpdtf.h"
/* ================ Types and structures ================ */
@@ -677,15 +678,10 @@
}
/*
- * Convert True Type fonts into CID fonts for PDF/A.
+ * Convert True Type font descriptor into CID font descriptor for PDF/A.
*/
int
-pdf_convert_truetype_font(gx_device_pdf *pdev, pdf_resource_t *pres)
+pdf_convert_truetype_font_descriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
{
- if (!pdev->PDFA)
- return 0;
- else {
- /* Reserved for future implementation. */
- return 0;
- }
+ return 0;
}
Modified: trunk/gs/src/gdevpdtd.h
===================================================================
--- trunk/gs/src/gdevpdtd.h 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdtd.h 2006-09-19 08:20:45 UTC (rev 7054)
@@ -130,7 +130,7 @@
int pdf_finish_FontDescriptor(gx_device_pdf *pdev,
pdf_resource_t *pfd);
-int pdf_finish_resources(gx_device_pdf *pdev,
+int pdf_finish_resources(gx_device_pdf *pdev, pdf_resource_type_t type,
int (*finish_proc)(gx_device_pdf *,
pdf_resource_t *));
/*
@@ -149,10 +149,4 @@
*/
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/gdevpdtf.c
===================================================================
--- trunk/gs/src/gdevpdtf.c 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdtf.c 2006-09-19 08:20:45 UTC (rev 7054)
@@ -998,6 +998,26 @@
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 {
+ pdf_font_resource_t *pdfont = (pdf_font_resource_t *) pres;
+
+ if (pdfont->FontType != ft_TrueType)
+ return 0;
+ else {
+ /* Reserved for future implementation. */
+ return 0;
+ }
+ }
+}
+
/* ---------------- CMap resources ---------------- */
/*
Modified: trunk/gs/src/gdevpdtf.h
===================================================================
--- trunk/gs/src/gdevpdtf.h 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdtf.h 2006-09-19 08:20:45 UTC (rev 7054)
@@ -432,6 +432,16 @@
*/
const gs_font_name *pdf_choose_font_name(gs_font *font, bool key_name);
+/*
+ * Convert True Type fonts into CID fonts for PDF/A.
+ */
+int pdf_convert_truetype_font(gx_device_pdf *pdev, pdf_resource_t *pres);
+
+/*
+ * Convert True Type font descriptor into CID font descriptor for PDF/A.
+ */
+int pdf_convert_truetype_font_descriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd);
+
/* ---------------- CMap resources ---------------- */
/*
Modified: trunk/gs/src/gdevpdtw.c
===================================================================
--- trunk/gs/src/gdevpdtw.c 2006-09-19 07:12:54 UTC (rev 7053)
+++ trunk/gs/src/gdevpdtw.c 2006-09-19 08:20:45 UTC (rev 7054)
@@ -610,7 +610,7 @@
return 0;
}
int
-pdf_finish_resources(gx_device_pdf *pdev,
+pdf_finish_resources(gx_device_pdf *pdev, pdf_resource_type_t type,
int (*finish_proc)(gx_device_pdf *,
pdf_resource_t *))
{
@@ -618,7 +618,7 @@
pdf_resource_t *pres;
for (j = 0; j < NUM_RESOURCE_CHAINS; ++j)
- for (pres = pdev->resources[resourceFontDescriptor].chains[j];
+ for (pres = pdev->resources[type].chains[j];
pres != 0; pres = pres->next
) {
int code = finish_proc(pdev, pres);
@@ -642,11 +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_resources(pdev, pdf_convert_truetype_font)) < 0 ||
- (code = pdf_finish_resources(pdev, pdf_finish_FontDescriptor)) < 0 ||
+ (code = pdf_finish_resources(pdev, resourceFont, pdf_convert_truetype_font)) < 0 ||
+ (code = pdf_finish_resources(pdev, resourceFontDescriptor, 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_resources(pdev, pdf_write_FontDescriptor)) < 0
+ (code = pdf_finish_resources(pdev, resourceFontDescriptor, pdf_write_FontDescriptor)) < 0
)
return code;
More information about the gs-cvs
mailing list