From 46d1e26cdbe45a6b3a721b8a3e3ac335812cc176 Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Fri, 17 Apr 2026 11:34:36 +0200 Subject: [PATCH] _cairo_scaled_font_keys_equal: Also check implementation font-face "Placeholder" scaled fonts created temporarily by cairo-user-font.c never get to have an original_font_face (that is, it's always NULL). This breaks the font-map mapping. Also check the implementation font-face. Fixes #876 --- src/cairo-scaled-font-private.h | 3 +-- src/cairo-scaled-font.c | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cairo-scaled-font-private.h b/src/cairo-scaled-font-private.h index 64abbe0f5..3d5875676 100644 --- a/src/cairo-scaled-font-private.h +++ b/src/cairo-scaled-font-private.h @@ -87,9 +87,8 @@ struct _cairo_scaled_font { cairo_reference_count_t ref_count; cairo_user_data_array_t user_data; - cairo_font_face_t *original_font_face; /* may be NULL */ - /* hash key members */ + cairo_font_face_t *original_font_face; /* may be NULL */ cairo_font_face_t *font_face; /* may be NULL */ cairo_matrix_t font_matrix; /* font space => user space */ cairo_matrix_t ctm; /* user space => device space */ diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c index 82a4447f5..9614f2b3b 100755 --- a/src/cairo-scaled-font.c +++ b/src/cairo-scaled-font.c @@ -692,6 +692,7 @@ _cairo_scaled_font_keys_equal (const void *abstract_key_a, const cairo_scaled_font_t *key_b = abstract_key_b; return key_a->original_font_face == key_b->original_font_face && + key_a->font_face == key_b->font_face && memcmp ((unsigned char *)(&key_a->font_matrix.xx), (unsigned char *)(&key_b->font_matrix.xx), sizeof(cairo_matrix_t)) == 0 &&