From 74b0f6a3f6144123ffcefbf966a1a72bf159ae66 Mon Sep 17 00:00:00 2001 From: Raman Varabets Date: Mon, 3 Jun 2024 10:47:51 +0800 Subject: [PATCH] Implement show_text_glyphs instead of show_glyphs in SVG backend Signed-off-by: Raman Varabets --- src/cairo-surface.c | 13 ------------- src/cairo-svg-surface.c | 31 +++++++++++++++++++++---------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/cairo-surface.c b/src/cairo-surface.c index 213cb3d29..86c1837b9 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -2863,19 +2863,6 @@ composite_color_glyphs (cairo_surface_t *surface, continue; } - cairo_bool_t supports_color_glyph = FALSE; - - if (surface->backend->supports_color_glyph) { - _cairo_scaled_font_thaw_cache (scaled_font); - supports_color_glyph = _cairo_surface_supports_color_glyph (surface, scaled_font, glyphs[glyph_pos].index); - _cairo_scaled_font_freeze_cache (scaled_font); - } - - if (supports_color_glyph) { - glyphs[remaining_glyphs++] = glyphs[glyph_pos]; - continue; - } - status = composite_one_color_glyph (surface, op, source, clip, &glyphs[glyph_pos], scaled_glyph, x_scale, y_scale); diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c index a721a91b2..b830d91e0 100644 --- a/src/cairo-svg-surface.c +++ b/src/cairo-svg-surface.c @@ -4183,14 +4183,25 @@ _cairo_svg_surface_show_glyphs_impl (cairo_svg_stream_t *output, return status; } +static cairo_bool_t +_cairo_svg_surface_has_show_text_glyphs (void *abstract_surface) +{ + return TRUE; +} + static cairo_int_status_t -_cairo_svg_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - const cairo_clip_t *clip) +_cairo_svg_surface_show_text_glyphs (void *abstract_surface, + cairo_operator_t op, + const cairo_pattern_t *source, + const char *utf8, + int utf8_len, + cairo_glyph_t *glyphs, + int num_glyphs, + const cairo_text_cluster_t *clusters, + int num_clusters, + cairo_text_cluster_flags_t cluster_flags, + cairo_scaled_font_t *scaled_font, + const cairo_clip_t *clip) { cairo_svg_surface_t *surface = abstract_surface; cairo_int_status_t status; @@ -4314,9 +4325,9 @@ static const cairo_surface_backend_t cairo_svg_surface_backend = { _cairo_svg_surface_stroke, _cairo_svg_surface_fill, _cairo_svg_surface_fill_stroke, - _cairo_svg_surface_show_glyphs, - NULL, /* has_show_text_glyphs */ - NULL, /* show_text_glyphs */ + NULL, /* show_glyphs */ + _cairo_svg_surface_has_show_text_glyphs, + _cairo_svg_surface_show_text_glyphs, _cairo_svg_surface_get_supported_mime_types, NULL, /* tag */ _cairo_svg_surface_supports_color_glyph,