From 716c443e851bd387f9aa25d7f4b635f115b5aede5b2280e08b6aa48abf5821c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Tue, 12 Nov 2024 12:06:37 +0100 Subject: [PATCH] Sync from SUSE:SLFO:Main cairo revision 355b01fae36370651729ed0ff8355e3a --- ...d915f9a67380e7ef9d8746656455c43f67e2.patch | 34 ++++++ cairo-1.17.8-fix-tee-compilation.patch | 110 ------------------ cairo-1.17.8-ft-font-missing-glyph.patch | 62 ---------- cairo-1.17.8.tar.xz | 3 - cairo-1.18.2.tar.xz | 3 + ...tmap_surface-bsc1036789-CVE-2017-7475.diff | 8 +- cairo.changes | 71 +++++++++++ cairo.spec | 17 +-- 8 files changed, 118 insertions(+), 190 deletions(-) create mode 100644 b9eed915f9a67380e7ef9d8746656455c43f67e2.patch delete mode 100644 cairo-1.17.8-fix-tee-compilation.patch delete mode 100644 cairo-1.17.8-ft-font-missing-glyph.patch delete mode 100644 cairo-1.17.8.tar.xz create mode 100644 cairo-1.18.2.tar.xz diff --git a/b9eed915f9a67380e7ef9d8746656455c43f67e2.patch b/b9eed915f9a67380e7ef9d8746656455c43f67e2.patch new file mode 100644 index 0000000..cf766f4 --- /dev/null +++ b/b9eed915f9a67380e7ef9d8746656455c43f67e2.patch @@ -0,0 +1,34 @@ +From f19e2fe080ddcfce93c8234a919fd882f3d63362 Mon Sep 17 00:00:00 2001 +From: Adrian Johnson +Date: Fri, 13 Sep 2024 06:28:39 +0930 +Subject: [PATCH] cff: Don't fail if no local subs + +Fixes: #870 +--- + src/cairo-cff-subset.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c +index 076cb2b0a..8a7de0065 100644 +--- a/src/cairo-cff-subset.c ++++ b/src/cairo-cff-subset.c +@@ -952,9 +952,13 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t *font, + decode_number (operand, nominal_width); + + num_subs = _cairo_array_num_elements (local_sub_index); +- *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t)); +- if (unlikely (*local_subs_used == NULL)) +- return _cairo_error (CAIRO_STATUS_NO_MEMORY); ++ if (num_subs > 0) { ++ *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t)); ++ if (unlikely (*local_subs_used == NULL)) ++ return _cairo_error (CAIRO_STATUS_NO_MEMORY); ++ } else { ++ *local_subs_used = NULL; ++ } + + if (num_subs < 1240) + *local_sub_bias = 107; +-- +GitLab + diff --git a/cairo-1.17.8-fix-tee-compilation.patch b/cairo-1.17.8-fix-tee-compilation.patch deleted file mode 100644 index 52ea4f5..0000000 --- a/cairo-1.17.8-fix-tee-compilation.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 5e42a5277eddafd312a73e355d7775a4401dae4e Mon Sep 17 00:00:00 2001 -From: Emmanuele Bassi -Date: Fri, 3 Feb 2023 15:40:12 +0100 -Subject: [PATCH] tee: Fix cairo wrapper functions - -Follow-up to !391 to apply the same changes to the (disabled by default) -tee surface. - -Fixes: #634 ---- - src/cairo-tee-surface.c | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) - -diff --git a/src/cairo-tee-surface.c b/src/cairo-tee-surface.c -index 7a94c9bca..4994a5a60 100644 ---- a/src/cairo-tee-surface.c -+++ b/src/cairo-tee-surface.c -@@ -220,12 +220,12 @@ _cairo_tee_surface_paint (void *abstract_surface, - num_slaves = _cairo_array_num_elements (&surface->slaves); - slaves = _cairo_array_index (&surface->slaves, 0); - for (n = 0; n < num_slaves; n++) { -- status = _cairo_surface_wrapper_paint (&slaves[n], op, source, clip); -+ status = _cairo_surface_wrapper_paint (&slaves[n], op, source, 0, clip); - if (unlikely (status)) - return status; - } - -- return _cairo_surface_wrapper_paint (&surface->master, op, source, clip); -+ return _cairo_surface_wrapper_paint (&surface->master, op, source, 0, clip); - } - - static cairo_int_status_t -@@ -244,13 +244,17 @@ _cairo_tee_surface_mask (void *abstract_surface, - slaves = _cairo_array_index (&surface->slaves, 0); - for (n = 0; n < num_slaves; n++) { - status = _cairo_surface_wrapper_mask (&slaves[n], -- op, source, mask, clip); -+ op, source, 0, -+ mask, 0, -+ clip); - if (unlikely (status)) - return status; - } - - return _cairo_surface_wrapper_mask (&surface->master, -- op, source, mask, clip); -+ op, source, 0, -+ mask, 0, -+ clip); - } - - static cairo_int_status_t -@@ -274,7 +278,7 @@ _cairo_tee_surface_stroke (void *abstract_surface, - slaves = _cairo_array_index (&surface->slaves, 0); - for (n = 0; n < num_slaves; n++) { - status = _cairo_surface_wrapper_stroke (&slaves[n], -- op, source, -+ op, source, 0, - path, style, - ctm, ctm_inverse, - tolerance, antialias, -@@ -284,7 +288,7 @@ _cairo_tee_surface_stroke (void *abstract_surface, - } - - return _cairo_surface_wrapper_stroke (&surface->master, -- op, source, -+ op, source, 0, - path, style, - ctm, ctm_inverse, - tolerance, antialias, -@@ -310,7 +314,7 @@ _cairo_tee_surface_fill (void *abstract_surface, - slaves = _cairo_array_index (&surface->slaves, 0); - for (n = 0; n < num_slaves; n++) { - status = _cairo_surface_wrapper_fill (&slaves[n], -- op, source, -+ op, source, 0, - path, fill_rule, - tolerance, antialias, - clip); -@@ -319,7 +323,7 @@ _cairo_tee_surface_fill (void *abstract_surface, - } - - return _cairo_surface_wrapper_fill (&surface->master, -- op, source, -+ op, source, 0, - path, fill_rule, - tolerance, antialias, - clip); -@@ -361,7 +365,7 @@ _cairo_tee_surface_show_text_glyphs (void *abstract_surface, - for (n = 0; n < num_slaves; n++) { - memcpy (glyphs_copy, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - status = _cairo_surface_wrapper_show_text_glyphs (&slaves[n], op, -- source, -+ source, 0, - utf8, utf8_len, - glyphs_copy, num_glyphs, - clusters, num_clusters, -@@ -374,7 +378,7 @@ _cairo_tee_surface_show_text_glyphs (void *abstract_surface, - - memcpy (glyphs_copy, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - status = _cairo_surface_wrapper_show_text_glyphs (&surface->master, op, -- source, -+ source, 0, - utf8, utf8_len, - glyphs_copy, num_glyphs, - clusters, num_clusters, --- -GitLab - - diff --git a/cairo-1.17.8-ft-font-missing-glyph.patch b/cairo-1.17.8-ft-font-missing-glyph.patch deleted file mode 100644 index 320b5d6..0000000 --- a/cairo-1.17.8-ft-font-missing-glyph.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 2766d9feeccd5d66e346b0abab38726b8e0aa1e9 Mon Sep 17 00:00:00 2001 -From: Adrian Johnson -Date: Tue, 7 Mar 2023 19:40:21 +1030 -Subject: [PATCH] ft: Use normal font size when detecting the format - -The format may depend on the font size. - -Fixes #643 ---- - src/cairo-ft-font.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c -index 22a6a622b..89af6193d 100644 ---- a/src/cairo-ft-font.c -+++ b/src/cairo-ft-font.c -@@ -3314,11 +3314,13 @@ _cairo_ft_scaled_glyph_init_metrics (cairo_ft_scaled_font_t *scaled_font, - if (scaled_font->unscaled->have_color && scaled_font->base.options.color_mode != CAIRO_COLOR_MODE_NO_COLOR) - color_flag = FT_LOAD_COLOR; - #endif -+ /* Ensure use_em_size = FALSE as the format (bitmap or outline) -+ * may change with the size. */ - status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, - scaled_glyph, - face, - load_flags | color_flag, -- !hint_metrics, -+ FALSE, - vertical_layout); - if (unlikely (status)) - return status; -@@ -3344,6 +3346,18 @@ _cairo_ft_scaled_glyph_init_metrics (cairo_ft_scaled_font_t *scaled_font, - glyph_priv->format = CAIRO_FT_GLYPH_TYPE_BITMAP; - } - -+ /* If hinting is off, load the glyph with font size set the the em size. */ -+ if (!hint_metrics) { -+ status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, -+ scaled_glyph, -+ face, -+ load_flags | color_flag, -+ TRUE, -+ vertical_layout); -+ if (unlikely (status)) -+ return status; -+ } -+ - _cairo_ft_scaled_glyph_get_metrics (scaled_font, - face, - vertical_layout, -@@ -3369,6 +3383,7 @@ _cairo_ft_scaled_glyph_init_metrics (cairo_ft_scaled_font_t *scaled_font, - } - - if (glyph_priv->format == CAIRO_FT_GLYPH_TYPE_COLR_V1) { -+ /* Restore font size if previously loaded at em_size. */ - if (!hint_metrics) { - status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, - scaled_glyph, --- -GitLab - - diff --git a/cairo-1.17.8.tar.xz b/cairo-1.17.8.tar.xz deleted file mode 100644 index d6aba7f..0000000 --- a/cairo-1.17.8.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5b10c8892d1b58d70d3f0ba5b47863a061262fa56b9dc7944161f8c8b783bc64 -size 33392240 diff --git a/cairo-1.18.2.tar.xz b/cairo-1.18.2.tar.xz new file mode 100644 index 0000000..4c23b82 --- /dev/null +++ b/cairo-1.18.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a62b9bb42425e844cc3d6ddde043ff39dbabedd1542eba57a2eb79f85889d45a +size 32574256 diff --git a/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff b/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff index adb2002..e13fae5 100644 --- a/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff +++ b/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff @@ -1,8 +1,8 @@ -Index: cairo-1.17.6/src/cairo-ft-font.c +Index: cairo-1.18.0/src/cairo-ft-font.c =================================================================== ---- 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 +--- cairo-1.18.0.orig/src/cairo-ft-font.c ++++ cairo-1.18.0/src/cairo-ft-font.c +@@ -1233,7 +1233,7 @@ _get_bitmap_surface (FT_Bitmap *bi width = bitmap->width; height = bitmap->rows; diff --git a/cairo.changes b/cairo.changes index 05fa2f5..caac2ad 100644 --- a/cairo.changes +++ b/cairo.changes @@ -1,3 +1,74 @@ +------------------------------------------------------------------- +Fri Sep 20 07:40:13 UTC 2024 - Bjørn Lie + +- Add b9eed915f9a67380e7ef9d8746656455c43f67e2.patch: cff: Don't + fail if no local subs. Fix regression when writing PDFs with + fonts. + +------------------------------------------------------------------- +Mon Sep 2 16:35:56 UTC 2024 - Bjørn Lie + +- Update to version 1.18.2: + + The malloc-stats code has been removed from the tests directory + the canonical location for it is: + https://github.com/behdad/malloc-stats + + Cairo now requires a version of pixman equal to, or newer than, + 0.40. + + There have been multiple build fixes for newer versions of GCC + for MSVC; for Solaris; and on macOS 10.7. + + PNG errors caused by loading malformed data are correctly + propagated to callers, so they can handle the case. + + Both stroke and fill colors are now set when showing glyphs on + a PDF surface. + + All the font options are copied when creating a fallback font + object. + + When drawing text on macOS, Cairo now tries harder to select + the appropriate font name. + + Cairo now prefers the COLRv1 table inside a font, if one is + available. + + Cairo requires a C11 toolchain when building. + +------------------------------------------------------------------- +Sat Sep 23 17:18:14 UTC 2023 - Bjørn Lie + +- Update to version 1.18.0: + + The first stable cairo release in five years should be cause + for celebration. + + All the API added in the 1.17 development cycle is now + considered stable, and will not change. + + Many thanks to all the contributors for this release. + + The cairo-sphinx tool has been removed; we could not find any + instruction on how to use it, and no user answered our call for + help. If you were using cairo-sphinx, please reach out to the + cairo maintainers. + + Cairo now implements Type 3 color fonts for PDF. + + Multiple documentation fixes, to ensure that the cairo API + reference is up to date. Also fixed multiple compiler warnings + generated when building cairo. + + The XML surface has been removed; it was disabled by default + when building cairo, and we could not find any downstream + distributor that would enable it. + + The Tee surface is now automatically enabled. Downstream + distributors of cairo have been enabling for years it in order + to build Firefox. + + Fixed multiple issues with the DWrite font backend. + + Improved the Quartz surface; mainly, Quartz surfaces now use + the main display ColorSpace, speeding up rendering operations. + + Cairo now hides all private symbols by default on every + platform; the old "slim" symbols hack to alias internally used + symbols has been dropped, in favor of using + `-Bsymbolic-functions` with toolchains that support it. + + Fixed multiple memory leaks in the code base and test suite, + and general maintenance. + + Added new API to expose the Pixman dithering filter to cairo + patterns; this is currently implemented only for image + surfaces. +- Drop patches fixed upstream: + + cairo-1.17.8-fix-tee-compilation.patch + + cairo-1.17.8-ft-font-missing-glyph.patch +- Rebase patches with quilt. +- Stop passing xml=disabled to meson setup, xml backend is dropped. + ------------------------------------------------------------------- Fri Mar 17 13:27:04 UTC 2023 - Bjørn Lie diff --git a/cairo.spec b/cairo.spec index d1e9562..e97bdb7 100644 --- a/cairo.spec +++ b/cairo.spec @@ -1,7 +1,7 @@ # # spec file for package cairo # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,23 +19,21 @@ %define build_xcb_backend 1 Name: cairo -Version: 1.17.8 +Version: 1.18.2 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/snapshots/%{name}-%{version}.tar.xz +URL: https://cairographics.org +Source0: %{url}/releases/%{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-1.17.8-fix-tee-compilation.patch -- https://gitlab.freedesktop.org/cairo/cairo/-/issues/634 tee: Fix cairo wrapper functions -Patch2: cairo-1.17.8-fix-tee-compilation.patch -# PATCH-FIX-UPSTREAM cairo-1.17.8-ft-font-missing-glyph.patch -- https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/467 ft: Use normal font size when detecting the format -Patch3: cairo-1.17.8-ft-font-missing-glyph.patch +# PATCH-FIX-UPSTREAM b9eed915f9a67380e7ef9d8746656455c43f67e2.patch -- cff: Don't fail if no local subs. Fix regression when writing PDFs with fonts +Patch2: https://gitlab.freedesktop.org/cairo/cairo/-/commit/b9eed915f9a67380e7ef9d8746656455c43f67e2.patch BuildRequires: c++_compiler BuildRequires: c_compiler @@ -158,7 +156,6 @@ cairo. -D tee=enabled \ -D tests=disabled \ -D xlib=enabled \ - -D xml=disabled %{nil} %meson_build @@ -182,11 +179,9 @@ cairo. %files tools %license util/cairo-trace/COPYING util/cairo-trace/COPYING-GPL-3 -%{_bindir}/cairo-sphinx %{_bindir}/cairo-trace %dir %{_libdir}/cairo %{_libdir}/cairo/libcairo-fdr.so -%{_libdir}/cairo/libcairo-sphinx.so %{_libdir}/cairo/libcairo-trace.so %files devel