commit: b780bd09c85487f523fb692847b569ec84957424 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Tue Jul 8 16:00:02 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Tue Jul 8 16:03:08 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b780bd09
media-gfx/inkscape: Fix build w/ >=app-text/poppler-25.07.0 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> .../files/inkscape-1.4-poppler-25.07.0.patch | 135 +++++++++++++++++++++ media-gfx/inkscape/inkscape-1.4-r2.ebuild | 7 +- 2 files changed, 138 insertions(+), 4 deletions(-) diff --git a/media-gfx/inkscape/files/inkscape-1.4-poppler-25.07.0.patch b/media-gfx/inkscape/files/inkscape-1.4-poppler-25.07.0.patch new file mode 100644 index 000000000000..a4f9c38fa4b0 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4-poppler-25.07.0.patch @@ -0,0 +1,135 @@ +https://gitlab.com/inkscape/inkscape/-/merge_requests/7321 + +From 7f4f106b5438be1546052ebeebcfe3e8196d5884 Mon Sep 17 00:00:00 2001 +From: KrIr17 <[email protected]> +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, 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 + diff --git a/media-gfx/inkscape/inkscape-1.4-r2.ebuild b/media-gfx/inkscape/inkscape-1.4-r2.ebuild index e851b5105a39..75fffc59b967 100644 --- a/media-gfx/inkscape/inkscape-1.4-r2.ebuild +++ b/media-gfx/inkscape/inkscape-1.4-r2.ebuild @@ -115,10 +115,9 @@ DEPEND="${COMMON_DEPEND} PATCHES=( "${FILESDIR}"/${PN}-1.4-gcc15.patch "${FILESDIR}"/${PN}-1.4-poppler-24.10-fix-backport.patch - "${FILESDIR}"/${P}-poppler-24.11.0.patch # bug 943499 - "${FILESDIR}"/${P}-poppler-24.12.0.patch # bug 946597 - "${FILESDIR}"/${P}-poppler-25.02.0.patch # bug 949531 - "${FILESDIR}"/${P}-poppler-25.06.0.patch # bug 957137, pending for 1.4.3 + "${FILESDIR}"/${P}-poppler-24.{11,12}.0.patch # bugs 943499, 946597 + "${FILESDIR}"/${P}-poppler-25.{02,06}.0.patch # bugs 949531, 957137 + "${FILESDIR}"/${P}-poppler-25.07.0.patch # pending for git master "${FILESDIR}"/${P}-cmake4.patch )
