[pango/visible-things: 86/87] layout: Don't zero the width of visible space



commit 914c0f880cfd7b77d774bc26681487b14a734e3c
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jul 8 15:27:22 2019 -0400

    layout: Don't zero the width of visible space
    
    Don't zero out a line separator at the end of line
    if we turned it into an unknown glyph to render
    it.
    
    And if we zero out whitespace at the end of the line,
    make sure we don't draw anything there by setting
    the glyph to EMPTY.
    
    Without this, we are getting the [LS] hex box
    rendered on top of the last character in a line,
    when the line separator ends up being visible.

 pango/pango-layout.c | 4 ++++
 1 file changed, 4 insertions(+)
---
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 349a2181..b4308c6c 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -5399,6 +5399,9 @@ zero_line_final_space (PangoLayoutLine *line,
   PangoGlyphString *glyphs = run->glyphs;
   int glyph = item->analysis.level % 2 ? 0 : glyphs->num_glyphs - 1;
 
+  if (glyphs->glyphs[glyph].glyph == PANGO_GET_UNKNOWN_GLYPH (0x2028))
+    return; /* this LS is visible */
+
   /* if the final char of line forms a cluster, and it's
    * a whitespace char, zero its glyph's width as it's been wrapped
    */
@@ -5413,6 +5416,7 @@ zero_line_final_space (PangoLayoutLine *line,
 
   state->remaining_width += glyphs->glyphs[glyph].geometry.width;
   glyphs->glyphs[glyph].geometry.width = 0;
+  glyphs->glyphs[glyph].glyph = PANGO_GLYPH_EMPTY;
 }
 
 /* When doing shaping, we add the letter spacing value for a


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