commit:     f54f622af48f39b85a85f8128cfd0675cc408728
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 19 18:00:12 2025 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Sep 19 18:00:45 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f54f622a

media-gfx/inkscape: add 1.4.2

Closes: https://bugs.gentoo.org/956727
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 media-gfx/inkscape/Manifest                        |   1 +
 .../files/inkscape-1.4.2-poppler-25.06.patch       | 123 ++++++++++++
 .../files/inkscape-1.4.2-poppler-25.07.patch       | 135 +++++++++++++
 .../files/inkscape-1.4.2-poppler-25.09.patch       | 109 +++++++++++
 media-gfx/inkscape/inkscape-1.4.2.ebuild           | 208 +++++++++++++++++++++
 5 files changed, 576 insertions(+)

diff --git a/media-gfx/inkscape/Manifest b/media-gfx/inkscape/Manifest
index 451ba470c5b6..a4937dcc621c 100644
--- a/media-gfx/inkscape/Manifest
+++ b/media-gfx/inkscape/Manifest
@@ -1 +1,2 @@
+DIST inkscape-1.4.2.tar.xz 53278452 BLAKE2B 
f42d675c51af7d5c8e01851a5eeb74d03b5b75436eabf25237559839b092b7382d03e388594aae97c511b143680f822940890fa787eab9bf78f1a91838456a49
 SHA512 
e7d69f477d11aee296efe48d3a9dd24f76fd5e64e5f2a29574f387bc681ced3d806d30b0f98d842c485443624dbf31fd9dabdb92848ee852121bc9d9e90191a1
 DIST inkscape-1.4.tar.xz 46321868 BLAKE2B 
3f21402019995122f043f5ebd8f07e1c9548c507f27c494e4214e090c46acae016c21f950609c95cef2e1b0011693e6629326d733b257402391e2d919bcd0303
 SHA512 
3b81306b81416597073e7eda2a103112cee63493bcf96fa737bb1edfbd682ebb329e415bbbbfda877aef2a78dc376460040ebc5c0cc2c90c0fe60db5d7d12368

diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch 
b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch
new file mode 100644
index 000000000000..14f15f04b151
--- /dev/null
+++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch
@@ -0,0 +1,123 @@
+From 93ab3204674e548df3f7bac39a86420eab616ed3 Mon Sep 17 00:00:00 2001
+From: Rafael Siejakowski <[email protected]>
+Date: Sun, 8 Jun 2025 21:30:44 +0200
+Subject: [PATCH 1/3] Fix build against Poppler 25.06
+
+Accommodate for the private API change, whereby an array of pointers
+has been replaced with a vector of unique_ptr.
+
+From https://gitlab.com/inkscape/inkscape/-/merge_requests/7264
+
+Backported from MR 7261
+https://gitlab.com/inkscape/inkscape/-/merge_requests/7261
+
+Fixes https://gitlab.com/inkscape/inkscape/-/issues/5836
+---
+ .../internal/pdfinput/pdf-parser.cpp          | 23 +++++++++++--------
+ .../pdfinput/poppler-transition-api.h         | 12 ++++++++++
+ 2 files changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp 
b/src/extension/internal/pdfinput/pdf-parser.cpp
+index 01d7bf6ef0..0d31eda16f 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -27,6 +27,7 @@
+ #include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
++#include <memory>
+ #include <mutex> // std::call_once()
+ #include <utility>
+ #include <vector>
+@@ -686,7 +687,6 @@ void PdfParser::opSetLineWidth(Object args[], int 
/*numArgs*/)
+ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ {
+     Object obj1, obj2, obj3, obj4, obj5;
+-    Function *funcs[4] = {nullptr, nullptr, nullptr, nullptr};
+     GfxColor backdropColor;
+     GBool haveBackdropColor = gFalse;
+     GBool alpha = gFalse;
+@@ -744,13 +744,14 @@ void PdfParser::opSetExtGState(Object args[], int 
/*numArgs*/)
+         state->setLineWidth(obj2.getNum());
+     }
+ 
++    _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(funcs);
++
+     // transfer function
+     if (_POPPLER_CALL_ARGS_DEREF(obj2, obj1.dictLookup, "TR2").isNull()) {
+         _POPPLER_CALL_ARGS(obj2, obj1.dictLookup, "TR");
+     }
+     if (obj2.isName(const_cast<char *>("Default")) || 
obj2.isName(const_cast<char *>("Identity"))) {
+-        funcs[0] = funcs[1] = funcs[2] = funcs[3] = nullptr;
+-        state->setTransfer(funcs);
++        state->setTransfer(std::move(funcs));
+     } else if (obj2.isArray() && obj2.arrayGetLength() == 4) {
+         int pos = 4;
+         for (int i = 0; i < 4; ++i) {
+@@ -763,12 +764,14 @@ void PdfParser::opSetExtGState(Object args[], int 
/*numArgs*/)
+         }
+         _POPPLER_FREE(obj3);
+         if (pos == 4) {
+-            state->setTransfer(funcs);
++            state->setTransfer(std::move(funcs));
+         }
+     } else if (obj2.isName() || obj2.isDict() || obj2.isStream()) {
+         if ((funcs[0] = Function::parse(&obj2))) {
+-            funcs[1] = funcs[2] = funcs[3] = nullptr;
+-            state->setTransfer(funcs);
++            funcs[1] = nullptr;
++            funcs[2] = nullptr;
++            funcs[3] = nullptr;
++            state->setTransfer(std::move(funcs));
+         }
+     } else if (!obj2.isNull()) {
+         error(errSyntaxError, getPos(), "Invalid transfer function in 
ExtGState");
+@@ -790,8 +793,7 @@ void PdfParser::opSetExtGState(Object args[], int 
/*numArgs*/)
+                 funcs[0] = Function::parse(&obj3);
+                 if (funcs[0]->getInputSize() != 1 || 
funcs[0]->getOutputSize() != 1) {
+                     error(errSyntaxError, getPos(), "Invalid transfer 
function in soft mask in ExtGState");
+-                    delete funcs[0];
+-                    funcs[0] = nullptr;
++                    _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]);
+                 }
+             }
+             _POPPLER_FREE(obj3);
+@@ -835,9 +837,10 @@ void PdfParser::opSetExtGState(Object args[], int 
/*numArgs*/)
+                             }
+                         }
+                     }
+-                    doSoftMask(&obj3, alpha, blendingColorSpace.get(), 
isolated, knockout, funcs[0], &backdropColor);
++                    doSoftMask(&obj3, alpha, blendingColorSpace.get(), 
isolated, knockout,
++                               
_POPPLER_GET_TRANSFER_FUNCTION_POINTER(funcs[0]), &backdropColor);
+                     if (funcs[0]) {
+-                        delete funcs[0];
++                        _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]);
+                     }
+                 } else {
+                     error(errSyntaxError, getPos(), "Invalid soft mask in 
ExtGState - missing group");
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h 
b/src/extension/internal/pdfinput/poppler-transition-api.h
+index a67132ba6b..d04412757b 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -15,6 +15,18 @@
+ #include <glib/poppler-features.h>
+ #include <poppler/UTF.h>
+ 
++#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()
++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name.get()
++#else
++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) Function *name[4] = {}
++#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) \
++    delete name;                                \
++    name = nullptr
++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name
++#endif
++
+ #if POPPLER_CHECK_VERSION(25,2,0)
+ #define _POPPLER_GET_CODE_TO_GID_MAP(ff, len) getCodeToGIDMap(ff)
+ #define _POPPLER_GET_CID_TO_GID_MAP(len) getCIDToGIDMap()
+-- 
+2.49.1
+

diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch 
b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch
new file mode 100644
index 000000000000..6c67ce1127a6
--- /dev/null
+++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch
@@ -0,0 +1,135 @@
+From cf40b0201d18aeb8a0800524eccd93ececc79bda Mon Sep 17 00:00:00 2001
+From: KrIr17 <[email protected]>
+Date: Sun, 6 Jul 2025 15:42:13 +0200
+Subject: [PATCH 2/3] 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
+
+https://gitlab.com/inkscape/inkscape/-/merge_requests/7321
+---
+ 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 0d31eda16f..829c3096f4 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -2315,11 +2315,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 5e1a642625..c2bf90732c 100644
+--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -318,7 +318,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;
+@@ -429,7 +433,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);
+                 }
+@@ -459,7 +463,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);
+             }
+@@ -493,7 +497,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());
+                 }
+@@ -506,7 +510,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
+                 }
+             }
+ 
+@@ -542,13 +548,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 d04412757b..866b630bb6 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()
+-- 
+2.49.1
+

diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch 
b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch
new file mode 100644
index 000000000000..1884afde609e
--- /dev/null
+++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch
@@ -0,0 +1,109 @@
+From acaa8d8d8fca9d7b3ed7f581067dc863012c3522 Mon Sep 17 00:00:00 2001
+From: mike kowalski <[email protected]>
+Date: Tue, 2 Sep 2025 07:17:25 -0700
+Subject: [PATCH 3/3] Fix build with poppler 25.09.0
+
+API changes: double* -> std::array necessitates fixes in Inkscape.
+The goal is to make it build with older poppler versions too.
+---
+ src/extension/internal/pdfinput/pdf-parser.cpp                | 3 +--
+ src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp | 2 +-
+ src/extension/internal/pdfinput/poppler-utils.cpp             | 4 ++++
+ src/extension/internal/pdfinput/poppler-utils.h               | 4 ++++
+ src/extension/internal/pdfinput/svg-builder.cpp               | 4 ++--
+ 5 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp 
b/src/extension/internal/pdfinput/pdf-parser.cpp
+index 829c3096f4..ed8e5c6ab5 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -1652,12 +1652,11 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading 
*shading,
+   GfxColor color0M, color1M, colorM0, colorM1, colorMM;
+   GfxColor colors2[4];
+   double functionColorDelta = colorDeltas[pdfFunctionShading-1];
+-  const double *matrix;
+   double xM, yM;
+   int nComps, i, j;
+ 
+   nComps = shading->getColorSpace()->getNComps();
+-  matrix = shading->getMatrix();
++  const auto& matrix = shading->getMatrix();
+ 
+   // compare the four corner colors
+   for (i = 0; i < 4; ++i) {
+diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 
b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+index c2bf90732c..b53c3cd886 100644
+--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -635,7 +635,7 @@ static cairo_status_t 
_init_type3_glyph(cairo_scaled_font_t *scaled_font, cairo_
+ 
+     info = (type3_font_info_t 
*)cairo_font_face_get_user_data(cairo_scaled_font_get_font_face(scaled_font),
+                                                               
&type3_font_key);
+-    const double *mat = info->font->getFontBBox();
++    const auto& mat = info->font->getFontBBox();
+     extents->ascent = mat[3];   /* y2 */
+     extents->descent = -mat[3]; /* -y1 */
+     extents->height = extents->ascent + extents->descent;
+diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp 
b/src/extension/internal/pdfinput/poppler-utils.cpp
+index ad0dd236a2..5067a6c245 100644
+--- a/src/extension/internal/pdfinput/poppler-utils.cpp
++++ b/src/extension/internal/pdfinput/poppler-utils.cpp
+@@ -38,6 +38,10 @@ Geom::Affine ctmToAffine(const double *ctm)
+     return Geom::Affine(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
+ }
+ 
++Geom::Affine ctmToAffine(const std::array<double, 6>& ctm) {
++    return ctmToAffine(ctm.data());
++}
++
+ void ctmout(const char *label, const double *ctm)
+ {
+     std::cout << "C:" << label << ":" << ctm[0] << "," << ctm[1] << "," << 
ctm[2] << "," << ctm[3] << "," << ctm[4]
+diff --git a/src/extension/internal/pdfinput/poppler-utils.h 
b/src/extension/internal/pdfinput/poppler-utils.h
+index 2bcd307e17..e51d6a9da3 100644
+--- a/src/extension/internal/pdfinput/poppler-utils.h
++++ b/src/extension/internal/pdfinput/poppler-utils.h
+@@ -13,6 +13,7 @@
+ #ifndef POPPLER_UTILS_H
+ #define POPPLER_UTILS_H
+ 
++#include <array>
+ #include <map>
+ #include <memory>
+ #include <string>
+@@ -36,7 +37,10 @@ class Ref;
+ class XRef;
+ 
+ Geom::Affine stateToAffine(GfxState *state);
++// this function is for Poppler older than v25.09.0
+ Geom::Affine ctmToAffine(const double *ctm);
++// this flavor is for Poppler v25.09.0 and above
++Geom::Affine ctmToAffine(const std::array<double, 6>& ctm);
+ 
+ void ctmout(const char *label, const double *ctm);
+ void affout(const char *label, Geom::Affine affine);
+diff --git a/src/extension/internal/pdfinput/svg-builder.cpp 
b/src/extension/internal/pdfinput/svg-builder.cpp
+index a74147d074..167ad2d4de 100644
+--- a/src/extension/internal/pdfinput/svg-builder.cpp
++++ b/src/extension/internal/pdfinput/svg-builder.cpp
+@@ -1025,7 +1025,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern 
*tiling_pattern,
+     pattern_node->setAttribute("patternUnits", "userSpaceOnUse");
+     // Set pattern tiling
+     // FIXME: don't ignore XStep and YStep
+-    const double *bbox = tiling_pattern->getBBox();
++    const auto& bbox = tiling_pattern->getBBox();
+     pattern_node->setAttributeSvgDouble("x", 0.0);
+     pattern_node->setAttributeSvgDouble("y", 0.0);
+     pattern_node->setAttributeSvgDouble("width", bbox[2] - bbox[0]);
+@@ -1255,7 +1255,7 @@ void SvgBuilder::updateFont(GfxState *state, 
std::shared_ptr<CairoFont> cairo_fo
+ 
+     auto new_font_size = state->getFontSize();
+     if (font->getType() == fontType3) {
+-        const double *font_matrix = font->getFontMatrix();
++        const auto& font_matrix = font->getFontMatrix();
+         if (font_matrix[0] != 0.0) {
+             new_font_size *= font_matrix[3] / font_matrix[0];
+         }
+-- 
+2.49.1
+

diff --git a/media-gfx/inkscape/inkscape-1.4.2.ebuild 
b/media-gfx/inkscape/inkscape-1.4.2.ebuild
new file mode 100644
index 000000000000..8de8532c0cca
--- /dev/null
+++ b/media-gfx/inkscape/inkscape-1.4.2.ebuild
@@ -0,0 +1,208 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Remember to check the release notes for a 'Important Changes for Packagers'
+# section, e.g. 
https://inkscape.org/doc/release_notes/1.4/Inkscape_1.4.html#Important_Changes_for_Packagers.
+
+PYTHON_COMPAT=( python3_{10..13} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit cmake flag-o-matic xdg toolchain-funcs python-single-r1
+
+MY_P="${P/_/}"
+DESCRIPTION="SVG based generic vector-drawing program"
+HOMEPAGE="https://inkscape.org/ https://gitlab.com/inkscape/inkscape/";
+
+if [[ ${PV} = 9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://gitlab.com/inkscape/inkscape.git";
+else
+       SRC_URI="https://media.inkscape.org/dl/resources/file/${MY_P}.tar.xz";
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+fi
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+IUSE="cdr dia exif graphicsmagick imagemagick inkjar jpeg openmp postscript 
readline sourceview spell svg2 test visio wpg X"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# Lots of test failures which need investigating, bug #871621
+RESTRICT="!test? ( test ) test"
+
+BDEPEND="
+       dev-util/glib-utils
+       >=sys-devel/gettext-0.17
+       virtual/pkgconfig
+       test? ( virtual/imagemagick-tools )
+"
+COMMON_DEPEND="${PYTHON_DEPS}
+       >=app-text/poppler-0.57.0:=[cairo]
+       >=dev-cpp/cairomm-1.12:0
+       >=dev-cpp/glibmm-2.58:2
+       dev-cpp/gtkmm:3.0
+       >=dev-cpp/pangomm-2.40:1.4
+       >=dev-libs/boehm-gc-7.1:=
+       dev-libs/boost:=[stacktrace(-)]
+       dev-libs/double-conversion:=
+       >=dev-libs/glib-2.41
+       >=dev-libs/libsigc++-2.8:2
+       >=dev-libs/libxml2-2.7.4:=
+       >=dev-libs/libxslt-1.1.25
+       dev-libs/popt
+       media-gfx/potrace
+       media-libs/libepoxy
+       media-libs/fontconfig
+       media-libs/freetype:2
+       media-libs/lcms:2
+       media-libs/libpng:0=
+       sci-libs/gsl:=
+       >=x11-libs/pango-1.44
+       x11-libs/gtk+:3[X?]
+       X? ( x11-libs/libX11 )
+       $(python_gen_cond_dep '
+               dev-python/appdirs[${PYTHON_USEDEP}]
+               dev-python/cachecontrol[${PYTHON_USEDEP}]
+               dev-python/cssselect[${PYTHON_USEDEP}]
+               dev-python/filelock[${PYTHON_USEDEP}]
+               dev-python/lockfile[${PYTHON_USEDEP}]
+               dev-python/lxml[${PYTHON_USEDEP}]
+               dev-python/pillow[jpeg?,tiff,webp,${PYTHON_USEDEP}]
+               dev-python/tinycss2[${PYTHON_USEDEP}]
+               media-gfx/scour[${PYTHON_USEDEP}]
+       ')
+       cdr? (
+               app-text/libwpg:0.3
+               dev-libs/librevenge
+               media-libs/libcdr
+       )
+       exif? ( media-libs/libexif )
+       imagemagick? (
+               !graphicsmagick? ( media-gfx/imagemagick:=[cxx] )
+               graphicsmagick? ( media-gfx/graphicsmagick:=[cxx] )
+       )
+       jpeg? ( media-libs/libjpeg-turbo:= )
+       readline? ( sys-libs/readline:= )
+       sourceview? ( x11-libs/gtksourceview:4 )
+       spell? ( app-text/gspell:= )
+       visio? (
+               app-text/libwpg:0.3
+               dev-libs/librevenge
+               media-libs/libvisio
+       )
+       wpg? (
+               app-text/libwpg:0.3
+               dev-libs/librevenge
+       )
+"
+# These only use executables provided by these packages
+# See share/extensions for more details. inkscape can tell you to
+# install these so we could of course just not depend on those and rely
+# on that.
+RDEPEND="${COMMON_DEPEND}
+       $(python_gen_cond_dep '
+               dev-python/numpy[${PYTHON_USEDEP}]
+       ')
+       dia? ( app-office/dia )
+       postscript? ( app-text/ghostscript-gpl )
+"
+DEPEND="${COMMON_DEPEND}
+       test? ( dev-cpp/gtest )
+"
+
+PATCHES=(
+        "${FILESDIR}"/${P}-poppler-25.{06,07,09}.patch # bugs 949531, 957137, 
962278
+)
+
+pkg_pretend() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+       python-single-r1_pkg_setup
+}
+
+src_unpack() {
+       if [[ ${PV} = 9999* ]]; then
+               git-r3_src_unpack
+       else
+               default
+       fi
+       [[ -d "${S}" ]] || mv -v "${WORKDIR}/${P/_/-}_202"?-??-* "${S}" || die
+}
+
+src_prepare() {
+       cmake_src_prepare
+       sed -i "/install.*COPYING/d" CMakeScripts/ConfigCPack.cmake || die
+}
+
+src_configure() {
+       # ODR violation (https://gitlab.com/inkscape/lib2geom/-/issues/71, bug 
#859628)
+       filter-lto
+       # Aliasing unsafe (bug #310393)
+       append-flags -fno-strict-aliasing
+
+       local mycmakeargs=(
+               # -DWITH_LPETOOL   # Compile with LPE Tool and experimental 
LPEs enabled
+               -DWITH_NLS=ON
+               -DENABLE_POPPLER=ON
+               -DENABLE_POPPLER_CAIRO=ON
+               -DWITH_PROFILING=OFF
+               -DWITH_INTERNAL_2GEOM=ON
+               -DBUILD_TESTING=$(usex test)
+               -DWITH_LIBCDR=$(usex cdr)
+               -DWITH_IMAGE_MAGICK=$(usex imagemagick $(usex !graphicsmagick)) 
# requires ImageMagick 6, only IM must be enabled
+               -DWITH_GRAPHICS_MAGICK=$(usex graphicsmagick $(usex 
imagemagick)) # both must be enabled to use GraphicsMagick
+               -DWITH_GNU_READLINE=$(usex readline)
+               -DWITH_GSPELL=$(usex spell)
+               -DWITH_JEMALLOC=OFF
+               -DENABLE_LCMS=ON
+               -DWITH_OPENMP=$(usex openmp)
+               -DBUILD_SHARED_LIBS=ON
+               -DWITH_GSOURCEVIEW=$(usex sourceview)
+               -DWITH_SVG2=$(usex svg2)
+               -DWITH_LIBVISIO=$(usex visio)
+               -DWITH_LIBWPG=$(usex wpg)
+               -DWITH_X11=$(usex X)
+       )
+
+       cmake_src_configure
+}
+
+src_test() {
+       CMAKE_SKIP_TESTS=(
+               # render_text*: needs patched Cairo / maybe upstream changes
+               # not yet in a release.
+               # test_lpe/test_lpe64: precision differences b/c of new GCC?
+               # cli_export-png-color-mode-gray-8_png_check_output: ditto?
+               render_test-use
+               render_test-glyph-y-pos
+               render_text-glyphs-combining
+               render_text-glyphs-vertical
+               render_test-rtl-vertical
+               test_lpe
+               test_lpe64
+               cli_export-png-color-mode-gray-8_png_check_output
+       )
+
+       # bug #871621
+       cmake_src_compile tests
+       cmake_src_test -j1
+}
+
+src_install() {
+       cmake_src_install
+
+       find "${ED}" -type f -name "*.la" -delete || die
+       find "${ED}"/usr/share/man -type f -maxdepth 3 -name '*.bz2' -exec 
bzip2 -d {} \; || die
+       find "${ED}"/usr/share/man -type f -maxdepth 3 -name '*.gz' -exec gzip 
-d {} \; || die
+
+       local extdir="${ED}"/usr/share/${PN}/extensions
+       if [[ -e "${extdir}" ]] && [[ -n $(find "${extdir}" -mindepth 1) ]]; 
then
+               python_fix_shebang "${ED}"/usr/share/${PN}/extensions
+               python_optimize "${ED}"/usr/share/${PN}/extensions
+       fi
+}

Reply via email to