poppler/GfxFont.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
New commits: commit 333b04802a3a9dbdb0d0e0caec553fd1037c4c92 Author: Khaled Hosny <[email protected]> Date: Mon May 8 18:35:10 2023 +0300 Try harder to get Type 3 font name There is no BaseFont in Type 3 fonts, so we first try fontDescriptor’s FontName, but fontDescriptor is optional so we then try the Name key. Fixes #1396 diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc index 954fb8b3..20e02bb0 100644 --- a/poppler/GfxFont.cc +++ b/poppler/GfxFont.cc @@ -209,6 +209,25 @@ std::unique_ptr<GfxFont> GfxFont::makeFont(XRef *xref, const char *tagA, Ref idA name = obj1.getName(); } + // There is no BaseFont in Type 3 fonts, try fontDescriptor.FontName + if (!name) { + Object fontDesc = fontDict->lookup("FontDescriptor"); + if (fontDesc.isDict()) { + Object obj2 = fontDesc.dictLookup("FontName"); + if (obj2.isName()) { + name = obj2.getName(); + } + } + } + + // As a last resort try the Name key + if (!name) { + Object obj2 = fontDict->lookup("Name"); + if (obj2.isName()) { + name = obj2.getName(); + } + } + // get embedded font ID and font type typeA = getFontType(xref, fontDict, &embFontIDA);
