Update to 1.18.0

- Drop the xml surface and cairo-sphinx tool as they've been removed upstream
This commit is contained in:
Kalev Lember 2023-09-27 16:03:53 +02:00
parent eb90b25c28
commit 2f78fa84d9
8 changed files with 10 additions and 486 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -1,56 +0,0 @@
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,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;
+}

View File

@ -1,70 +0,0 @@
From 10cc34f521cf272f881bbad9a6fc4e794cca8687 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
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

View File

@ -1,109 +0,0 @@
From 5e42a5277eddafd312a73e355d7775a4401dae4e Mon Sep 17 00:00:00 2001
From: Emmanuele Bassi <ebassi@gnome.org>
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

View File

@ -1,61 +0,0 @@
From 2766d9feeccd5d66e346b0abab38726b8e0aa1e9 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
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

View File

@ -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 <klember@redhat.com> - 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 <releng@fedoraproject.org> - 1.17.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (cairo-1.17.8.tar.xz) = 62f0eaaebc46be5f0de7cb49df055eeadcc02706095a9d641eceac563d48344c2234940ce90d84a610c5003e536d9dcd318a1649578fd9cd5ab5f0db5b75bd8f
SHA512 (cairo-1.18.0.tar.xz) = 6366c7d5e3fd3e12df2edc43aa4ed4c3a517de2ef0b1b3b30dfa8b69a7cae1dd55765801228cec308d2e9792037d0704ae49d95b7b12c06f20df092fa0534e1c