File ce52c5f96106ae5747171663a46831f21aa52d95.patch of Package inkscape
From ce52c5f96106ae5747171663a46831f21aa52d95 Mon Sep 17 00:00:00 2001
From: KrIr17 <elendil.krir17@gmail.com>
Date: Sun, 6 Jul 2025 15:42:13 +0200
Subject: [PATCH] Fix building with Poppler 25.07.0
Fix building issues with
1. [`GfxState::shift()`](https://gitlab.freedesktop.org/poppler/poppler/-/commit/71bf5552d448a6fdb666f2b61764b61ca197617d)
2. [`FoFiTrueType::make` and `FoFiType1C::make`](FoFiTrueType::make)
3. Fix typo from 5c4c6d116dae5250d75d34a45f0d9220824d2e20
---
src/extension/internal/pdfinput/pdf-parser.cpp | 4 ++--
.../pdfinput/poppler-cairo-font-engine.cpp | 16 +++++++++++-----
.../internal/pdfinput/poppler-transition-api.h | 14 ++++++++++++++
3 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
index f46d12f72e5..4071e464a44 100644
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
@@ -2322,11 +2322,11 @@ void PdfParser::doShowText(GooString *s) {
state->textTransformDelta(originX, originY, &tOriginX, &tOriginY);
// In Gfx.cc this is drawChar(...)
- builder->addChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
+ builder->addChar(state, state->_POPPLER_GET_CUR_TEXT_X() + riseX, state->_POPPLER_GET_CUR_TEXT_Y() + riseY,
dx, dy, ax, ay, tOriginX, tOriginY, code, n, u, uLen);
// Move onto next unicode character.
- state->shift(tdx, tdy);
+ state->_POPPLER_TEXT_SHIFT_WITH_USER_COORDS(tdx, tdy);
p += n;
len -= n;
}
diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
index bd1d4e49367..cfc6961f629 100644
--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
@@ -316,7 +316,11 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
#endif
char **enc;
const char *name;
+#if POPPLER_CHECK_VERSION(25, 7, 0)
+ std::unique_ptr<FoFiType1C> ff1c;
+#else
FoFiType1C *ff1c;
+#endif
std::optional<FreeTypeFontFace> font_face;
std::vector<int> codeToGID;
bool substitute = false;
@@ -427,7 +431,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
FoFiTrueType *ff;
#endif
if (!font_data.empty()) {
- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
+ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
} else {
ff = FoFiTrueType::load(fileName.c_str(), 0);
}
@@ -457,7 +461,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
FoFiTrueType *ff;
#endif
if (!font_data.empty()) {
- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
+ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
} else {
ff = FoFiTrueType::load(fileName.c_str(), 0);
}
@@ -491,7 +495,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
case fontCIDType0C:
if (!useCIDs) {
if (!font_data.empty()) {
- ff1c = FoFiType1C::make((fontchar)font_data.data(), font_data.size());
+ ff1c = _POPPLER_FOFI_TYPE1C_MAKE(font_data);
} else {
ff1c = FoFiType1C::load(fileName.c_str());
}
@@ -504,7 +508,9 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
codeToGID.insert(codeToGID.begin(), src, src + n);
gfree(src);
#endif
+#if !(POPPLER_CHECK_VERSION(25, 7, 0))
delete ff1c;
+#endif
}
}
@@ -540,13 +546,13 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
FoFiTrueType *ff;
#endif
if (!font_data.empty()) {
- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
+ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
} else {
ff = FoFiTrueType::load(fileName.c_str(), 0);
}
if (ff) {
if (ff->isOpenTypeCFF()) {
- auto src = ff1c->_POPPLER_GET_CID_TO_GID_MAP(&n);
+ auto src = ff->_POPPLER_GET_CID_TO_GID_MAP(&n);
#if POPPLER_CHECK_VERSION(25,2,0)
codeToGID = std::move(src);
#else
diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
index d04412757bc..866b630bb67 100644
--- a/src/extension/internal/pdfinput/poppler-transition-api.h
+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
@@ -15,6 +15,20 @@
#include <glib/poppler-features.h>
#include <poppler/UTF.h>
+#if POPPLER_CHECK_VERSION(25, 7, 0)
+#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) textShiftWithUserCoords(dx, dy)
+#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make(std::span(font_data), faceIndex)
+#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make(std::span(font_data))
+#define _POPPLER_GET_CUR_TEXT_X() getCurTextX()
+#define _POPPLER_GET_CUR_TEXT_Y() getCurTextY()
+#else
+#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) shift(dx, dy)
+#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), faceIndex)
+#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make((fontchar)font_data.data(), font_data.size())
+#define _POPPLER_GET_CUR_TEXT_X() getCurX()
+#define _POPPLER_GET_CUR_TEXT_Y() getCurY()
+#endif
+
#if POPPLER_CHECK_VERSION(25, 6, 0)
#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector<std::unique_ptr<Function>> name(4)
#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset()
--
GitLab