[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