From 8495069bed0d51a21ff609f7036ff40d73ff07a8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Apr 2023 21:16:02 +0200 Subject: [PATCH] gnu: scribus: Fix build with latest poppler. * gnu/packages/patches/scribus-1.5.8-poppler-22.03.0.patch, gnu/packages/patches/scribus-1.5.8-poppler-22.04.0.patch, gnu/packages/patches/scribus-1.5.8-poppler-22.09.0.patch, gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch, gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/scribus.scm (scribus)[source]: Add patches. [arguments]: Enable WANT_CPP17 option. --- gnu/local.mk | 5 + .../scribus-1.5.8-poppler-22.03.0.patch | 52 ++++ .../scribus-1.5.8-poppler-22.04.0.patch | 291 ++++++++++++++++++ .../scribus-1.5.8-poppler-22.09.0.patch | 20 ++ .../scribus-1.5.8-poppler-22.2.0-1.patch | 129 ++++++++ .../scribus-1.5.8-poppler-22.2.0-2.patch | 28 ++ gnu/packages/scribus.scm | 13 +- 7 files changed, 535 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/scribus-1.5.8-poppler-22.03.0.patch create mode 100644 gnu/packages/patches/scribus-1.5.8-poppler-22.04.0.patch create mode 100644 gnu/packages/patches/scribus-1.5.8-poppler-22.09.0.patch create mode 100644 gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch create mode 100644 gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch diff --git a/gnu/local.mk b/gnu/local.mk index 00ef1bfe93..374b0aa359 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1679,6 +1679,11 @@ dist_patch_DATA = \ %D%/packages/patches/python-telingo-fix-comparison.patch \ %D%/packages/patches/python-typeguard-python3.10.patch \ %D%/packages/patches/python-w3lib-fix-test-failure.patch \ + %D%/packages/patches/scribus-1.5.8-poppler-22.03.0.patch \ + %D%/packages/patches/scribus-1.5.8-poppler-22.04.0.patch \ + %D%/packages/patches/scribus-1.5.8-poppler-22.09.0.patch \ + %D%/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch \ + %D%/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch \ %D%/packages/patches/sdcc-disable-non-free-code.patch \ %D%/packages/patches/sdl-pango-api_additions.patch \ %D%/packages/patches/sdl-pango-blit_overflow.patch \ diff --git a/gnu/packages/patches/scribus-1.5.8-poppler-22.03.0.patch b/gnu/packages/patches/scribus-1.5.8-poppler-22.03.0.patch new file mode 100644 index 0000000000..f7a0c03fdd --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.8-poppler-22.03.0.patch @@ -0,0 +1,52 @@ +From f19410ac3b27e33dd62105746784e61e85b90a1d Mon Sep 17 00:00:00 2001 +From: Jean Ghali +Date: Wed, 2 Mar 2022 22:22:53 +0000 +Subject: [PATCH] #16764: Build break with poppler 22.03.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@24982 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/importpdf.cpp | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp +index 154e58a3f0..392dcd9e64 100644 +--- a/scribus/plugins/import/pdf/importpdf.cpp ++++ b/scribus/plugins/import/pdf/importpdf.cpp +@@ -89,7 +89,11 @@ QImage PdfPlug::readThumbnail(const QString& fName) + #endif + globalParams->setErrQuiet(gTrue); + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ PDFDoc pdfDoc{ std::make_unique(fname) }; ++#else + PDFDoc pdfDoc{fname, nullptr, nullptr, nullptr}; ++#endif + if (!pdfDoc.isOk() || pdfDoc.getErrorCode() == errEncrypted) + return QImage(); + +@@ -342,7 +346,11 @@ bool PdfPlug::convert(const QString& fn) + globalParams->setErrQuiet(gTrue); + // globalParams->setPrintCommands(gTrue); + QList ocgGroups; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ auto pdfDoc = std::make_unique(std::make_unique(fname)); ++#else + auto pdfDoc = std::unique_ptr(new PDFDoc(fname, nullptr, nullptr, nullptr)); ++#endif + if (pdfDoc) + { + if (pdfDoc->getErrorCode() == errEncrypted) +@@ -361,8 +369,13 @@ bool PdfPlug::convert(const QString& fn) + #else + auto fname = new GooString(QFile::encodeName(fn).data()); + #endif ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 3, 0) ++ std::optional userPW(std::in_place, text.toLocal8Bit().data()); ++ pdfDoc.reset(new PDFDoc(std::make_unique(fname), userPW, userPW, nullptr)); ++#else + auto userPW = new GooString(text.toLocal8Bit().data()); + pdfDoc.reset(new PDFDoc(fname, userPW, userPW, nullptr)); ++#endif + qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); + } + if ((!pdfDoc) || (pdfDoc->getErrorCode() != errNone)) diff --git a/gnu/packages/patches/scribus-1.5.8-poppler-22.04.0.patch b/gnu/packages/patches/scribus-1.5.8-poppler-22.04.0.patch new file mode 100644 index 0000000000..290484e7e8 --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.8-poppler-22.04.0.patch @@ -0,0 +1,291 @@ +https://bugs.gentoo.org/843287 +https://github.com/scribusproject/scribus/commit/f2237b8f0b5cf7690e864a22ef7a63a6d769fa36.patch + +From f2237b8f0b5cf7690e864a22ef7a63a6d769fa36 Mon Sep 17 00:00:00 2001 +From: Jean Ghali +Date: Fri, 1 Apr 2022 23:52:32 +0000 +Subject: [PATCH] Fix build with poppler 22.04.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@25074 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/slaoutput.cpp | 123 ++++++++++++++--------- + 1 file changed, 78 insertions(+), 45 deletions(-) + +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index e20a81f99e..5626fe3477 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -174,8 +174,13 @@ void AnoOutputDev::drawString(GfxState *state, POPPLER_CONST GooString *s) + int shade = 100; + currColorText = getColor(state->getFillColorSpace(), state->getFillColor(), &shade); + fontSize = state->getFontSize(); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ if (state->getFont() && state->getFont()->getName()) ++ fontName = new GooString(state->getFont()->getName().value()); ++#else + if (state->getFont()) + fontName = state->getFont()->getName()->copy(); ++#endif + itemText = s->copy(); + } + +@@ -357,7 +362,12 @@ std::unique_ptr SlaOutputDev::SC_getAdditionalAction(const char *key + GBool SlaOutputDev::annotations_callback(Annot *annota, void *user_data) + { + SlaOutputDev *dev = (SlaOutputDev*)user_data; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ const PDFRectangle& annotRect = annota->getRect();; ++ const PDFRectangle* box = &annotRect; ++#else + PDFRectangle *box = annota->getRect(); ++#endif + double xCoor = dev->m_doc->currentPage()->xOffset() + box->x1 - dev->cropOffsetX; + double yCoor = dev->m_doc->currentPage()->yOffset() + dev->m_doc->currentPage()->height() - box->y2 + dev->cropOffsetY; + double width = box->x2 - box->x1; +@@ -684,7 +694,12 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota, double xCoor, double yCoor, + if (apa || !achar) + { + AnoOutputDev *annotOutDev = new AnoOutputDev(m_doc, m_importedColors); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ const PDFRectangle& annotaRect = annota->getRect(); ++ Gfx* gfx = new Gfx(pdfDoc, annotOutDev, pdfDoc->getPage(m_actPage)->getResourceDict(), &annotaRect, nullptr); ++#else + Gfx *gfx = new Gfx(pdfDoc, annotOutDev, pdfDoc->getPage(m_actPage)->getResourceDict(), annota->getRect(), nullptr); ++#endif + ano->draw(gfx, false); + if (!bgFound) + m_currColorFill = annotOutDev->currColorFill; +@@ -2916,22 +2931,27 @@ void SlaOutputDev::markPoint(POPPLER_CONST char *name, Dict *properties) + + void SlaOutputDev::updateFont(GfxState *state) + { +- GfxFont *gfxFont; +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ std::optional fontLoc; ++ std::string fileName; ++ std::unique_ptr ff; ++ std::optional> tmpBuf; ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) + std::optional fontLoc; + const GooString * fileName = nullptr; + std::unique_ptr ff; ++ char* tmpBuf = nullptr; + #else + GfxFontLoc * fontLoc = nullptr; + GooString * fileName = nullptr; + FoFiTrueType * ff = nullptr; ++ char* tmpBuf = nullptr; + #endif + GfxFontType fontType; + SlaOutFontFileID *id; + SplashFontFile *fontFile; + SplashFontSrc *fontsrc = nullptr; + Object refObj, strObj; +- char *tmpBuf = nullptr; + int tmpBufLen = 0; + int *codeToGID = nullptr; + const double *textMat = nullptr; +@@ -2943,7 +2963,11 @@ void SlaOutputDev::updateFont(GfxState *state) + + m_font = nullptr; + +- gfxFont = state->getFont(); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ GfxFont* gfxFont = state->getFont().get(); ++#else ++ GfxFont* gfxFont = state->getFont(); ++#endif + if (!gfxFont) + goto err1; + +@@ -2968,15 +2992,23 @@ void SlaOutputDev::updateFont(GfxState *state) + if (fontLoc->locType == gfxFontLocEmbedded) + { + // if there is an embedded font, read it to memory +- tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ tmpBuf = gfxFont->readEmbFontFile((xref) ? xref : pdfDoc->getXRef()); + if (! tmpBuf) + goto err2; ++#else ++ tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); ++ if (!tmpBuf) ++ goto err2; ++#endif + + // external font + } + else + { // gfxFontLocExternal +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ fileName = fontLoc->path; ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) + fileName = fontLoc->pathAsGooString(); + #else + fileName = fontLoc->path; +@@ -2985,52 +3017,54 @@ void SlaOutputDev::updateFont(GfxState *state) + } + + fontsrc = new SplashFontSrc; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ if (!fileName.empty()) ++ fontsrc->setFile(fileName); ++ else ++ fontsrc->setBuf(std::move(tmpBuf.value())); ++#else + if (fileName) + fontsrc->setFile(fileName, gFalse); + else + fontsrc->setBuf(tmpBuf, tmpBufLen, gTrue); ++#endif + + // load the font file + switch (fontType) { + case fontType1: +- if (!(fontFile = m_fontEngine->loadType1Font( +- id, +- fontsrc, +- (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) ++ if (!(fontFile = m_fontEngine->loadType1Font(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; + case fontType1C: +- if (!(fontFile = m_fontEngine->loadType1CFont( +- id, +- fontsrc, +- (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) ++ if (!(fontFile = m_fontEngine->loadType1CFont(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; + case fontType1COT: +- if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont( +- id, +- fontsrc, +- (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) ++ if (!(fontFile = m_fontEngine->loadOpenTypeT1CFont(id, fontsrc, (const char **)((Gfx8BitFont *) gfxFont)->getEncoding()))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; + case fontTrueType: + case fontTrueTypeOT: ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ if (!fileName.empty()) ++ ff = FoFiTrueType::load(fileName.c_str()); ++ else ++ ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size()); ++#else + if (fileName) + ff = FoFiTrueType::load(fileName->getCString()); + else + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); ++#endif + if (ff) + { + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) +@@ -3047,24 +3081,17 @@ void SlaOutputDev::updateFont(GfxState *state) + codeToGID = nullptr; + n = 0; + } +- if (!(fontFile = m_fontEngine->loadTrueTypeFont( +- id, +- fontsrc, +- codeToGID, n))) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(id, fontsrc, codeToGID, n))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; + case fontCIDType0: + case fontCIDType0C: +- if (!(fontFile = m_fontEngine->loadCIDFont( +- id, +- fontsrc))) ++ if (!(fontFile = m_fontEngine->loadCIDFont(id, fontsrc))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; +@@ -3080,10 +3107,7 @@ void SlaOutputDev::updateFont(GfxState *state) + codeToGID = nullptr; + n = 0; + } +- if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont( +- id, +- fontsrc, +- codeToGID, n))) ++ if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(id, fontsrc, codeToGID, n))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", + gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); +@@ -3105,10 +3129,17 @@ void SlaOutputDev::updateFont(GfxState *state) + } + else + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) ++ if (!fileName.empty()) ++ ff = FoFiTrueType::load(fileName.c_str()); ++ else ++ ff = FoFiTrueType::make(fontsrc->buf.data(), fontsrc->buf.size()); ++#else + if (fileName) + ff = FoFiTrueType::load(fileName->getCString()); + else + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); ++#endif + if (! ff) + goto err2; + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) +@@ -3119,13 +3150,9 @@ void SlaOutputDev::updateFont(GfxState *state) + delete ff; + #endif + } +- if (!(fontFile = m_fontEngine->loadTrueTypeFont( +- id, +- fontsrc, +- codeToGID, n, faceIndex))) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(id, fontsrc, codeToGID, n, faceIndex))) + { +- error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + break; +@@ -3269,9 +3296,15 @@ void SlaOutputDev::drawChar(GfxState* state, double x, double y, double dx, doub + GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen) + { + // qDebug() << "beginType3Char"; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 4, 0) + GfxFont *gfxFont; ++ if (!(gfxFont = state->getFont().get())) ++ return gTrue; ++#else ++ GfxFont* gfxFont; + if (!(gfxFont = state->getFont())) + return gTrue; ++#endif + if (gfxFont->getType() != fontType3) + return gTrue; + F3Entry f3e; diff --git a/gnu/packages/patches/scribus-1.5.8-poppler-22.09.0.patch b/gnu/packages/patches/scribus-1.5.8-poppler-22.09.0.patch new file mode 100644 index 0000000000..106a6f5162 --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.8-poppler-22.09.0.patch @@ -0,0 +1,20 @@ +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -3741,9 +3741,16 @@ void SlaOutputDev::getPenState(GfxState *state) + break; + } + double lw = state->getLineWidth(); +- double *dashPattern; + int dashLength; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 9, 0) ++ const double *dashPattern; ++ const std::vector &dash = state->getLineDash(&DashOffset); ++ dashPattern = dash.data(); ++ dashLength = dash.size(); ++#else ++ double *dashPattern; + state->getLineDash(&dashPattern, &dashLength, &DashOffset); ++#endif + QVector pattern(dashLength); + for (int i = 0; i < dashLength; ++i) + { diff --git a/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch b/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch new file mode 100644 index 0000000000..4e0f607c6a --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-1.patch @@ -0,0 +1,129 @@ +From 85c0dff3422fa3c26fbc2e8d8561f597ec24bd92 Mon Sep 17 00:00:00 2001 +From: Jean Ghali +Date: Wed, 2 Feb 2022 23:12:52 +0000 +Subject: [PATCH] #16734: Build break with poppler 22.2.0 + +git-svn-id: svn://scribus.net/trunk/Scribus@24884 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/slaoutput.cpp | 47 +++++++++++++++++++----- + 1 file changed, 37 insertions(+), 10 deletions(-) + +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index 5894bf2ad6..3650c96f52 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -7,6 +7,11 @@ for which a new license (GPL+exception) is in place. + + #include "slaoutput.h" + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++#include ++#include ++#endif ++ + #include + #include + #include +@@ -3027,18 +3032,24 @@ void SlaOutputDev::markPoint(POPPLER_CONST char *name, Dict *properties) + void SlaOutputDev::updateFont(GfxState *state) + { + GfxFont *gfxFont; +- GfxFontLoc *fontLoc; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ std::optional fontLoc; ++ const GooString * fileName = nullptr; ++ std::unique_ptr ff; ++#else ++ GfxFontLoc * fontLoc = nullptr; ++ GooString * fileName = nullptr; ++ FoFiTrueType * ff = nullptr; ++#endif + GfxFontType fontType; + SlaOutFontFileID *id; + SplashFontFile *fontFile; + SplashFontSrc *fontsrc = nullptr; +- FoFiTrueType *ff; + Object refObj, strObj; +- GooString *fileName; +- char *tmpBuf; ++ char *tmpBuf = nullptr; + int tmpBufLen = 0; +- int *codeToGID; +- const double *textMat; ++ int *codeToGID = nullptr; ++ const double *textMat = nullptr; + double m11, m12, m21, m22, fontSize; + SplashCoord mat[4]; + int n = 0; +@@ -3046,9 +3057,6 @@ void SlaOutputDev::updateFont(GfxState *state) + SplashCoord matrix[6]; + + m_font = nullptr; +- fileName = nullptr; +- tmpBuf = nullptr; +- fontLoc = nullptr; + + gfxFont = state->getFont(); + if (!gfxFont) +@@ -3083,7 +3091,11 @@ void SlaOutputDev::updateFont(GfxState *state) + } + else + { // gfxFontLocExternal ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ fileName = fontLoc->pathAsGooString(); ++#else + fileName = fontLoc->path; ++#endif + fontType = fontLoc->fontType; + } + +@@ -3136,9 +3148,14 @@ void SlaOutputDev::updateFont(GfxState *state) + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); + if (ff) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ codeToGID = ((Gfx8BitFont*) gfxFont)->getCodeToGIDMap(ff.get()); ++ ff.reset(); ++#else + codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff); +- n = 256; + delete ff; ++#endif ++ n = 256; + } + else + { +@@ -3209,8 +3226,13 @@ void SlaOutputDev::updateFont(GfxState *state) + ff = FoFiTrueType::make(tmpBuf, tmpBufLen); + if (! ff) + goto err2; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0) ++ codeToGID = ((GfxCIDFont*) gfxFont)->getCodeToGIDMap(ff.get(), &n); ++ ff.reset(); ++#else + codeToGID = ((GfxCIDFont *)gfxFont)->getCodeToGIDMap(ff, &n); + delete ff; ++#endif + } + if (!(fontFile = m_fontEngine->loadTrueTypeFont( + id, +@@ -3247,14 +3269,19 @@ void SlaOutputDev::updateFont(GfxState *state) + mat[3] = -m22; + m_font = m_fontEngine->getFont(fontFile, mat, matrix); + ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(22, 2, 0) + delete fontLoc; ++#endif + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); + return; + + err2: + delete id; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(22, 2, 0) + delete fontLoc; ++#endif ++ + err1: + if (fontsrc && !fontsrc->isFile) + fontsrc->unref(); diff --git a/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch b/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch new file mode 100644 index 0000000000..73beac2d70 --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.8-poppler-22.2.0-2.patch @@ -0,0 +1,28 @@ +From f75c1613db67f4067643d0218a2db3235e42ec9f Mon Sep 17 00:00:00 2001 +From: Jean Ghali +Date: Thu, 3 Feb 2022 19:46:13 +0000 +Subject: [PATCH] Small update vs latest code in poppler + +git-svn-id: svn://scribus.net/trunk/Scribus@24885 11d20701-8431-0410-a711-e3c959e3b870 +--- + scribus/plugins/import/pdf/slaoutput.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +index 3650c96f52..a6f4e00fa9 100644 +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -3072,10 +3072,10 @@ void SlaOutputDev::updateFont(GfxState *state) + delete id; + else + { +- if (!(fontLoc = gfxFont->locateFont(xref, nullptr))) ++ fontLoc = gfxFont->locateFont((xref) ? xref : pdfDoc->getXRef(), nullptr); ++ if (!fontLoc) + { +- error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", +- gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); ++ error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); + goto err2; + } + diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm index de598ac2f4..ba32361575 100644 --- a/gnu/packages/scribus.scm +++ b/gnu/packages/scribus.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2018 Ricardo Wurmus +;;; Copyright © 2015, 2018, 2023 Ricardo Wurmus ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2017, 2018, 2021, 2022 Nicolas Goaziou ;;; Copyright © 2018 Clément Lassieur @@ -57,12 +57,19 @@ (define-public scribus (uri (string-append "mirror://sourceforge/scribus/scribus-devel/" version "/scribus-" version ".tar.xz")) (sha256 - (base32 "0x3bw58v920akca8jxvsfwf468pzjyglk93ay67ph1bdry7nx0a7")))) + (base32 "0x3bw58v920akca8jxvsfwf468pzjyglk93ay67ph1bdry7nx0a7")) + (patches + (search-patches "scribus-1.5.8-poppler-22.2.0-1.patch" + "scribus-1.5.8-poppler-22.2.0-2.patch" + "scribus-1.5.8-poppler-22.03.0.patch" + "scribus-1.5.8-poppler-22.04.0.patch" + "scribus-1.5.8-poppler-22.09.0.patch")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test target #:configure-flags - '("-DWANT_GRAPHICSMAGICK=1"))) + '("-DWANT_GRAPHICSMAGICK=1" + "-DWANT_CPP17=ON"))) (inputs (list boost cairo