File 0001-Fix-build-with-poppler-25.10.0.patch of Package scribus
From 325d840f0c4525b4207e29573930d70a86dc8b7c Mon Sep 17 00:00:00 2001
From: Jean Ghali <jghali@libertysurf.fr>
Date: Sat, 4 Oct 2025 14:48:01 +0000
Subject: [PATCH] #17638: Fix failure to build with poppler 25.10.0
git-svn-id: svn://scribus.net/branches/Version16x/Scribus@27041 11d20701-8431-0410-a711-e3c959e3b870
---
scribus/plugins/import/pdf/importpdf.cpp | 39 ++++++++++++++++++++++++
scribus/plugins/import/pdf/slaoutput.cpp | 36 ++++++++++++++++++++++
2 files changed, 75 insertions(+)
diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp
index af02f49..d340160 100644
--- a/scribus/plugins/import/pdf/importpdf.cpp
+++ b/scribus/plugins/import/pdf/importpdf.cpp
@@ -928,6 +928,44 @@ QRectF PdfPlug::getCBox(int box, int pgNum)
QString PdfPlug::UnicodeParsedString(const GooString *s1)
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 10, 0)
+ if (!s1 || s1->size() == 0)
+ return QString();
+ bool isUnicode;
+ int i;
+ Unicode u;
+ QString result;
+ if ((s1->getChar(0) & 0xff) == 0xfe && (s1->size() > 1 && (s1->getChar(1) & 0xff) == 0xff))
+ {
+ isUnicode = true;
+ i = 2;
+ result.reserve((s1->size() - 2) / 2);
+ }
+ else
+ {
+ isUnicode = false;
+ i = 0;
+ result.reserve(s1->size());
+ }
+ while (i < s1->size())
+ {
+ if (isUnicode)
+ {
+ u = ((s1->getChar(i) & 0xff) << 8) | (s1->getChar(i + 1) & 0xff);
+ i += 2;
+ }
+ else
+ {
+ u = s1->getChar(i) & 0xff;
+ ++i;
+ }
+ // #15616: imagemagick may write unicode strings incorrectly in PDF
+ if (u == 0)
+ continue;
+ result += QChar(u);
+ }
+ return result;
+#else
if (!s1 || s1->getLength() == 0)
return QString();
bool isUnicode;
@@ -964,6 +1002,7 @@ QString PdfPlug::UnicodeParsedString(const GooString *s1)
result += QChar( u );
}
return result;
+#endif
}
QString PdfPlug::UnicodeParsedString(const std::string& s1)
diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp
index 4a71f82..c75fc27 100644
--- a/scribus/plugins/import/pdf/slaoutput.cpp
+++ b/scribus/plugins/import/pdf/slaoutput.cpp
@@ -4087,6 +4087,41 @@ void SlaOutputDev::pushGroup(const QString& maskName, bool forSoftMask, bool alp
QString SlaOutputDev::UnicodeParsedString(const GooString *s1) const
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 10, 0)
+ if (!s1 || s1->size() == 0)
+ return QString();
+ bool isUnicode;
+ int i;
+ Unicode u;
+ QString result;
+ if ((s1->getChar(0) & 0xff) == 0xfe && (s1->size() > 1 && (s1->getChar(1) & 0xff) == 0xff))
+ {
+ isUnicode = true;
+ i = 2;
+ result.reserve((s1->size() - 2) / 2);
+ }
+ else
+ {
+ isUnicode = false;
+ i = 0;
+ result.reserve(s1->size());
+ }
+ while (i < s1->size())
+ {
+ if (isUnicode)
+ {
+ u = ((s1->getChar(i) & 0xff) << 8) | (s1->getChar(i + 1) & 0xff);
+ i += 2;
+ }
+ else
+ {
+ u = s1->getChar(i) & 0xff;
+ ++i;
+ }
+ result += QChar(u);
+ }
+ return result;
+#else
if (!s1 || s1->getLength() == 0)
return QString();
bool isUnicode;
@@ -4120,6 +4155,7 @@ QString SlaOutputDev::UnicodeParsedString(const GooString *s1) const
result += QChar( u );
}
return result;
+#endif
}
QString SlaOutputDev::UnicodeParsedString(const std::string& s1) const
--
2.51.0