[poppler] poppler/CairoFontEngine.cc poppler/GfxFont.cc poppler/GfxFont.h poppler/PSOutputDev.cc poppler/SplashOutputDev.cc qt5/src qt6/src
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Mar 30 13:04:28 UTC 2022
poppler/CairoFontEngine.cc | 28 ++++++++++++++--------------
poppler/GfxFont.cc | 16 ++++++++--------
poppler/GfxFont.h | 2 +-
poppler/PSOutputDev.cc | 36 ++++++++++++++++++------------------
poppler/SplashOutputDev.cc | 6 +++---
qt5/src/QPainterOutputDev.cc | 18 +++++++++---------
qt6/src/QPainterOutputDev.cc | 18 +++++++++---------
7 files changed, 62 insertions(+), 62 deletions(-)
New commits:
commit d72c22caf28cbe8cf1e268f8ff741d7e1330df63
Author: Albert Astals Cid <aacid at kde.org>
Date: Sat Mar 26 23:16:51 2022 +0100
Fix regression caused by a6b2442e37cc00534bcdca7c83366a0fa0501157
File regressed is https://bugs.freedesktop.org/attachment.cgi?id=118361
The old code did different things in nullptr compared to empty buffer so we need
to have the same semantics, use an optional for that
diff --git a/poppler/CairoFontEngine.cc b/poppler/CairoFontEngine.cc
index 19beb6ea..0f80a205 100644
--- a/poppler/CairoFontEngine.cc
+++ b/poppler/CairoFontEngine.cc
@@ -281,7 +281,7 @@ CairoFreeTypeFont::~CairoFreeTypeFont() { }
CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Library lib, bool useCIDs)
{
const char *fileNameC;
- std::vector<unsigned char> font_data;
+ std::optional<std::vector<unsigned char>> font_data;
int i, n;
GfxFontType fontType;
std::optional<GfxFontLoc> fontLoc;
@@ -315,7 +315,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
// embedded font
if (fontLoc->locType == gfxFontLocEmbedded) {
font_data = gfxFont->readEmbFontFile(xref);
- if (font_data.empty()) {
+ if (!font_data) {
goto err2;
}
@@ -334,7 +334,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
case fontType1:
case fontType1C:
case fontType1COT:
- if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data), &face, &font_face)) {
+ if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data.value()), &face, &font_face)) {
error(errSyntaxError, -1, "could not create type1 face");
goto err2;
}
@@ -373,8 +373,8 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
}
} else {
std::unique_ptr<FoFiTrueType> ff;
- if (!font_data.empty()) {
- ff = FoFiTrueType::make(font_data.data(), font_data.size());
+ if (font_data) {
+ ff = FoFiTrueType::make(font_data->data(), font_data->size());
} else {
ff = FoFiTrueType::load(fileNameC);
}
@@ -388,8 +388,8 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
case fontTrueType:
case fontTrueTypeOT: {
std::unique_ptr<FoFiTrueType> ff;
- if (!font_data.empty()) {
- ff = FoFiTrueType::make(font_data.data(), font_data.size());
+ if (font_data) {
+ ff = FoFiTrueType::make(font_data->data(), font_data->size());
} else {
ff = FoFiTrueType::load(fileNameC);
}
@@ -402,7 +402,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff.get());
codeToGIDLen = 256;
}
- if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data), &face, &font_face)) {
+ if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data.value()), &face, &font_face)) {
error(errSyntaxError, -1, "could not create truetype face\n");
goto err2;
}
@@ -415,8 +415,8 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
codeToGIDLen = 0;
if (!useCIDs) {
- if (!font_data.empty()) {
- ff1c = FoFiType1C::make(font_data.data(), font_data.size());
+ if (font_data) {
+ ff1c = FoFiType1C::make(font_data->data(), font_data->size());
} else {
ff1c = FoFiType1C::load(fileNameC);
}
@@ -426,7 +426,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
}
}
- if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data), &face, &font_face)) {
+ if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data.value()), &face, &font_face)) {
error(errSyntaxError, -1, "could not create cid face\n");
goto err2;
}
@@ -447,8 +447,8 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
if (!codeToGID) {
if (!useCIDs) {
std::unique_ptr<FoFiTrueType> ff;
- if (!font_data.empty()) {
- ff = FoFiTrueType::make(font_data.data(), font_data.size());
+ if (font_data) {
+ ff = FoFiTrueType::make(font_data->data(), font_data->size());
} else {
ff = FoFiTrueType::load(fileNameC);
}
@@ -459,7 +459,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
}
}
}
- if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data), &face, &font_face)) {
+ if (!_ft_new_face(lib, fileNameC, embFontID, std::move(font_data.value()), &face, &font_face)) {
error(errSyntaxError, -1, "could not create cid (OT) face\n");
goto err2;
}
diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc
index e630cf06..16a62c43 100644
--- a/poppler/GfxFont.cc
+++ b/poppler/GfxFont.cc
@@ -819,7 +819,7 @@ std::optional<GfxFontLoc> GfxFont::getExternalFont(GooString *path, bool cid)
return std::move(fontLoc); // std::move only required to please g++-7
}
-std::vector<unsigned char> GfxFont::readEmbFontFile(XRef *xref)
+std::optional<std::vector<unsigned char>> GfxFont::readEmbFontFile(XRef *xref)
{
Stream *str;
@@ -828,7 +828,7 @@ std::vector<unsigned char> GfxFont::readEmbFontFile(XRef *xref)
if (!obj2.isStream()) {
error(errSyntaxError, -1, "Embedded font file is not a stream");
embFontID = Ref::INVALID();
- return std::vector<unsigned char> {};
+ return {};
}
str = obj2.getStream();
@@ -1124,9 +1124,9 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA
ffT1 = nullptr;
ffT1C = nullptr;
if (type == fontType1 && embFontID != Ref::INVALID()) {
- const std::vector<unsigned char> buf = readEmbFontFile(xref);
- if (!buf.empty()) {
- if ((ffT1 = FoFiType1::make(buf.data(), buf.size()))) {
+ const std::optional<std::vector<unsigned char>> buf = readEmbFontFile(xref);
+ if (buf) {
+ if ((ffT1 = FoFiType1::make(buf->data(), buf->size()))) {
if (ffT1->getName()) {
if (embFontName) {
delete embFontName;
@@ -1140,9 +1140,9 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA
}
}
} else if (type == fontType1C && embFontID != Ref::INVALID()) {
- const std::vector<unsigned char> buf = readEmbFontFile(xref);
- if (!buf.empty()) {
- if ((ffT1C = FoFiType1C::make(buf.data(), buf.size()))) {
+ const std::optional<std::vector<unsigned char>> buf = readEmbFontFile(xref);
+ if (buf) {
+ if ((ffT1C = FoFiType1C::make(buf->data(), buf->size()))) {
if (ffT1C->getName()) {
if (embFontName) {
delete embFontName;
diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h
index 0409680f..61aa09ae 100644
--- a/poppler/GfxFont.h
+++ b/poppler/GfxFont.h
@@ -279,7 +279,7 @@ public:
std::optional<GfxFontLoc> locateFont(XRef *xref, PSOutputDev *ps);
// Read an external or embedded font file into a buffer.
- std::vector<unsigned char> readEmbFontFile(XRef *xref);
+ std::optional<std::vector<unsigned char>> readEmbFontFile(XRef *xref);
// Get the next char from a string <s> of <len> bytes, returning the
// char <code>, its Unicode mapping <u>, its displacement vector
diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index effba6b1..7bfb2a00 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -2395,9 +2395,9 @@ void PSOutputDev::setupEmbeddedType1CFont(GfxFont *font, Ref *id, GooString *psN
embFontList->append("\n");
// convert it to a Type 1 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if ((ffT1C = FoFiType1C::make(fontBuf.data(), fontBuf.size()))) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if ((ffT1C = FoFiType1C::make(fontBuf->data(), fontBuf->size()))) {
ffT1C->convertToType1(psName->c_str(), nullptr, true, outputFunc, outputStream);
delete ffT1C;
}
@@ -2434,9 +2434,9 @@ void PSOutputDev::setupEmbeddedOpenTypeT1CFont(GfxFont *font, Ref *id, GooString
embFontList->append("\n");
// convert it to a Type 1 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf.data(), fontBuf.size())) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf->data(), fontBuf->size())) {
if (ffTT->isOpenTypeCFF()) {
ffTT->convertToType1(psName->c_str(), nullptr, true, outputFunc, outputStream);
}
@@ -2458,9 +2458,9 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *p
embFontList->append("\n");
// convert it to a Type 42 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf.data(), fontBuf.size())) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf->data(), fontBuf->size())) {
codeToGID = ((Gfx8BitFont *)font)->getCodeToGIDMap(ffTT.get());
ffTT->convertToType42(psName->c_str(), ((Gfx8BitFont *)font)->getHasEncoding() ? ((Gfx8BitFont *)font)->getEncoding() : nullptr, codeToGID, outputFunc, outputStream);
if (codeToGID) {
@@ -2595,9 +2595,9 @@ void PSOutputDev::setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, GooString *p
embFontList->append("\n");
// convert it to a Type 0 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if ((ffT1C = FoFiType1C::make(fontBuf.data(), fontBuf.size()))) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if ((ffT1C = FoFiType1C::make(fontBuf->data(), fontBuf->size()))) {
if (level >= psLevel3) {
// Level 3: use a CID font
ffT1C->convertToCIDType0(psName->c_str(), nullptr, 0, outputFunc, outputStream);
@@ -2622,9 +2622,9 @@ void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString
embFontList->append("\n");
// convert it to a Type 0 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf.data(), fontBuf.size())) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf->data(), fontBuf->size())) {
if (level >= psLevel3) {
// Level 3: use a CID font
ffTT->convertToCIDType2(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), needVerticalMetrics, outputFunc, outputStream);
@@ -2668,9 +2668,9 @@ void PSOutputDev::setupEmbeddedOpenTypeCFFFont(GfxFont *font, Ref *id, GooString
embFontList->append("\n");
// convert it to a Type 0 font
- const std::vector<unsigned char> fontBuf = font->readEmbFontFile(xref);
- if (!fontBuf.empty()) {
- if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf.data(), fontBuf.size())) {
+ const std::optional<std::vector<unsigned char>> fontBuf = font->readEmbFontFile(xref);
+ if (fontBuf) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf->data(), fontBuf->size())) {
if (ffTT->isOpenTypeCFF()) {
if (level >= psLevel3) {
// Level 3: use a CID font
diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
index 8ff7b9a4..695f867a 100644
--- a/poppler/SplashOutputDev.cc
+++ b/poppler/SplashOutputDev.cc
@@ -1892,12 +1892,12 @@ reload:
// embedded font
std::string fileName;
- std::vector<unsigned char> tmpBuf;
+ std::optional<std::vector<unsigned char>> tmpBuf;
if (fontLoc->locType == gfxFontLocEmbedded) {
// if there is an embedded font, read it to memory
tmpBuf = gfxFont->readEmbFontFile((xref) ? xref : doc->getXRef());
- if (tmpBuf.empty()) {
+ if (!tmpBuf) {
goto err2;
}
@@ -1912,7 +1912,7 @@ reload:
if (!fileName.empty()) {
fontsrc->setFile(fileName);
} else {
- fontsrc->setBuf(std::move(tmpBuf));
+ fontsrc->setBuf(std::move(tmpBuf.value()));
}
// load the font file
diff --git a/qt5/src/QPainterOutputDev.cc b/qt5/src/QPainterOutputDev.cc
index 4c9b5306..b68c0756 100644
--- a/qt5/src/QPainterOutputDev.cc
+++ b/qt5/src/QPainterOutputDev.cc
@@ -462,10 +462,10 @@ void QPainterOutputDev::updateFont(GfxState *state)
// load the font from respective location
switch (fontLoc->locType) {
case gfxFontLocEmbedded: { // if there is an embedded font, read it to memory
- const std::vector<unsigned char> fontData = gfxFont->readEmbFontFile(xref);
+ const std::optional<std::vector<unsigned char>> fontData = gfxFont->readEmbFontFile(xref);
// fontData gets copied in the QByteArray constructor
- m_rawFont = new QRawFont(QByteArray((const char *)fontData.data(), fontData.size()), fontSize, m_hintingPreference);
+ m_rawFont = new QRawFont(QByteArray(fontData ? (const char *)fontData->data() : nullptr, fontData ? fontData->size() : 0), fontSize, m_hintingPreference);
m_rawFontCache.insert(std::make_pair(fontID, std::unique_ptr<QRawFont>(m_rawFont)));
break;
@@ -519,7 +519,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
} else {
- std::vector<unsigned char> fontBuffer;
+ std::optional<std::vector<unsigned char>> fontBuffer;
std::optional<GfxFontLoc> fontLoc = gfxFont->locateFont(xref, nullptr);
if (!fontLoc) {
@@ -531,7 +531,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
if (fontLoc->locType == gfxFontLocEmbedded) {
// if there is an embedded font, read it to memory
fontBuffer = gfxFont->readEmbFontFile(xref);
- if (fontBuffer.empty()) {
+ if (!fontBuffer) {
return;
}
@@ -556,7 +556,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
return;
}
} else {
- if (FT_New_Memory_Face(m_ftLibrary, (const FT_Byte *)fontBuffer.data(), fontBuffer.size(), faceIndex, &freeTypeFace)) {
+ if (FT_New_Memory_Face(m_ftLibrary, (const FT_Byte *)fontBuffer->data(), fontBuffer->size(), faceIndex, &freeTypeFace)) {
error(errSyntaxError, -1, "Couldn't create a FreeType face for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)");
return;
}
@@ -586,7 +586,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
}
case fontTrueType:
case fontTrueTypeOT: {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
m_codeToGIDCache[id] = (ff) ? ((Gfx8BitFont *)gfxFont.get())->getCodeToGIDMap(ff.get()) : nullptr;
@@ -599,7 +599,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
// check for a CFF font
if (!m_useCIDs) {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? std::unique_ptr<FoFiType1C>(FoFiType1C::load(fontLoc->path.c_str())) : std::unique_ptr<FoFiType1C>(FoFiType1C::make(fontBuffer.data(), fontBuffer.size()));
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? std::unique_ptr<FoFiType1C>(FoFiType1C::load(fontLoc->path.c_str())) : std::unique_ptr<FoFiType1C>(FoFiType1C::make(fontBuffer->data(), fontBuffer->size()));
cidToGIDMap = (ff) ? ff->getCIDToGIDMap(&nCIDs) : nullptr;
}
@@ -621,7 +621,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
int nCIDs = 0;
if (!codeToGID && !m_useCIDs) {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
if (ff && ff->isOpenTypeCFF()) {
cidToGIDMap = ff->getCIDToGIDMap(&nCIDs);
@@ -643,7 +643,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
memcpy(codeToGID, ((GfxCIDFont *)gfxFont.get())->getCIDToGID(), codeToGIDLen * sizeof(int));
}
} else {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
if (!ff) {
return;
}
diff --git a/qt6/src/QPainterOutputDev.cc b/qt6/src/QPainterOutputDev.cc
index 4c9b5306..b68c0756 100644
--- a/qt6/src/QPainterOutputDev.cc
+++ b/qt6/src/QPainterOutputDev.cc
@@ -462,10 +462,10 @@ void QPainterOutputDev::updateFont(GfxState *state)
// load the font from respective location
switch (fontLoc->locType) {
case gfxFontLocEmbedded: { // if there is an embedded font, read it to memory
- const std::vector<unsigned char> fontData = gfxFont->readEmbFontFile(xref);
+ const std::optional<std::vector<unsigned char>> fontData = gfxFont->readEmbFontFile(xref);
// fontData gets copied in the QByteArray constructor
- m_rawFont = new QRawFont(QByteArray((const char *)fontData.data(), fontData.size()), fontSize, m_hintingPreference);
+ m_rawFont = new QRawFont(QByteArray(fontData ? (const char *)fontData->data() : nullptr, fontData ? fontData->size() : 0), fontSize, m_hintingPreference);
m_rawFontCache.insert(std::make_pair(fontID, std::unique_ptr<QRawFont>(m_rawFont)));
break;
@@ -519,7 +519,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
} else {
- std::vector<unsigned char> fontBuffer;
+ std::optional<std::vector<unsigned char>> fontBuffer;
std::optional<GfxFontLoc> fontLoc = gfxFont->locateFont(xref, nullptr);
if (!fontLoc) {
@@ -531,7 +531,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
if (fontLoc->locType == gfxFontLocEmbedded) {
// if there is an embedded font, read it to memory
fontBuffer = gfxFont->readEmbFontFile(xref);
- if (fontBuffer.empty()) {
+ if (!fontBuffer) {
return;
}
@@ -556,7 +556,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
return;
}
} else {
- if (FT_New_Memory_Face(m_ftLibrary, (const FT_Byte *)fontBuffer.data(), fontBuffer.size(), faceIndex, &freeTypeFace)) {
+ if (FT_New_Memory_Face(m_ftLibrary, (const FT_Byte *)fontBuffer->data(), fontBuffer->size(), faceIndex, &freeTypeFace)) {
error(errSyntaxError, -1, "Couldn't create a FreeType face for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)");
return;
}
@@ -586,7 +586,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
}
case fontTrueType:
case fontTrueTypeOT: {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
m_codeToGIDCache[id] = (ff) ? ((Gfx8BitFont *)gfxFont.get())->getCodeToGIDMap(ff.get()) : nullptr;
@@ -599,7 +599,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
// check for a CFF font
if (!m_useCIDs) {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? std::unique_ptr<FoFiType1C>(FoFiType1C::load(fontLoc->path.c_str())) : std::unique_ptr<FoFiType1C>(FoFiType1C::make(fontBuffer.data(), fontBuffer.size()));
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? std::unique_ptr<FoFiType1C>(FoFiType1C::load(fontLoc->path.c_str())) : std::unique_ptr<FoFiType1C>(FoFiType1C::make(fontBuffer->data(), fontBuffer->size()));
cidToGIDMap = (ff) ? ff->getCIDToGIDMap(&nCIDs) : nullptr;
}
@@ -621,7 +621,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
int nCIDs = 0;
if (!codeToGID && !m_useCIDs) {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
if (ff && ff->isOpenTypeCFF()) {
cidToGIDMap = ff->getCIDToGIDMap(&nCIDs);
@@ -643,7 +643,7 @@ void QPainterOutputDev::updateFont(GfxState *state)
memcpy(codeToGID, ((GfxCIDFont *)gfxFont.get())->getCIDToGID(), codeToGIDLen * sizeof(int));
}
} else {
- auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer.data(), fontBuffer.size());
+ auto ff = (fontLoc->locType != gfxFontLocEmbedded) ? FoFiTrueType::load(fontLoc->path.c_str()) : FoFiTrueType::make(fontBuffer->data(), fontBuffer->size());
if (!ff) {
return;
}
More information about the poppler
mailing list