From: Matthias Kilian Subject: print/scribus: fix build with new poppler To: ports@openbsd.org Date: Wed, 18 Feb 2026 21:36:57 +0100 Hi, this fixes print/scribus with poppler-26.02.0. To be committed together with poppler, because I'm not sure wether I properly kept all the #if's from the upstream commit (there were some conflicts). Ciao, Kili ps: update for poppler will follow in a few minutes. Index: patches/patch-scribus_plugins_import_pdf_importpdf_cpp =================================================================== RCS file: /cvs/ports/print/scribus/patches/patch-scribus_plugins_import_pdf_importpdf_cpp,v diff -u -p -r1.8 patch-scribus_plugins_import_pdf_importpdf_cpp --- patches/patch-scribus_plugins_import_pdf_importpdf_cpp 30 Oct 2025 20:57:55 -0000 1.8 +++ patches/patch-scribus_plugins_import_pdf_importpdf_cpp 18 Feb 2026 20:34:37 -0000 @@ -1,9 +1,48 @@ https://github.com/scribusproject/scribus/commit/188d030acd0cb71e89dbb57695fe52158b6a0959 +https://github.com/scribusproject/scribus/commit/28bd3be104c06b9d4532affe150f7b74fe5b3e59 Index: scribus/plugins/import/pdf/importpdf.cpp --- scribus/plugins/import/pdf/importpdf.cpp.orig +++ scribus/plugins/import/pdf/importpdf.cpp -@@ -416,11 +416,11 @@ bool PdfPlug::convert(const QString& fn) +@@ -79,7 +79,11 @@ QImage PdfPlug::readThumbnail(const QString& fName) + bgColor[0] = 255; + bgColor[1] = 255; + bgColor[2] = 255; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ SplashOutputDev dev(splashModeXBGR8, 4, bgColor, true); ++#else + SplashOutputDev dev(splashModeXBGR8, 4, false, bgColor, true); ++#endif + dev.setVectorAntialias(true); + dev.setFreeTypeHinting(true, false); + dev.startDoc(&pdfDoc); +@@ -154,20 +158,17 @@ bool PdfPlug::import(const QString& fNameIn, const Tra + } + double docWidth = PrefsManager::instance().appPrefs.docSetupPrefs.pageWidth; + double docHeight = PrefsManager::instance().appPrefs.docSetupPrefs.pageHeight; +- if (!m_interactive || (flags & LoadSavePlugin::lfInsertPage)) ++ if (m_Doc && (!m_interactive || (flags & LoadSavePlugin::lfInsertPage))) + { + m_Doc->setPage(docWidth, docHeight, 0, 0, 0, 0, 0, 0, false, false); + m_Doc->addPage(0); + m_Doc->view()->addPage(0, true); + } +- else ++ else if (!m_Doc || (flags & LoadSavePlugin::lfCreateDoc)) + { +- if (!m_Doc || (flags & LoadSavePlugin::lfCreateDoc)) +- { +- m_Doc = ScCore->primaryMainWindow()->doFileNew(docWidth, docHeight, 0, 0, 0, 0, 0, 0, false, 0, 0, 0, 0, 1, "Custom", true); +- ScCore->primaryMainWindow()->HaveNewDoc(); +- ret = true; +- } ++ m_Doc = ScCore->primaryMainWindow()->doFileNew(docWidth, docHeight, 0, 0, 0, 0, 0, 0, false, 0, 0, 0, 0, 1, "Custom", true); ++ ScCore->primaryMainWindow()->HaveNewDoc(); ++ ret = true; + } + + if ((ret) || (!m_interactive)) +@@ -416,11 +417,11 @@ bool PdfPlug::convert(const QString& fn) if (dev->isOk()) { @@ -17,7 +56,33 @@ Index: scribus/plugins/import/pdf/import if (order) { for (int i = 0; i < order->getLength (); ++i) -@@ -874,25 +874,25 @@ QRectF PdfPlug::getCBox(int box, int pgNum) +@@ -809,11 +810,15 @@ QImage PdfPlug::readPreview(int pgNum, int width, int + bgColor[0] = 255; + bgColor[1] = 255; + bgColor[2] = 255; +- SplashOutputDev *dev = new SplashOutputDev(splashModeXBGR8, 4, false, bgColor, true); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ auto dev = std::make_unique(splashModeXBGR8, 4, bgColor, true); ++#else ++ auto dev = std::make_unique(splashModeXBGR8, 4, false, bgColor, true); ++#endif + dev->setVectorAntialias(true); + dev->setFreeTypeHinting(true, false); + dev->startDoc(m_pdfDoc); +- m_pdfDoc->displayPage(dev, pgNum, hDPI, vDPI, 0, true, false, false); ++ m_pdfDoc->displayPage(dev.get(), pgNum, hDPI, vDPI, 0, true, false, false); + SplashBitmap *bitmap = dev->getBitmap(); + int bw = bitmap->getWidth(); + int bh = bitmap->getHeight(); +@@ -851,7 +856,6 @@ QImage PdfPlug::readPreview(int pgNum, int width, int + pp.drawRect(cRect); + pp.end(); + } +- delete dev; + return image; + } + +@@ -874,25 +878,25 @@ QRectF PdfPlug::getCBox(int box, int pgNum) QString PdfPlug::UnicodeParsedString(const GooString *s1) { Index: patches/patch-scribus_plugins_import_pdf_pdftextrecognition_cpp =================================================================== RCS file: patches/patch-scribus_plugins_import_pdf_pdftextrecognition_cpp diff -N patches/patch-scribus_plugins_import_pdf_pdftextrecognition_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-scribus_plugins_import_pdf_pdftextrecognition_cpp 18 Feb 2026 20:34:37 -0000 @@ -0,0 +1,43 @@ +Fixes for poppler-26.02.0. + +https://github.com/scribusproject/scribus/commit/28bd3be104c06b9d4532affe150f7b74fe5b3e59 + +Index: scribus/plugins/import/pdf/pdftextrecognition.cpp +--- scribus/plugins/import/pdf/pdftextrecognition.cpp.orig ++++ scribus/plugins/import/pdf/pdftextrecognition.cpp +@@ -81,7 +81,7 @@ bool PdfTextRecognition::isNewLineOrRegion(QPointF new + */ + PdfGlyph PdfTextRecognition::AddCharCommon(GfxState* state, double x, double y, double dx, double dy, Unicode const* u, int uLen) + { +- const double * ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + QTransform trans(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + QPointF charDelta1 = trans.map(QPointF(0.0, 0.0)); + QPointF charDelta2 = trans.map(QPointF(dx, dy)); +@@ -121,7 +121,7 @@ PdfGlyph PdfTextRecognition::AddFirstChar(GfxState* st + setCharMode(AddCharMode::ADDBASICCHAR); + + //only need to be called for the very first point +- const double * ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + QTransform trans(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + QPointF glyphPos = trans.map(QPointF(x, y)); + +@@ -136,7 +136,7 @@ PdfGlyph PdfTextRecognition::AddFirstChar(GfxState* st + */ + PdfGlyph PdfTextRecognition::AddBasicChar(GfxState* state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, Unicode const* u, int uLen) + { +- const double * ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + QTransform trans(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + + PdfGlyph newGlyph = AddCharCommon(state, x, y, dx, dy, u, uLen); +@@ -461,7 +461,7 @@ PdfTextOutputDev::~PdfTextOutputDev() + */ + void PdfTextOutputDev::updateTextPos(GfxState* state) + { +- const double * ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + QTransform trans(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + + QPointF newPosition = trans.map(QPointF(state->getCurX(), state->getCurY())); Index: patches/patch-scribus_plugins_import_pdf_slaoutput_cpp =================================================================== RCS file: /cvs/ports/print/scribus/patches/patch-scribus_plugins_import_pdf_slaoutput_cpp,v diff -u -p -r1.21 patch-scribus_plugins_import_pdf_slaoutput_cpp --- patches/patch-scribus_plugins_import_pdf_slaoutput_cpp 9 Jan 2026 19:54:16 -0000 1.21 +++ patches/patch-scribus_plugins_import_pdf_slaoutput_cpp 18 Feb 2026 20:34:37 -0000 @@ -1,7 +1,8 @@ https://github.com/scribusproject/scribus/commit/188d030acd0cb71e89dbb57695fe52158b6a0959 (and local changes for FoFiTrueType::make()) +https://github.com/scribusproject/scribus/commit/28bd3be104c06b9d4532affe150f7b74fe5b3e59 -Add fixes for poppler-25.09.1, 25.10.0 and 26.01.0. +Add fixes for poppler-25.09.1, 25.10.0, 26.01.0 and 26.02.0. Index: scribus/plugins/import/pdf/slaoutput.cpp --- scribus/plugins/import/pdf/slaoutput.cpp.orig @@ -41,7 +42,71 @@ Index: scribus/plugins/import/pdf/slaout { if (m_groupStack.count() <= 0) return; -@@ -2215,11 +2215,11 @@ bool SlaOutputDev::patchMeshShadedFill(GfxState *state +@@ -1519,7 +1519,7 @@ void SlaOutputDev::eoClip(GfxState *state) + + void SlaOutputDev::adjustClip(GfxState *state, Qt::FillRule fillRule) + { +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + QString output = convertPath(state->getPath()); + if (output.isEmpty()) +@@ -1546,7 +1546,7 @@ void SlaOutputDev::adjustClip(GfxState *state, Qt::Fil + void SlaOutputDev::stroke(GfxState *state) + { + // qDebug() << "Stroke"; +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + double xCoor = m_doc->currentPage()->xOffset(); + double yCoor = m_doc->currentPage()->yOffset(); + getPenState(state); +@@ -1650,8 +1650,7 @@ void SlaOutputDev::eoFill(GfxState *state) + + void SlaOutputDev::createFillItem(GfxState *state, Qt::FillRule fillRule) + { +- const double *ctm; +- ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + double xCoor = m_doc->currentPage()->xOffset(); + double yCoor = m_doc->currentPage()->yOffset(); +@@ -1778,7 +1777,7 @@ bool SlaOutputDev::axialShadedFill(GfxState *state, Gf + out = intersection(m_graphicStack.top().clipPath, out); + crect = out.boundingRect(); + } +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + FPointArray gr; + gr.addPoint(GrStartX, GrStartY); +@@ -1917,7 +1916,7 @@ bool SlaOutputDev::radialShadedFill(GfxState *state, G + double GrFocalY = y1; + GrEndX = GrFocalX + r1; + GrEndY = GrFocalY; +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + FPointArray gr; + gr.addPoint(GrStartX, GrStartY); +@@ -2002,7 +2001,7 @@ bool SlaOutputDev::gouraudTriangleShadedFill(GfxState + output += QString("Z"); + m_pathIsClosed = true; + m_coords = output; +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + const auto& graphicState = m_graphicStack.top(); + int z = m_doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, xCoor + crect.x(), yCoor + crect.y(), crect.width(), crect.height(), 0, graphicState.fillColor, CommonStrings::None); +@@ -2083,7 +2082,7 @@ bool SlaOutputDev::patchMeshShadedFill(GfxState *state + output += QString("Z"); + m_pathIsClosed = true; + m_coords = output; +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + const auto& graphicState = m_graphicStack.top(); + int z = m_doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, xCoor + crect.x(), yCoor + crect.y(), crect.width(), crect.height(), 0, graphicState.fillColor, CommonStrings::None); +@@ -2215,11 +2214,11 @@ bool SlaOutputDev::patchMeshShadedFill(GfxState *state return true; } @@ -56,7 +121,16 @@ Index: scribus/plugins/import/pdf/slaout Dict *resDict = tPat->getResDict(); PDFRectangle box; -@@ -2347,7 +2347,7 @@ void SlaOutputDev::drawImageMask(GfxState *state, Obje +@@ -2238,7 +2237,7 @@ bool SlaOutputDev::tilingPatternFill(GfxState *state, + box.x2 = bbox[2]; + box.y2 = bbox[3]; + +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + QTransform mm(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); + QTransform mmx = mm * m_ctm; +@@ -2347,7 +2346,7 @@ void SlaOutputDev::drawImageMask(GfxState *state, Obje { // qDebug() << "Draw Image Mask"; auto imgStr = std::make_unique(str, width, 1, 1); @@ -65,7 +139,7 @@ Index: scribus/plugins/import/pdf/slaout #ifdef WORDS_BIGENDIAN QImage image(width, height, QImage::Format_Mono); #else -@@ -2421,7 +2421,7 @@ void SlaOutputDev::drawSoftMaskedImage(GfxState *state +@@ -2421,7 +2420,7 @@ void SlaOutputDev::drawSoftMaskedImage(GfxState *state { // qDebug() << "SlaOutputDev::drawSoftMaskedImage Masked Image Components" << colorMap->getNumPixelComps(); auto imgStr = std::make_unique(str, width, colorMap->getNumPixelComps(), colorMap->getBits()); @@ -74,7 +148,7 @@ Index: scribus/plugins/import/pdf/slaout unsigned int *dest = nullptr; unsigned char * buffer = new unsigned char[width * height * 4]; for (int y = 0; y < height; y++) -@@ -2439,7 +2439,7 @@ void SlaOutputDev::drawSoftMaskedImage(GfxState *state +@@ -2439,7 +2438,7 @@ void SlaOutputDev::drawSoftMaskedImage(GfxState *state } auto mskStr = std::make_unique(maskStr, maskWidth, maskColorMap->getNumPixelComps(), maskColorMap->getBits()); @@ -83,7 +157,7 @@ Index: scribus/plugins/import/pdf/slaout unsigned char *mdest = nullptr; unsigned char * mbuffer = new unsigned char[maskWidth * maskHeight]; memset(mbuffer, 0, maskWidth * maskHeight); -@@ -2497,7 +2497,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob +@@ -2497,7 +2496,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob { // qDebug() << "SlaOutputDev::drawMaskedImage"; auto imgStr = std::make_unique(str, width, colorMap->getNumPixelComps(), colorMap->getBits()); @@ -92,7 +166,7 @@ Index: scribus/plugins/import/pdf/slaout unsigned int *dest = nullptr; unsigned char * buffer = new unsigned char[width * height * 4]; for (int y = 0; y < height; y++) -@@ -2515,7 +2515,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob +@@ -2515,7 +2514,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob } auto mskStr = std::make_unique(maskStr, maskWidth, 1, 1); @@ -101,7 +175,7 @@ Index: scribus/plugins/import/pdf/slaout unsigned char *mdest = nullptr; int invert_bit = maskInvert ? 1 : 0; unsigned char * mbuffer = new unsigned char[maskWidth * maskHeight]; -@@ -2561,7 +2561,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob +@@ -2561,7 +2560,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Ob void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, bool interpolate, const int* maskColors, bool inlineImg) { auto imgStr = std::make_unique(str, width, colorMap->getNumPixelComps(), colorMap->getBits()); @@ -110,7 +184,16 @@ Index: scribus/plugins/import/pdf/slaout QImage image(width, height, QImage::Format_ARGB32); if (image.isNull()) -@@ -2791,7 +2791,7 @@ void SlaOutputDev::beginMarkedContent(const char *name +@@ -2633,7 +2632,7 @@ void SlaOutputDev::drawImage(GfxState *state, Object * + void SlaOutputDev::createImageFrame(QImage& image, GfxState *state, int numColorComponents) + { + // qDebug() << "SlaOutputDev::createImageFrame"; +- const double *ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + double xCoor = m_doc->currentPage()->xOffset(); + double yCoor = m_doc->currentPage()->yOffset(); + +@@ -2791,7 +2790,7 @@ void SlaOutputDev::beginMarkedContent(const char *name { if (dictRef->isNull()) return; @@ -119,16 +202,32 @@ Index: scribus/plugins/import/pdf/slaout OptionalContentGroup *oc; if (dictRef->isRef()) { -@@ -2928,13 +2928,17 @@ void SlaOutputDev::updateFont(GfxState *state) - SplashFontFile *fontFile; +@@ -2925,16 +2924,32 @@ void SlaOutputDev::updateFont(GfxState *state) + #else + SlaOutFontFileID *id; + #endif +- SplashFontFile *fontFile; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ std::shared_ptr fontFile; ++#else ++ SplashFontFile *fontFile = nullptr; ++#endif ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ std::unique_ptr fontsrc; ++#else SplashFontSrc *fontsrc = nullptr; ++#endif Object refObj, strObj; +#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) + std::vector codeToGID; +#else int *codeToGID = nullptr; +#endif ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ std::array textMat; ++#else const double *textMat = nullptr; ++#endif double m11, m12, m21, m22, fontSize; - SplashCoord mat[4] = { 1.0, 0.0, 0.0, 1.0 }; + std::array mat = { 1.0, 0.0, 0.0, 1.0 }; @@ -139,12 +238,78 @@ Index: scribus/plugins/import/pdf/slaout m_font = nullptr; -@@ -3040,12 +3044,12 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -2981,16 +2996,29 @@ void SlaOutputDev::updateFont(GfxState *state) + fontType = fontLoc->fontType; + } + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!fileName.empty()) ++ fontsrc = std::make_unique(fileName); ++ else ++ fontsrc = std::make_unique(std::move(tmpBuf.value())); ++#else + fontsrc = new SplashFontSrc; + if (!fileName.empty()) + fontsrc->setFile(fileName); + else + fontsrc->setBuf(std::move(tmpBuf.value())); ++#endif + + // load the font file + switch (fontType) { + case fontType1: +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadType1Font(std::move(id), std::move(fontsrc), (const char**) ((Gfx8BitFont*) gfxFont)->getEncoding(), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadType1Font(std::move(id), fontsrc, (const char**) ((Gfx8BitFont*) gfxFont)->getEncoding(), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); +@@ -3005,7 +3033,13 @@ void SlaOutputDev::updateFont(GfxState *state) + #endif + break; + case fontType1C: +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadType1CFont(std::move(id), std::move(fontsrc), (const char**) ((Gfx8BitFont*) gfxFont)->getEncoding(), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadType1CFont(std::move(id), fontsrc, (const char**) ((Gfx8BitFont*) gfxFont)->getEncoding(), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); +@@ -3020,7 +3054,13 @@ void SlaOutputDev::updateFont(GfxState *state) + #endif + break; + case fontType1COT: +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont(std::move(id), std::move(fontsrc), (const char**) ((Gfx8BitFont*) gfxFont)->getEncoding(), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont(std::move(id), fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding(), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); +@@ -3036,16 +3076,16 @@ void SlaOutputDev::updateFont(GfxState *state) + break; + case fontTrueType: + case fontTrueTypeOT: +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) if (!fileName.empty()) ff = FoFiTrueType::load(fileName.c_str(), fontLoc->fontNum); else - ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size(), fontLoc->fontNum); -+ ff = FoFiTrueType::make(std::span(fontsrc->buf), fontLoc->fontNum); ++ ff = FoFiTrueType::make(fontsrc->buf(), fontLoc->fontNum); #else if (!fileName.empty()) ff = FoFiTrueType::load(fileName.c_str()); @@ -154,7 +319,7 @@ Index: scribus/plugins/import/pdf/slaout #endif if (ff) { -@@ -3055,10 +3059,20 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -3055,10 +3095,26 @@ void SlaOutputDev::updateFont(GfxState *state) } else { @@ -166,7 +331,13 @@ Index: scribus/plugins/import/pdf/slaout n = 0; } -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), std::move(fontsrc), std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); @@ -176,7 +347,22 @@ Index: scribus/plugins/import/pdf/slaout if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) { error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); -@@ -3089,6 +3103,18 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -3074,7 +3130,13 @@ void SlaOutputDev::updateFont(GfxState *state) + break; + case fontCIDType0: + case fontCIDType0C: +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadCIDFont(std::move(id), std::move(fontsrc), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadCIDFont(std::move(id), fontsrc, fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); +@@ -3089,6 +3151,18 @@ void SlaOutputDev::updateFont(GfxState *state) #endif break; case fontCIDType0COT: @@ -195,13 +381,20 @@ Index: scribus/plugins/import/pdf/slaout if (((GfxCIDFont *) gfxFont)->getCIDToGID()) { n = ((GfxCIDFont *) gfxFont)->getCIDToGIDLen(); -@@ -3100,7 +3126,15 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -3100,7 +3174,22 @@ void SlaOutputDev::updateFont(GfxState *state) codeToGID = nullptr; n = 0; } -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) +#endif -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(std::move(id), std::move(fontsrc), std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", ++ gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) + if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", @@ -212,7 +405,7 @@ Index: scribus/plugins/import/pdf/slaout if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) { error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", -@@ -3118,6 +3152,15 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -3118,6 +3207,15 @@ void SlaOutputDev::updateFont(GfxState *state) break; case fontCIDType2: case fontCIDType2OT: @@ -228,19 +421,20 @@ Index: scribus/plugins/import/pdf/slaout codeToGID = nullptr; n = 0; if (((GfxCIDFont *) gfxFont)->getCIDToGID()) -@@ -3129,25 +3172,36 @@ void SlaOutputDev::updateFont(GfxState *state) +@@ -3129,25 +3227,42 @@ void SlaOutputDev::updateFont(GfxState *state) memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), n * sizeof(*codeToGID)); } } +#endif else { - #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) if (!fileName.empty()) ff = FoFiTrueType::load(fileName.c_str(), fontLoc->fontNum); else - ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size(), fontLoc->fontNum); -+ ff = FoFiTrueType::make(std::span(fontsrc->buf), fontLoc->fontNum); ++ ff = FoFiTrueType::make(fontsrc->buf(), fontLoc->fontNum); #else if (!fileName.empty()) ff = FoFiTrueType::load(fileName.c_str()); @@ -258,7 +452,13 @@ Index: scribus/plugins/import/pdf/slaout ff.reset(); } -#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), std::move(fontsrc), std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); @@ -268,7 +468,40 @@ Index: scribus/plugins/import/pdf/slaout if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) { error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); -@@ -3526,7 +3580,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo +@@ -3186,8 +3301,10 @@ void SlaOutputDev::updateFont(GfxState *state) + mat[3] = -m22; + m_font = m_fontEngine->getFont(fontFile, mat, matrix); + ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(26, 2, 0) + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); ++#endif + return; + + err2: +@@ -3198,8 +3315,12 @@ err2: + #endif + + err1: ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(26, 2, 0) ++ fontsrc.reset(); ++#else + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); ++#endif + } + + void SlaOutputDev::drawChar(GfxState* state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, const Unicode* u, int uLen) +@@ -3252,7 +3373,7 @@ void SlaOutputDev::drawChar(GfxState* state, double x, + if (f & splashPathLast) + qPath.closeSubpath(); + } +- const double * ctm = state->getCTM(); ++ const auto ctm = state->getCTM(); + m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + double xCoor = m_doc->currentPage()->xOffset(); + double yCoor = m_doc->currentPage()->yOffset(); +@@ -3526,7 +3647,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo return CommonStrings::None; if (color->getSpace() == AnnotColor::colorRGB) { @@ -277,7 +510,7 @@ Index: scribus/plugins/import/pdf/slaout double Rc = color_data[0]; double Gc = color_data[1]; double Bc = color_data[2]; -@@ -3535,7 +3589,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo +@@ -3535,7 +3656,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo } else if (color->getSpace() == AnnotColor::colorCMYK) { @@ -286,7 +519,7 @@ Index: scribus/plugins/import/pdf/slaout double Cc = color_data[0]; double Mc = color_data[1]; double Yc = color_data[2]; -@@ -3545,7 +3599,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo +@@ -3545,7 +3666,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotCo } else if (color->getSpace() == AnnotColor::colorGray) { @@ -295,7 +528,7 @@ Index: scribus/plugins/import/pdf/slaout double Kc = 1.0 - color_data[0]; tmp.setCmykColorF(0, 0, 0, Kc); fNam = m_doc->PageColors.tryAddColor(namPrefix+tmp.name(), tmp); -@@ -3748,25 +3802,25 @@ void SlaOutputDev::pushGroup(const QString& maskName, +@@ -3748,25 +3869,25 @@ void SlaOutputDev::pushGroup(const QString& maskName, QString SlaOutputDev::UnicodeParsedString(const GooString *s1) const {