diff options
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-type3.c | 14 | ||||
-rw-r--r-- | source/pdf/pdf-xref.c | 7 |
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); |