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

openSUSE Build Service is sponsored by