[Libreoffice-commits] core.git: 2 commits - vcl/unx

Khaled Hosny khaledhosny at eglug.org
Tue Nov 15 23:07:27 UTC 2016


 vcl/unx/generic/gdi/cairotextrender.cxx |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

New commits:
commit 84f644eee78106f01486098d446d9163b62927eb
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Wed Nov 16 01:05:35 2016 +0200

    tdf#103784: Shift the upright glyphs like old code
    
    It turns out we actually need the horizontal shift, so re-enable it.
    
    Change-Id: If9d16276f0f56b518c6bedc2fcbbd3d8746d8d5d

diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index fbac5f3..974b584 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -334,8 +334,8 @@ void CairoTextRender::DrawServerFontLayout( const GenericSalLayout& rLayout, con
                 else
                 {
                     ydiff = font_extents.ascent/nHeight;
-                    xdiff = -font_extents.descent/nHeight;
                 }
+                xdiff = -font_extents.descent/nHeight;
             }
             else if (nGlyphRotation == -1)
             {
commit 26ac0e16f8f2c4d4b0d3a0cd147cef31240f688d
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Tue Nov 15 23:36:57 2016 +0200

    Fix thinko in previous commit
    
    Negative descender means the glyph is above the baseline and no shift
    should happen.
    
    Change-Id: I0ee3575051e47f16c64db4e85c0b8a390029567f

diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 574f985..fbac5f3 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -328,7 +328,8 @@ void CairoTextRender::DrawServerFontLayout( const GenericSalLayout& rLayout, con
                     // the glyph’s baseline.
                     cairo_text_extents_t aExt;
                     cairo_glyph_extents(cr, &cairo_glyphs[nStartIndex], nLen, &aExt);
-                    cairo_glyphs[nStartIndex].y += aExt.x_advance - aExt.height - aExt.y_bearing;
+                    double nDescender = std::fmax(aExt.height + aExt.y_bearing, 0);
+                    ydiff = (aExt.x_advance - nDescender) / nHeight;
                 }
                 else
                 {


More information about the Libreoffice-commits mailing list