summaryrefslogtreecommitdiff
path: root/source/pdf
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf')
-rw-r--r--source/pdf/pdf-type3.c14
-rw-r--r--source/pdf/pdf-xref.c7
2 files changed, 21 insertions, 0 deletions
diff --git a/source/pdf/pdf-type3.c b/source/pdf/pdf-type3.c
index d136b6f5..d4c9b31a 100644
--- a/source/pdf/pdf-type3.c
+++ b/source/pdf/pdf-type3.c
@@ -31,6 +31,17 @@ pdf_load_type3_font(pdf_document *doc, pdf_obj *rdb, pdf_obj *dict)
fz_var(fontdesc);
+ /* Make a new type3 font entry in the document */
+ if (doc->num_type3_fonts == doc->max_type3_fonts)
+ {
+ int new_max = doc->max_type3_fonts * 2;
+
+ if (new_max == 0)
+ new_max = 4;
+ doc->type3_fonts = fz_resize_array(doc->ctx, doc->type3_fonts, new_max, sizeof(*doc->type3_fonts));
+ doc->max_type3_fonts = new_max;
+ }
+
fz_try(ctx)
{
obj = pdf_dict_gets(dict, "Name");
@@ -163,6 +174,9 @@ pdf_load_type3_font(pdf_document *doc, pdf_obj *rdb, pdf_obj *dict)
pdf_drop_font(ctx, fontdesc);
fz_rethrow_message(ctx, "cannot load type3 font (%d %d R)", pdf_to_num(dict), pdf_to_gen(dict));
}
+
+ doc->type3_fonts[doc->num_type3_fonts++] = fz_keep_font(ctx, fontdesc->font);
+
return fontdesc;
}
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
index 970a83aa..ee9f8ea1 100644
--- a/source/pdf/pdf-xref.c
+++ b/source/pdf/pdf-xref.c
@@ -1102,6 +1102,13 @@ pdf_close_document(pdf_document *doc)
if (doc->crypt)
pdf_free_crypt(ctx, doc->crypt);
+ for (i=0; i < doc->num_type3_fonts; i++)
+ {
+ fz_decouple_type3_font(ctx, doc->type3_fonts[i], (void *)doc);
+ fz_drop_font(ctx, doc->type3_fonts[i]);
+ }
+ fz_free(ctx, doc->type3_fonts);
+
pdf_free_ocg(ctx, doc->ocg);
fz_empty_store(ctx);