diff --git a/.gitignore b/.gitignore index 31d93d3..0d0d9fd 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ cairo-1.9.14.tar.gz /cairo-1.17.4.tar.xz /cairo-1.17.6.tar.xz /cairo-1.17.8.tar.xz +/cairo-1.18.0.tar.xz diff --git a/0001-Set-default-LCD-filter-to-FreeType-s-default.patch b/0001-Set-default-LCD-filter-to-FreeType-s-default.patch deleted file mode 100644 index 854eb0e..0000000 --- a/0001-Set-default-LCD-filter-to-FreeType-s-default.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 12a5b7384f35d9a3f4c6b151fac4857444db3d6a Mon Sep 17 00:00:00 2001 -From: Nikolaus Waxweiler -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 - diff --git a/cairo-1.17.6-meson-fixes.patch b/cairo-1.17.6-meson-fixes.patch deleted file mode 100644 index ea02448..0000000 --- a/cairo-1.17.6-meson-fixes.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff -urN cairo-1.17.6.old/doc/public/meson.build cairo-1.17.6/doc/public/meson.build ---- cairo-1.17.6.old/doc/public/meson.build 1970-01-01 01:00:00.000000000 +0100 -+++ cairo-1.17.6/doc/public/meson.build 2022-03-20 16:22:31.018317576 +0000 -@@ -0,0 +1,156 @@ -+gnome = import('gnome') -+ -+ignore_headers = [ -+ # Sub-directories -+ 'win32', -+ -+ # Internal headers -+ 'cairoint.h', -+ 'cairo-features.h', -+ 'cairo-features-win32.h', -+ -+ # Inlined API -+ 'cairo-box-inline.h', -+ 'cairo-clip-inline.h', -+ 'cairo-combsort-inline.h', -+ 'cairo-contour-inline.h', -+ 'cairo-error-inline.h', -+ 'cairo-image-surface-inline.h', -+ 'cairo-line-inline.h', -+ 'cairo-list-inline.h', -+ 'cairo-pattern-inline.h', -+ 'cairo-recording-surface-inline.h', -+ 'cairo-surface-inline.h', -+ 'cairo-surface-observer-inline.h', -+ 'cairo-surface-snapshot-inline.h', -+ 'cairo-surface-subsurface-inline.h', -+ -+ # Private headers -+ 'cairo-analysis-surface-private.h', -+ 'cairo-arc-private.h', -+ 'cairo-array-private.h', -+ 'cairo-atomic-private.h', -+ 'cairo-backend-private.h', -+ 'cairo-boxes-private.h', -+ 'cairo-cache-private.h', -+ 'cairo-clip-private.h', -+ 'cairo-compiler-private.h', -+ 'cairo-composite-rectangles-private.h', -+ 'cairo-compositor-private.h', -+ 'cairo-contour-private.h', -+ 'cairo-damage-private.h', -+ 'cairo-default-context-private.h', -+ 'cairo-deprecated.h', -+ 'cairo-device-private.h', -+ 'cairo-error-private.h', -+ 'cairo-fixed-private.h', -+ 'cairo-fixed-type-private.h', -+ 'cairo-fontconfig-private.h', -+ 'cairo-freed-pool-private.h', -+ 'cairo-freelist-private.h', -+ 'cairo-freelist-type-private.h', -+ 'cairo-ft-private.h', -+ 'cairo-gstate-private.h', -+ 'cairo-hash-private.h', -+ 'cairo-image-info-private.h', -+ 'cairo-image-surface-private.h', -+ 'cairo-line-private.h', -+ 'cairo-list-private.h', -+ 'cairo-malloc-private.h', -+ 'cairo-mempool-private.h', -+ 'cairo-mutex-impl-private.h', -+ 'cairo-mutex-list-private.h', -+ 'cairo-mutex-private.h', -+ 'cairo-mutex-type-private.h', -+ 'cairo-output-stream-private.h', -+ 'cairo-paginated-private.h', -+ 'cairo-paginated-surface-private.h', -+ 'cairo-path-fixed-private.h', -+ 'cairo-path-private.h', -+ 'cairo-pattern-private.h', -+ 'cairo-pdf-operators-private.h', -+ 'cairo-pdf-shading-private.h', -+ 'cairo-pdf-surface-private.h', -+ 'cairo-pixman-private.h', -+ 'cairo-private.h', -+ 'cairo-ps-surface-private.h', -+ 'cairo-quartz-private.h', -+ 'cairo-recording-surface-private.h', -+ 'cairo-reference-count-private.h', -+ 'cairo-region-private.h', -+ 'cairo-rtree-private.h', -+ 'cairo-scaled-font-private.h', -+ 'cairo-scaled-font-subsets-private.h', -+ 'cairo-script-private.h', -+ 'cairo-slope-private.h', -+ 'cairo-spans-compositor-private.h', -+ 'cairo-spans-private.h', -+ 'cairo-stroke-dash-private.h', -+ 'cairo-surface-backend-private.h', -+ 'cairo-surface-clipper-private.h', -+ 'cairo-surface-fallback-private.h', -+ 'cairo-surface-observer-private.h', -+ 'cairo-surface-offset-private.h', -+ 'cairo-surface-private.h', -+ 'cairo-surface-snapshot-private.h', -+ 'cairo-surface-subsurface-private.h', -+ 'cairo-surface-wrapper-private.h', -+ 'cairo-svg-surface-private.h', -+ 'cairo-tag-attributes-private.h', -+ 'cairo-tag-stack-private.h', -+ 'cairo-tee-surface-private.h', -+ 'cairo-time-private.h', -+ 'cairo-traps-private.h', -+ 'cairo-tristrip-private.h', -+ 'cairo-truetype-subset-private.h', -+ 'cairo-type1-private.h', -+ 'cairo-type3-glyph-surface-private.h', -+ 'cairo-types-private.h', -+ 'cairo-user-font-private.h', -+ 'cairo-wideint-private.h', -+ 'cairo-wideint-type-private.h', -+ 'cairo-xcb-private.h', -+ 'cairo-xlib-private.h', -+ 'cairo-xlib-surface-private.h', -+ 'cairo-xlib-xrender-private.h', -+ 'test-compositor-surface-private.h', -+] -+ -+ignore_decorators = [ -+ 'cairo_public', -+ 'cairo_private', -+] -+ -+docpath = get_option('prefix') / get_option('datadir') / 'gtk-doc/html' -+version_conf = configuration_data() -+version_conf.set('CAIRO_VERSION', meson.project_version()) -+configure_file( -+ input: 'version.xml.in', -+ output: 'version.xml', -+ configuration: version_conf -+) -+ -+gnome.gtkdoc('cairo', -+ main_xml: 'cairo-docs.xml', -+ namespace: 'cairo', -+ mode: 'sgml', -+ src_dir: doc_srcdir, -+ dependencies: libcairo_dep, -+ scan_args: [ -+ '--ignore-decorators=' + '|'.join(ignore_decorators), -+ '--ignore-headers=' + ' '.join(ignore_headers), -+ ], -+ content_files: [ -+ 'language-bindings.xml', -+ ], -+ expand_content_files: [ -+ 'language-bindings.xml', -+ ], -+ html_assets: [ -+ ], -+ fixxref_args: [ -+ '--html-dir=' + docpath, -+ ], -+ install: true, -+ check: true, -+) -diff -urN cairo-1.17.6.old/doc/public/version.xml.in cairo-1.17.6/doc/public/version.xml.in ---- cairo-1.17.6.old/doc/public/version.xml.in 1970-01-01 01:00:00.000000000 +0100 -+++ cairo-1.17.6/doc/public/version.xml.in 2022-03-20 16:33:04.015756161 +0000 -@@ -0,0 +1 @@ -+@CAIRO_VERSION@ -diff -urN cairo-1.17.6.old/meson-cc-tests/check-unused-result.c cairo-1.17.6/meson-cc-tests/check-unused-result.c ---- cairo-1.17.6.old/meson-cc-tests/check-unused-result.c 1970-01-01 01:00:00.000000000 +0100 -+++ cairo-1.17.6/meson-cc-tests/check-unused-result.c 2022-03-20 15:55:39.285562258 +0000 -@@ -0,0 +1,9 @@ -+__attribute__((__warn_unused_result__)) void f (void) {} -+__attribute__((__warn_unused_result__)) int g; -+ -+int main(int c, char **v) -+{ -+ (void)c; -+ (void)v; -+ return 0; -+} diff --git a/cairo-1.17.8-fix-crash-scaled-glyph.patch b/cairo-1.17.8-fix-crash-scaled-glyph.patch deleted file mode 100644 index 6646989..0000000 --- a/cairo-1.17.8-fix-crash-scaled-glyph.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 10cc34f521cf272f881bbad9a6fc4e794cca8687 Mon Sep 17 00:00:00 2001 -From: Adrian Johnson -Date: Sat, 13 May 2023 18:51:40 +0930 -Subject: [PATCH] ft: don't use scaled_glyph->dev_private to store data - -It is also used by the xlib surface. - -Fixes #778 ---- - src/cairo-ft-font.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c -index 834e4ba31..76c9e008f 100644 ---- a/src/cairo-ft-font.c -+++ b/src/cairo-ft-font.c -@@ -2600,6 +2600,7 @@ _cairo_ft_scaled_glyph_set_foreground_color (cairo_ft_scaled_font_t *scaled_font - static cairo_int_status_t - _cairo_ft_scaled_glyph_init_surface (cairo_ft_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph, -+ cairo_ft_glyph_private_t *glyph_priv, - cairo_scaled_glyph_info_t info, - FT_Face face, - const cairo_color_t *foreground_color, -@@ -2611,7 +2612,6 @@ _cairo_ft_scaled_glyph_init_surface (cairo_ft_scaled_font_t *scaled_font, - cairo_status_t status; - cairo_image_surface_t *surface; - cairo_bool_t uses_foreground_color = FALSE; -- cairo_ft_glyph_private_t *glyph_priv = scaled_glyph->dev_private; - - /* Only one info type at a time handled in this function */ - assert (info == CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE || info == CAIRO_SCALED_GLYPH_INFO_SURFACE); -@@ -3302,7 +3302,6 @@ _cairo_ft_scaled_glyph_init_metrics (cairo_ft_scaled_font_t *scaled_font, - _cairo_scaled_glyph_attach_private (scaled_glyph, &glyph_priv->base, - &ft_glyph_private_key, - _cairo_ft_glyph_fini); -- scaled_glyph->dev_private = glyph_priv; - - /* We need to load color to determine if this is a color format. */ - int color_flag = 0; -@@ -3461,8 +3460,8 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, - goto FAIL; - } - -- /* scaled_glyph->dev_private is intialized by _cairo_ft_scaled_glyph_init_metrics() */ -- glyph_priv = scaled_glyph->dev_private; -+ glyph_priv = (cairo_ft_glyph_private_t *) _cairo_scaled_glyph_find_private (scaled_glyph, -+ &ft_glyph_private_key); - assert (glyph_priv != NULL); - - if (info & CAIRO_SCALED_GLYPH_INFO_RECORDING_SURFACE) { -@@ -3514,6 +3513,7 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, - } else { - status = _cairo_ft_scaled_glyph_init_surface (scaled_font, - scaled_glyph, -+ glyph_priv, - CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE, - face, - foreground_color, -@@ -3527,6 +3527,7 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, - if (info & CAIRO_SCALED_GLYPH_INFO_SURFACE) { - status = _cairo_ft_scaled_glyph_init_surface (scaled_font, - scaled_glyph, -+ glyph_priv, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - face, - NULL, /* foreground color */ --- -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 24aee86..0000000 --- a/cairo-1.17.8-fix-tee-compilation.patch +++ /dev/null @@ -1,109 +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 5edcb59..0000000 --- a/cairo-1.17.8-ft-font-missing-glyph.patch +++ /dev/null @@ -1,61 +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.spec b/cairo.spec index fb13063..df1ea4e 100644 --- a/cairo.spec +++ b/cairo.spec @@ -3,21 +3,15 @@ %define fontconfig_version 2.2.95 Name: cairo -Version: 1.17.8 -Release: 5%{?dist} +Version: 1.18.0 +Release: 1%{?dist} Summary: A 2D graphics library License: LGPL-2.1-only OR MPL-1.1 URL: https://cairographics.org -Source0: https://cairographics.org/snapshots/%{name}-%{version}.tar.xz +Source0: https://cairographics.org/releases/%{name}-%{version}.tar.xz Patch0: cairo-multilib.patch -# https://gitlab.freedesktop.org/cairo/cairo/-/issues/634 -Patch1: cairo-1.17.8-fix-tee-compilation.patch -# https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/467 -Patch2: cairo-1.17.8-ft-font-missing-glyph.patch -# https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/476 -Patch3: cairo-1.17.8-fix-crash-scaled-glyph.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -102,7 +96,7 @@ This package contains tools for working with the cairo graphics library. -Dtests=disabled \ -Dxcb=enabled \ -Dxlib=enabled \ - -Dxml=disabled + %{nil} %meson_build %install @@ -157,11 +151,14 @@ This package contains tools for working with the cairo graphics library. %{_libdir}/pkgconfig/cairo-gobject.pc %files tools -%{_bindir}/cairo-sphinx %{_bindir}/cairo-trace %{_libdir}/cairo/ %changelog +* Wed Sep 27 2023 Kalev Lember - 1.18.0-1 +- Update to 1.18.0 +- Drop the xml surface and cairo-sphinx tool as they've been removed upstream + * Wed Jul 19 2023 Fedora Release Engineering - 1.17.8-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index a1c0e60..f2faf30 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cairo-1.17.8.tar.xz) = 62f0eaaebc46be5f0de7cb49df055eeadcc02706095a9d641eceac563d48344c2234940ce90d84a610c5003e536d9dcd318a1649578fd9cd5ab5f0db5b75bd8f +SHA512 (cairo-1.18.0.tar.xz) = 6366c7d5e3fd3e12df2edc43aa4ed4c3a517de2ef0b1b3b30dfa8b69a7cae1dd55765801228cec308d2e9792037d0704ae49d95b7b12c06f20df092fa0534e1c