diff options
author | Chris Liddell <chris.liddell@artifex.com> | 2021-11-02 08:11:51 +0000 |
---|---|---|
committer | Chris Liddell <chris.liddell@artifex.com> | 2021-11-02 15:49:34 +0000 |
commit | f3d80c26c4916ba112bf1365d2d03e6473c542a9 (patch) | |
tree | 07393b2b6de974741fcbf348873fb1eb9abd341c /pdf | |
parent | 682f68ddae2ce941121217cbf417841a8bc407a9 (diff) | |
download | ghostpdl-f3d80c26c4916ba112bf1365d2d03e6473c542a9.tar.gz |
Bug 704678: Make sure to store obj/generation number in font objects
For Truetype fonts, the lines that copied the object and generation numbers from
the font dictionary object to the new font object had been dropped, thus meaning
we'd no longer cache the font objects, and reuse them.
Reinstate that. And make sure both values are stored for all fonts. And, again
for all fonts, also store the indirect num/generation values - generally not
much use (for these objects), but in the interest of consistency....
Diffstat (limited to 'pdf')
-rw-r--r-- | pdf/pdf_font1.c | 3 | ||||
-rw-r--r-- | pdf/pdf_font11.c | 3 | ||||
-rw-r--r-- | pdf/pdf_font1C.c | 3 | ||||
-rw-r--r-- | pdf/pdf_font3.c | 3 | ||||
-rw-r--r-- | pdf/pdf_fontTT.c | 4 |
5 files changed, 16 insertions, 0 deletions
diff --git a/pdf/pdf_font1.c b/pdf/pdf_font1.c index da8f3dee6..fbed49faa 100644 --- a/pdf/pdf_font1.c +++ b/pdf/pdf_font1.c @@ -556,6 +556,9 @@ pdfi_read_type1_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *stream_dic t1f->object_num = font_dict->object_num; t1f->generation_num = font_dict->generation_num; + t1f->indirect_num = font_dict->indirect_num; + t1f->indirect_gen = font_dict->indirect_gen; + t1f->PDF_font = font_dict; pdfi_countup(font_dict); t1f->BaseFont = basefont; diff --git a/pdf/pdf_font11.c b/pdf/pdf_font11.c index ebe0cd215..6190b9f06 100644 --- a/pdf/pdf_font11.c +++ b/pdf/pdf_font11.c @@ -306,6 +306,9 @@ int pdfi_read_cidtype2_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *str pdfi_countup(font_dict); font->object_num = font_dict->object_num; font->generation_num = font_dict->generation_num; + font->indirect_num = font_dict->indirect_num; + font->indirect_gen = font_dict->indirect_gen; + font->FontDescriptor = (pdf_dict *)fontdesc; fontdesc = NULL; diff --git a/pdf/pdf_font1C.c b/pdf/pdf_font1C.c index 20ae4a030..474a7f123 100644 --- a/pdf/pdf_font1C.c +++ b/pdf/pdf_font1C.c @@ -2387,6 +2387,7 @@ pdfi_read_cff_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *stream_dict, cffcid->generation_num = font_dict->generation_num; cffcid->indirect_num = font_dict->indirect_num; cffcid->indirect_gen = font_dict->indirect_gen; + cffcid->PDF_font = font_dict; pdfi_countup(font_dict); cffcid->CharStrings = cffpriv.pdfcffpriv.CharStrings; @@ -2470,6 +2471,8 @@ pdfi_read_cff_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *stream_dict, cfffont->object_num = font_dict->object_num; cfffont->generation_num = font_dict->generation_num; + cfffont->indirect_num = font_dict->indirect_num; + cfffont->indirect_gen = font_dict->indirect_gen; (void)pdfi_dict_knownget_type(ctx, font_dict, "BaseFont", PDF_NAME, &basefont); cfffont->BaseFont = basefont; diff --git a/pdf/pdf_font3.c b/pdf/pdf_font3.c index 155d8be53..4e377e34e 100644 --- a/pdf/pdf_font3.c +++ b/pdf/pdf_font3.c @@ -238,6 +238,9 @@ int pdfi_read_type3_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *stream return code; font->object_num = font_dict->object_num; + font->generation_num = font_dict->generation_num; + font->indirect_num = font_dict->indirect_num; + font->indirect_gen = font_dict->indirect_gen; code = pdfi_dict_get_type(ctx, font_dict, "FontBBox", PDF_ARRAY, &obj); if (code < 0) diff --git a/pdf/pdf_fontTT.c b/pdf/pdf_fontTT.c index d898011fb..3d0717ff4 100644 --- a/pdf/pdf_fontTT.c +++ b/pdf/pdf_fontTT.c @@ -383,6 +383,10 @@ int pdfi_read_truetype_font(pdf_context *ctx, pdf_dict *font_dict, pdf_dict *str code = gs_note_error(gs_error_invalidfont); goto error; } + font->object_num = font_dict->object_num; + font->generation_num = font_dict->generation_num; + font->indirect_num = font_dict->indirect_num; + font->indirect_gen = font_dict->indirect_gen; font->FontDescriptor = (pdf_dict *)fontdesc; fontdesc = NULL; |