Index | Thread | Search

From:
Matthias Kilian <kili@outback.escape.de>
Subject:
fix graphics/inkscape with poppler-25.0.7
To:
rsadowski@openbsd.org
Cc:
ports@openbsd.org
Date:
Mon, 7 Jul 2025 22:54:16 +0200

Download raw body.

Thread
  • Matthias Kilian:

    fix graphics/inkscape with poppler-25.0.7

Hi,

this fixes inkscape with the new poppler.

ok?

Ciao,
	Kili

Index: patches/patch-src_extension_internal_pdfinput_pdf-parser_cpp
===================================================================
RCS file: /cvs/ports/graphics/inkscape/patches/patch-src_extension_internal_pdfinput_pdf-parser_cpp,v
diff -u -p -r1.24 patch-src_extension_internal_pdfinput_pdf-parser_cpp
--- patches/patch-src_extension_internal_pdfinput_pdf-parser_cpp	19 Jun 2025 20:16:35 -0000	1.24
+++ patches/patch-src_extension_internal_pdfinput_pdf-parser_cpp	7 Jul 2025 20:47:50 -0000
@@ -1,6 +1,6 @@
-Fix build with poppler-25.06.
+Fix build with poppler-25.06 and 25.07.
 
-From upstream commit 1fdfb889bba9ee146c8b826e97bc58a88cb1e529.
+Partially from upstream commit 1fdfb889bba9ee146c8b826e97bc58a88cb1e529.
 
 Index: src/extension/internal/pdfinput/pdf-parser.cpp
 --- src/extension/internal/pdfinput/pdf-parser.cpp.orig
@@ -79,3 +79,12 @@ Index: src/extension/internal/pdfinput/p
                      }
                  } else {
                      error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group");
+@@ -2316,7 +2319,7 @@ void PdfParser::doShowText(GooString *s) {
+                          dx, dy, ax, ay, tOriginX, tOriginY, code, n, u, uLen);
+ 
+         // Move onto next unicode character.
+-        state->shift(tdx, tdy);
++        state->textShiftWithUserCoords(tdx, tdy);
+         p += n;
+         len -= n;
+     }
Index: patches/patch-src_extension_internal_pdfinput_poppler-cairo-font-engine_cpp
===================================================================
RCS file: patches/patch-src_extension_internal_pdfinput_poppler-cairo-font-engine_cpp
diff -N patches/patch-src_extension_internal_pdfinput_poppler-cairo-font-engine_cpp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_extension_internal_pdfinput_poppler-cairo-font-engine_cpp	7 Jul 2025 20:47:50 -0000
@@ -0,0 +1,58 @@
+Fix build with poppler-25.07.
+
+Index: src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+--- src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp.orig
++++ src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -318,7 +318,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+ #endif
+     char **enc;
+     const char *name;
+-    FoFiType1C *ff1c;
++    std::unique_ptr<FoFiType1C> ff1c;
+     std::optional<FreeTypeFontFace> font_face;
+     std::vector<int> codeToGID;
+     bool substitute = false;
+@@ -429,7 +429,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+                 FoFiTrueType *ff;
+ #endif
+                 if (!font_data.empty()) {
+-                    ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++                    ff = FoFiTrueType::make(std::span(font_data), 0);
+                 } else {
+                     ff = FoFiTrueType::load(fileName.c_str(), 0);
+                 }
+@@ -459,7 +459,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+             FoFiTrueType *ff;
+ #endif
+             if (!font_data.empty()) {
+-                ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++                ff = FoFiTrueType::make(std::span(font_data), 0);
+             } else {
+                 ff = FoFiTrueType::load(fileName.c_str(), 0);
+             }
+@@ -493,7 +493,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+         case fontCIDType0C:
+             if (!useCIDs) {
+                 if (!font_data.empty()) {
+-                    ff1c = FoFiType1C::make((fontchar)font_data.data(), font_data.size());
++                    ff1c = FoFiType1C::make(std::span(font_data));
+                 } else {
+                     ff1c = FoFiType1C::load(fileName.c_str());
+                 }
+@@ -506,7 +506,6 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+                     codeToGID.insert(codeToGID.begin(), src, src + n);
+                     gfree(src);
+ #endif
+-                    delete ff1c;
+                 }
+             }
+ 
+@@ -542,7 +541,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *
+                     FoFiTrueType *ff;
+ #endif
+                     if (!font_data.empty()) {
+-                        ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++                        ff = FoFiTrueType::make(std::span(font_data), 0);
+                     } else {
+                         ff = FoFiTrueType::load(fileName.c_str(), 0);
+                     }