[gtk/small-text-fixes] gsk: Add font options to the glyph cache



commit a4fdb5f657aeb7c73058374e69aaab88b581dca9
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Sep 3 07:18:19 2021 -0400

    gsk: Add font options to the glyph cache
    
    The cairo_t that we create to render glyphs for
    the glyph cache needs to match the font options
    that are supposedly governing how glyphs are
    drawn.
    
    Since we allow font options to be different per
    widget in gtk, we need to have them at least at
    the level of individual render nodes. Adding them
    to the lookup key for the glyph cache has the
    side effect of solving another problem: We are
    not flushing the cache when font options change.

 gsk/ngl/gsknglglyphlibrary.c        | 6 +++---
 gsk/ngl/gsknglglyphlibraryprivate.h | 5 ++++-
 2 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gsk/ngl/gsknglglyphlibrary.c b/gsk/ngl/gsknglglyphlibrary.c
index 4a29ecbae4..68e86594de 100644
--- a/gsk/ngl/gsknglglyphlibrary.c
+++ b/gsk/ngl/gsknglglyphlibrary.c
@@ -175,9 +175,9 @@ render_glyph (cairo_surface_t           *surface,
 
   cr = cairo_create (surface);
   options = cairo_font_options_create ();
-  cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY);
-  cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_SLIGHT);
-  cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF);
+  cairo_font_options_set_hint_metrics (options, key->hint_metrics ? CAIRO_HINT_METRICS_ON : 
CAIRO_HINT_METRICS_OFF);
+  cairo_font_options_set_antialias (options, key->antialias ? CAIRO_ANTIALIAS_GRAY : CAIRO_ANTIALIAS_NONE);
+  cairo_font_options_set_hint_style (options, key->hint_style);
   cairo_set_font_options (cr, options);
   cairo_font_options_destroy (options);
 
diff --git a/gsk/ngl/gsknglglyphlibraryprivate.h b/gsk/ngl/gsknglglyphlibraryprivate.h
index a9f099c0b5..6d9e81060e 100644
--- a/gsk/ngl/gsknglglyphlibraryprivate.h
+++ b/gsk/ngl/gsknglglyphlibraryprivate.h
@@ -35,7 +35,10 @@ typedef struct _GskNglGlyphKey
   PangoGlyph glyph;
   guint xshift : 2;
   guint yshift : 2;
-  guint scale  : 28; /* times 1024 */
+  guint hint_metrics : 1;
+  guint antialias : 1;
+  guint hint_style : 3;
+  guint scale  : 23; /* times 1024 */
 } GskNglGlyphKey;
 
 typedef struct _GskNglGlyphValue


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]