poppler/GfxFont.cc | 27 ++++++++++----------------- poppler/GfxFont.h | 11 +++++------ 2 files changed, 15 insertions(+), 23 deletions(-)
New commits: commit 3ecb7663c5f787c4ef877d8e0884036e4fb236f2 Author: Oliver Sander <[email protected]> Date: Tue Mar 8 10:02:42 2022 +0100 Store GfxFontDict::fonts in a std::vector diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc index f0c4b28c..62b7429d 100644 --- a/poppler/GfxFont.cc +++ b/poppler/GfxFont.cc @@ -2353,12 +2353,10 @@ double GfxCIDFont::getWidth(char *s, int len) const GfxFontDict::GfxFontDict(XRef *xref, Ref *fontDictRef, Dict *fontDict) { - int i; Ref r; - numFonts = fontDict->getLength(); - fonts = (GfxFont **)gmallocn(numFonts, sizeof(GfxFont *)); - for (i = 0; i < numFonts; ++i) { + fonts.resize(fontDict->getLength()); + for (std::size_t i = 0; i < fonts.size(); ++i) { const Object &obj1 = fontDict->getValNF(i); Object obj2 = obj1.fetch(xref); if (obj2.isDict()) { @@ -2393,23 +2391,18 @@ GfxFontDict::GfxFontDict(XRef *xref, Ref *fontDictRef, Dict *fontDict) GfxFontDict::~GfxFontDict() { - int i; - - for (i = 0; i < numFonts; ++i) { - if (fonts[i]) { - fonts[i]->decRefCnt(); + for (auto &font : fonts) { + if (font) { + font->decRefCnt(); } } - gfree(fonts); } GfxFont *GfxFontDict::lookup(const char *tag) const { - int i; - - for (i = 0; i < numFonts; ++i) { - if (fonts[i] && fonts[i]->matches(tag)) { - return fonts[i]; + for (const auto &font : fonts) { + if (font && font->matches(tag)) { + return font; } } return nullptr; diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h index f824e13d..c88de3c6 100644 --- a/poppler/GfxFont.h +++ b/poppler/GfxFont.h @@ -464,15 +464,14 @@ public: GfxFont *lookup(const char *tag) const; // Iterative access. - int getNumFonts() const { return numFonts; } + int getNumFonts() const { return fonts.size(); } GfxFont *getFont(int i) const { return fonts[i]; } private: int hashFontObject(Object *obj); void hashFontObject1(const Object *obj, FNVHash *h); - GfxFont **fonts; // list of fonts - int numFonts; // number of fonts + std::vector<GfxFont *> fonts; }; #endif commit 34ecd262997ebe6a9eb3b1abdf38d76428a23adf Author: Oliver Sander <[email protected]> Date: Tue Mar 8 09:51:03 2022 +0100 Make method getWMode const diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc index bd30e892..f0c4b28c 100644 --- a/poppler/GfxFont.cc +++ b/poppler/GfxFont.cc @@ -35,7 +35,7 @@ // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <[email protected]>. Work sponsored by the LiMux project of the city of Munich // Copyright (C) 2018 Adam Reichold <[email protected]> // Copyright (C) 2019 LE GARREC Vincent <[email protected]> -// Copyright (C) 2021 Oliver Sander <[email protected]> +// Copyright (C) 2021, 2022 Oliver Sander <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -2061,7 +2061,7 @@ int GfxCIDFont::getNextChar(const char *s, int len, CharCode *code, Unicode cons return n; } -int GfxCIDFont::getWMode() +int GfxCIDFont::getWMode() const { return cMap ? cMap->getWMode() : 0; } diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h index 6cb3514b..f824e13d 100644 --- a/poppler/GfxFont.h +++ b/poppler/GfxFont.h @@ -24,7 +24,7 @@ // Copyright (C) 2015, 2018 Jason Crain <[email protected]> // Copyright (C) 2015 Thomas Freitag <[email protected]> // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <[email protected]>. Work sponsored by the LiMux project of the city of Munich -// Copyright (C) 2021 Oliver Sander <[email protected]> +// Copyright (C) 2021, 2022 Oliver Sander <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -274,7 +274,7 @@ public: double getDescent() const { return descent; } // Return the writing mode (0=horizontal, 1=vertical). - virtual int getWMode() { return 0; } + virtual int getWMode() const { return 0; } // Locate the font file for this font. If <ps> is not null, includes PS // printer-resident fonts. Returns std::optional without a value on failure. @@ -410,7 +410,7 @@ public: int getNextChar(const char *s, int len, CharCode *code, Unicode const **u, int *uLen, double *dx, double *dy, double *ox, double *oy) const override; // Return the writing mode (0=horizontal, 1=vertical). - int getWMode() override; + int getWMode() const override; // Return the Unicode map. const CharCodeToUnicode *getToUnicode() const override;
