SHA256
1
0
forked from pool/cairo

Accepting request 1002604 from GNOME:Next

GNOME 43.rc - let's get this into Staging to see what we break (e.g meson:test seems to be an issue already)

OBS-URL: https://build.opensuse.org/request/show/1002604
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/cairo?expand=0&rev=152
This commit is contained in:
Dominique Leuenberger 2022-09-13 07:31:49 +00:00 committed by Git OBS Bridge
parent 1b081d8eae
commit 9c4558f99d
11 changed files with 121 additions and 189 deletions

View File

@ -0,0 +1,56 @@
From 12a5b7384f35d9a3f4c6b151fac4857444db3d6a Mon Sep 17 00:00:00 2001
From: Nikolaus Waxweiler <madigens@gmail.com>
Date: Sat, 10 Nov 2018 16:44:23 +0000
Subject: [PATCH] Set default LCD filter to FreeType's default
---
src/cairo-ft-font.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 325dd61b4..3c47dc12e 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -1404,7 +1404,7 @@ _render_glyph_outline (FT_Face face,
cairo_image_surface_t **surface)
{
int rgba = FC_RGBA_UNKNOWN;
- int lcd_filter = FT_LCD_FILTER_LEGACY;
+ int lcd_filter = FT_LCD_FILTER_DEFAULT;
FT_GlyphSlot glyphslot = face->glyph;
FT_Outline *outline = &glyphslot->outline;
FT_Bitmap bitmap;
@@ -1439,13 +1439,13 @@ _render_glyph_outline (FT_Face face,
case CAIRO_LCD_FILTER_NONE:
lcd_filter = FT_LCD_FILTER_NONE;
break;
- case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_INTRA_PIXEL:
lcd_filter = FT_LCD_FILTER_LEGACY;
break;
case CAIRO_LCD_FILTER_FIR3:
lcd_filter = FT_LCD_FILTER_LIGHT;
break;
+ case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_FIR5:
lcd_filter = FT_LCD_FILTER_DEFAULT;
break;
@@ -3416,7 +3416,6 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options,
case CAIRO_LCD_FILTER_NONE:
lcd_filter = FT_LCD_FILTER_NONE;
break;
- case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_INTRA_PIXEL:
lcd_filter = FT_LCD_FILTER_LEGACY;
break;
@@ -3424,6 +3423,7 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options,
lcd_filter = FT_LCD_FILTER_LIGHT;
break;
default:
+ case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_FIR5:
lcd_filter = FT_LCD_FILTER_DEFAULT;
break;
--
2.19.1

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331
size 41997432

3
cairo-1.17.6.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4eebc4c2bad0402bc3f501db184417094657d111fb6c06f076a82ea191fe1faf
size 35055900

View File

@ -1,30 +0,0 @@
From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001
From: Carlos Garcia Campos <cgarcia@igalia.com>
Date: Mon, 19 Nov 2018 12:33:07 +0100
Subject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in
cairo_ft_apply_variations
Fixes a crash when using freetype >= 2.9
---
src/cairo-ft-font.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 325dd61b4..981973f78 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -2393,7 +2393,11 @@ skip:
done:
free (coords);
free (current_coords);
+#if HAVE_FT_DONE_MM_VAR
+ FT_Done_MM_Var (face->glyph->library, ft_mm_var);
+#else
free (ft_mm_var);
+#endif
}
}
--
2.19.2

View File

@ -1,57 +0,0 @@
From 79ad01724161502e8d9d2bd384ff1f0174e5df6e Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 30 May 2019 07:30:55 -0400
Subject: [PATCH] Fix a thinko in composite_color_glyphs
We can't just move around the contents of the
passed-in string, we need to make a copy. This
was showing up as memory corruption in pango.
See https://gitlab.gnome.org/GNOME/pango/issues/346
---
src/cairo-surface.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index c30f84087..e112b660a 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -2820,6 +2820,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
const cairo_clip_t *clip)
{
cairo_int_status_t status;
+ char *utf8_copy = NULL;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
@@ -2847,6 +2848,10 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
status = CAIRO_INT_STATUS_UNSUPPORTED;
if (_cairo_scaled_font_has_color_glyphs (scaled_font)) {
+ utf8_copy = malloc (sizeof (char) * utf8_len);
+ memcpy (utf8_copy, utf8, sizeof (char) * utf8_len);
+ utf8 = utf8_copy;
+
status = composite_color_glyphs (surface, op,
source,
(char *)utf8, &utf8_len,
@@ -2861,6 +2866,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
if (num_glyphs == 0)
goto DONE;
}
+ else
+ utf8_copy = NULL;
/* The logic here is duplicated in _cairo_analysis_surface show_glyphs and
* show_text_glyphs. Keep in synch. */
@@ -2918,6 +2925,9 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
surface->serial++;
}
+ if (utf8_copy)
+ free (utf8_copy);
+
return _cairo_surface_set_error (surface, status);
}

View File

@ -1,44 +0,0 @@
From 4f4d89506f58a64b4829b1bb239bab9e46d63727 Mon Sep 17 00:00:00 2001
From: Jehan <jehan@girinstud.io>
Date: Tue, 19 Jan 2021 12:42:31 +0100
Subject: [PATCH] src: do not override explicitly requested grayscale
antialiasing.
If CAIRO_ANTIALIAS_DEFAULT is selected and system is set to subpixel, it
is perfectly normal to switch to CAIRO_ANTIALIAS_SUBPIXEL.
But when the calling application specifically requested
CAIRO_ANTIALIAS_GRAY then Cairo should honor the request.
This is an issue we have had for years in GIMP, where text on images
would render differently depending on the system the file is opened on.
This is obviously not right as a graphics work should be system
independant and allow the creator to decide if one wants a text to have
grayscale or subpixel rendering (a settings which would stick when
sharing the work file). Cairo should not override this.
The CAIRO_ANTIALIAS_DEFAULT settings exists exactly for this (when we
want Cairo to choose for us, in a system-dependant way); other settings
are when we need system independance.
Thanks to Adam Fontenot for initial investigations and tests on this and
other contributors before this.
---
src/cairo-ft-font.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index d2221edec..1f5befec3 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -1945,8 +1945,7 @@ _cairo_ft_options_merge (cairo_ft_options_t *options,
}
if (other->base.antialias == CAIRO_ANTIALIAS_SUBPIXEL &&
- (options->base.antialias == CAIRO_ANTIALIAS_DEFAULT ||
- options->base.antialias == CAIRO_ANTIALIAS_GRAY)) {
+ options->base.antialias == CAIRO_ANTIALIAS_DEFAULT) {
options->base.antialias = CAIRO_ANTIALIAS_SUBPIXEL;
options->base.subpixel_order = other->base.subpixel_order;
}
--
2.33.1

View File

@ -1,8 +1,8 @@
Index: cairo-1.15.4/src/cairo-ft-font.c
Index: cairo-1.17.6/src/cairo-ft-font.c
===================================================================
--- cairo-1.15.4.orig/src/cairo-ft-font.c
+++ cairo-1.15.4/src/cairo-ft-font.c
@@ -1149,7 +1149,7 @@ _get_bitmap_surface (FT_Bitmap *bi
--- cairo-1.17.6.orig/src/cairo-ft-font.c
+++ cairo-1.17.6/src/cairo-ft-font.c
@@ -1223,7 +1223,7 @@ _get_bitmap_surface (FT_Bitmap *bi
width = bitmap->width;
height = bitmap->rows;

View File

@ -1,29 +0,0 @@
From 4c8813f0eaacc32c27126ad2296951a626300b89 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Thu, 25 Oct 2018 18:46:17 +1030
Subject: [PATCH] pdf: add missing flush
Issue #342
---
src/cairo-pdf-surface.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index 7eb61aa..939b2d2 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -7711,6 +7711,11 @@ _cairo_pdf_surface_mask (void *abstract_surface,
* and most common, case to handle. */
if (_cairo_pattern_is_constant_alpha (mask, &extents.bounded, &alpha) &&
_can_paint_pattern (source)) {
+
+ status = _cairo_pdf_operators_flush (&surface->pdf_operators);
+ if (unlikely (status))
+ goto cleanup;
+
_cairo_output_stream_printf (surface->output, "q\n");
status = _cairo_pdf_surface_paint_pattern (surface,
op,
--
2.25.0

View File

@ -1,6 +1,8 @@
--- cairo/src/cairo-xlib-render-compositor.c 2013-04-12 11:22:48.010384018 +0200
+++ cairo/src/cairo-xlib-render-compositor.c.new 2013-04-12 11:23:54.362925287 +0200
@@ -1318,10 +1318,10 @@
Index: cairo-1.17.6/src/cairo-xlib-render-compositor.c
===================================================================
--- cairo-1.17.6.orig/src/cairo-xlib-render-compositor.c
+++ cairo-1.17.6/src/cairo-xlib-render-compositor.c
@@ -1325,10 +1325,10 @@ _cairo_xlib_surface_add_glyph (cairo_xli
}
n = new;
d = (uint32_t *) data;

View File

@ -1,3 +1,44 @@
-------------------------------------------------------------------
Wed Aug 31 18:23:24 UTC 2022 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 1.17.6:
+ This snapshot sees the removal of the following backends and
platform support: Qt4, BeOS, OS/2, DirectFB, DRM, Cogl, OpenVG.
+ Thanks to all past contributors for their work on them. If you
were using any of these backends then you will need to stick to
Cairo 1.16.
+ This snapshot is going to be the **last** release of Cairo with
the Autotools build system. The Meson build has seen many
improvements and it is considerably easier to maintain and
faster to build.
- Changes from version 1.17.4:
+ A particularly noteworthy improvement in this release is the
addition of the meson build system as an alternative to
autotools.
+ The cogl Cairo backend underwent significant development this
cycle.
+ Subpixel positioning support allows improved glyph outlines
with the Freetype font backend.
+ For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.17.4
- Changes from version 1.17.2:
+ This snapshot provides the new support for writing floating
point formats as 16 bpc PNGs, with support for RGBA128F and
RGB96F formats. This new feature increases Cairo's pixman
version requirement to 0.36.0.
+ Beyond this are a range of bugfixes.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.17.2
- Drop patches fixed upstream:
+ cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch
+ cairo-composite_color_glyphs.patch
+ cairo-pdf-add-missing-flush.patch
+ cairo-do-not-override-explicitly-requested-grayscale-aa.patch
- Rebase remaining patches with quilt.
- Add 0001-Set-default-LCD-filter-to-FreeType-s-default.patch: Set
default LCD filter to FreeType's default (patch merged upstream).
- Use ldconfig_scriptlets macro for post(un) handling.
-------------------------------------------------------------------
Fri Oct 22 09:24:48 UTC 2021 - Ferdinand Thiessen <rpm@fthiessen.de>

View File

@ -1,7 +1,7 @@
#
# spec file for package cairo
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -19,33 +19,29 @@
%define build_xcb_backend 1
%define build_gl_backend 1
Name: cairo
Version: 1.16.0
Version: 1.17.6
Release: 0
Summary: Vector Graphics Library with Cross-Device Output Support
License: LGPL-2.1-or-later OR MPL-1.1
Group: Development/Libraries/C and C++
URL: https://cairographics.org/
Source0: https://cairographics.org/releases/%{name}-%{version}.tar.xz
Source0: https://download.gnome.org/sources/cairo/1.17/%{name}-%{version}.tar.xz
Source99: baselibs.conf
# PATCH-FIX-UPSTREAM cairo-xlib-endianness.patch fdo#63461 bnc#882951 fcrozat@suse.com -- Fix crash when client and server have different endianness
Patch0: cairo-xlib-endianness.patch
# PATCH-FIX-UPSTREAM cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff alarrosa@suse.com -- Fix segfault in get_bitmap_surface
Patch1: cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff
# PATCH-FIX-UPSTREAM cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch -- ft: Use FT_Done_MM_Var instead of free when available in cairo_ft_apply_variations
Patch2: cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch
# PATCH-FIX-UPSTREAM cairo-composite_color_glyphs.patch -- Fix a thinko in composite_color_glyphs
Patch3: cairo-composite_color_glyphs.patch
# PATCH-FIX-UPSTREAM cairo-pdf-add-missing-flush.patch - fix pdf generation (upstream issue #342)
Patch4: cairo-pdf-add-missing-flush.patch
# PATCH-FIX-UPSTREAM cairo-do-not-override-explicitly-requested-grayscale-aa.patch -- Fix font antialiasing requested by applications
Patch5: cairo-do-not-override-explicitly-requested-grayscale-aa.patch
# PATCH-FIX-UPSTREAM 0001-Set-default-LCD-filter-to-FreeType-s-default.patch -- Set default LCD filter to FreeType's default
Patch2: 0001-Set-default-LCD-filter-to-FreeType-s-default.patch
BuildRequires: gtk-doc
BuildRequires: pkgconfig
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(pixman-1) >= 0.30.0
BuildRequires: pkgconfig(pixman-1) >= 0.36.0
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xrender)
@ -165,18 +161,15 @@ cairo.
--enable-xlib \
--enable-gtk-doc \
--disable-static
make %{?_smp_mflags} V=1
%make_build
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%post -n libcairo2 -p /sbin/ldconfig
%postun -n libcairo2 -p /sbin/ldconfig
%post -n libcairo-gobject2 -p /sbin/ldconfig
%postun -n libcairo-gobject2 -p /sbin/ldconfig
%post -n libcairo-script-interpreter2 -p /sbin/ldconfig
%postun -n libcairo-script-interpreter2 -p /sbin/ldconfig
%ldconfig_scriptlets -n libcairo2
%ldconfig_scriptlets -n libcairo-gobject2
%ldconfig_scriptlets -n libcairo-script-interpreter2
%files -n libcairo2
%license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1