summaryrefslogtreecommitdiff
path: root/pdf
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2021-11-02 08:11:51 +0000
committerChris Liddell <chris.liddell@artifex.com>2021-11-02 15:49:34 +0000
commitf3d80c26c4916ba112bf1365d2d03e6473c542a9 (patch)
tree07393b2b6de974741fcbf348873fb1eb9abd341c /pdf
parent682f68ddae2ce941121217cbf417841a8bc407a9 (diff)
downloadghostpdl-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.c3
-rw-r--r--pdf/pdf_font11.c3
-rw-r--r--pdf/pdf_font1C.c3
-rw-r--r--pdf/pdf_font3.c3
-rw-r--r--pdf/pdf_fontTT.c4
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;