diff options
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-font.c | 4 | ||||
-rw-r--r-- | source/pdf/pdf-interpret.c | 8 | ||||
-rw-r--r-- | source/pdf/pdf-op-run.c | 17 | ||||
-rw-r--r-- | source/pdf/pdf-run.c | 11 | ||||
-rw-r--r-- | source/pdf/pdf-type3.c | 8 |
5 files changed, 18 insertions, 30 deletions
diff --git a/source/pdf/pdf-font.c b/source/pdf/pdf-font.c index 001f999b..3dae9884 100644 --- a/source/pdf/pdf-font.c +++ b/source/pdf/pdf-font.c @@ -1379,7 +1379,7 @@ pdf_make_width_table(fz_context *ctx, pdf_font_desc *fontdesc) } pdf_font_desc * -pdf_load_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *dict, int nested_depth) +pdf_load_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *dict) { pdf_obj *subtype; pdf_obj *dfonts; @@ -1437,7 +1437,7 @@ pdf_load_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *dict, i /* Load CharProcs */ if (type3) - pdf_load_type3_glyphs(ctx, doc, fontdesc, nested_depth); + pdf_load_type3_glyphs(ctx, doc, fontdesc); pdf_store_item(ctx, dict, fontdesc, fontdesc->size); } diff --git a/source/pdf/pdf-interpret.c b/source/pdf/pdf-interpret.c index 55416b90..e4e34ee9 100644 --- a/source/pdf/pdf-interpret.c +++ b/source/pdf/pdf-interpret.c @@ -64,13 +64,13 @@ pdf_clear_stack(fz_context *ctx, pdf_csi *csi) } static pdf_font_desc * -load_font_or_hail_mary(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *font, int depth, fz_cookie *cookie) +load_font_or_hail_mary(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *font, fz_cookie *cookie) { pdf_font_desc *desc; fz_try(ctx) { - desc = pdf_load_font(ctx, doc, rdb, font, depth); + desc = pdf_load_font(ctx, doc, rdb, font); } fz_catch(ctx) { @@ -192,7 +192,7 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob { pdf_obj *font_ref = pdf_array_get(ctx, obj, 0); pdf_obj *font_size = pdf_array_get(ctx, obj, 1); - pdf_font_desc *font = load_font_or_hail_mary(ctx, csi->doc, csi->rdb, font_ref, 0, csi->cookie); + pdf_font_desc *font = load_font_or_hail_mary(ctx, csi->doc, csi->rdb, font_ref, csi->cookie); fz_try(ctx) proc->op_Tf(ctx, proc, "ExtGState", font, pdf_to_real(ctx, font_size)); fz_always(ctx) @@ -657,7 +657,7 @@ pdf_process_keyword(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, fz_strea fontobj = pdf_dict_gets(ctx, fontres, csi->name); if (!fontobj) fz_throw(ctx, FZ_ERROR_SYNTAX, "cannot find Font resource '%s'", csi->name); - font = load_font_or_hail_mary(ctx, csi->doc, csi->rdb, fontobj, 0, csi->cookie); + font = load_font_or_hail_mary(ctx, csi->doc, csi->rdb, fontobj, csi->cookie); fz_try(ctx) proc->op_Tf(ctx, proc, csi->name, font, s[0]); fz_always(ctx) diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c index 041a617a..aa7bc985 100644 --- a/source/pdf/pdf-op-run.c +++ b/source/pdf/pdf-op-run.c @@ -72,8 +72,6 @@ struct pdf_run_processor_s fz_default_colorspaces *default_cs; - int nested_depth; - /* path object state */ fz_path *path; int clip; @@ -903,9 +901,8 @@ pdf_show_char(fz_context *ctx, pdf_run_processor *pr, int cid) gid = pdf_tos_make_trm(ctx, &pr->tos, &gstate->text, fontdesc, cid, &trm); - /* If we are a type3 font within a type 3 font, or are otherwise - * uncachable, then render direct. */ - render_direct = (!fz_font_ft_face(ctx, fontdesc->font) && pr->nested_depth > 0) || !fz_glyph_cacheable(ctx, fontdesc->font, gid); + /* If we are uncachable, then render direct. */ + render_direct = !fz_glyph_cacheable(ctx, fontdesc->font, gid); /* flush buffered text if rendermode has changed */ if (!pr->tos.text || gstate->text.render != pr->tos.text_mode || render_direct) @@ -920,7 +917,7 @@ pdf_show_char(fz_context *ctx, pdf_run_processor *pr, int cid) * type3 glyphs that seem to inherit current graphics * attributes, or type 3 glyphs within type3 glyphs). */ fz_matrix composed = fz_concat(trm, gstate->ctm); - fz_render_t3_glyph_direct(ctx, pr->dev, fontdesc->font, gid, composed, gstate, pr->nested_depth, pr->default_cs); + fz_render_t3_glyph_direct(ctx, pr->dev, fontdesc->font, gid, composed, gstate, pr->default_cs); /* Render text invisibly so that it can still be extracted. */ pr->tos.text_mode = 3; } @@ -1831,16 +1828,12 @@ static void pdf_run_dquote(fz_context *ctx, pdf_processor *proc, float aw, float static void pdf_run_d0(fz_context *ctx, pdf_processor *proc, float wx, float wy) { pdf_run_processor *pr = (pdf_run_processor *)proc; - if (pr->nested_depth > 1) - return; pr->dev->flags |= FZ_DEVFLAG_COLOR; } static void pdf_run_d1(fz_context *ctx, pdf_processor *proc, float wx, float wy, float llx, float lly, float urx, float ury) { pdf_run_processor *pr = (pdf_run_processor *)proc; - if (pr->nested_depth > 1) - return; pr->dev->flags |= FZ_DEVFLAG_MASK | FZ_DEVFLAG_BBOX_DEFINED; pr->dev->flags &= ~(FZ_DEVFLAG_FILLCOLOR_UNDEFINED | FZ_DEVFLAG_STROKECOLOR_UNDEFINED | @@ -2081,7 +2074,7 @@ pdf_drop_run_processor(fz_context *ctx, pdf_processor *proc) } pdf_processor * -pdf_new_run_processor(fz_context *ctx, fz_device *dev, fz_matrix ctm, const char *usage, pdf_gstate *gstate, int nested, fz_default_colorspaces *default_cs) +pdf_new_run_processor(fz_context *ctx, fz_device *dev, fz_matrix ctm, const char *usage, pdf_gstate *gstate, fz_default_colorspaces *default_cs) { pdf_run_processor *proc = pdf_new_processor(ctx, sizeof *proc); { @@ -2215,8 +2208,6 @@ pdf_new_run_processor(fz_context *ctx, fz_device *dev, fz_matrix ctm, const char proc->default_cs = fz_keep_default_colorspaces(ctx, default_cs); - proc->nested_depth = nested; - proc->path = NULL; proc->clip = 0; proc->clip_even_odd = 0; diff --git a/source/pdf/pdf-run.c b/source/pdf/pdf-run.c index c9e56622..4d607cc7 100644 --- a/source/pdf/pdf-run.c +++ b/source/pdf/pdf-run.c @@ -33,7 +33,7 @@ pdf_run_annot_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf fz_try(ctx) { - proc = pdf_new_run_processor(ctx, dev, ctm, usage, NULL, 0, default_cs); + proc = pdf_new_run_processor(ctx, dev, ctm, usage, NULL, default_cs); pdf_process_annot(ctx, proc, doc, page, annot, cookie); pdf_close_processor(ctx, proc); } @@ -96,7 +96,7 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p colorspace = NULL; } - proc = pdf_new_run_processor(ctx, dev, ctm, usage, NULL, 0, default_cs); + proc = pdf_new_run_processor(ctx, dev, ctm, usage, NULL, default_cs); pdf_process_contents(ctx, proc, doc, resources, contents, cookie); pdf_close_processor(ctx, proc); } @@ -227,14 +227,11 @@ pdf_run_page(fz_context *ctx, pdf_page *page, fz_device *dev, fz_matrix ctm, fz_ } void -pdf_run_glyph(fz_context *ctx, pdf_document *doc, pdf_obj *resources, fz_buffer *contents, fz_device *dev, fz_matrix ctm, void *gstate, int nested_depth, fz_default_colorspaces *default_cs) +pdf_run_glyph(fz_context *ctx, pdf_document *doc, pdf_obj *resources, fz_buffer *contents, fz_device *dev, fz_matrix ctm, void *gstate, fz_default_colorspaces *default_cs) { pdf_processor *proc; - if (nested_depth > 10) - fz_throw(ctx, FZ_ERROR_GENERIC, "Too many nestings of Type3 glyphs"); - - proc = pdf_new_run_processor(ctx, dev, ctm, "View", gstate, nested_depth+1, default_cs); + proc = pdf_new_run_processor(ctx, dev, ctm, "View", gstate, default_cs); fz_try(ctx) { pdf_process_glyph(ctx, proc, doc, resources, contents); diff --git a/source/pdf/pdf-type3.c b/source/pdf/pdf-type3.c index d94cfb5b..27906c58 100644 --- a/source/pdf/pdf-type3.c +++ b/source/pdf/pdf-type3.c @@ -4,9 +4,9 @@ #include "../fitz/font-imp.h" static void -pdf_run_glyph_func(fz_context *ctx, void *doc, void *rdb, fz_buffer *contents, fz_device *dev, fz_matrix ctm, void *gstate, int nested_depth, fz_default_colorspaces *default_cs) +pdf_run_glyph_func(fz_context *ctx, void *doc, void *rdb, fz_buffer *contents, fz_device *dev, fz_matrix ctm, void *gstate, fz_default_colorspaces *default_cs) { - pdf_run_glyph(ctx, doc, (pdf_obj *)rdb, contents, dev, ctm, gstate, nested_depth, default_cs); + pdf_run_glyph(ctx, doc, (pdf_obj *)rdb, contents, dev, ctm, gstate, default_cs); } static void @@ -190,7 +190,7 @@ pdf_load_type3_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *d return fontdesc; } -void pdf_load_type3_glyphs(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, int nested_depth) +void pdf_load_type3_glyphs(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc) { int i; @@ -200,7 +200,7 @@ void pdf_load_type3_glyphs(fz_context *ctx, pdf_document *doc, pdf_font_desc *fo { if (fontdesc->font->t3procs[i]) { - fz_prepare_t3_glyph(ctx, fontdesc->font, i, nested_depth); + fz_prepare_t3_glyph(ctx, fontdesc->font, i); fontdesc->size += 0; // TODO: display list size calculation } } |