From 6d525ea6f15d9c3fbbf1027ac0bc2730e1a982f2 Mon Sep 17 00:00:00 2001 From: "carlosgc@webkit.org" Date: Thu, 28 Mar 2019 13:58:38 +0000 Subject: [PATCH] [FreeType] Incorrect application of glyph positioning in the Y direction https://bugs.webkit.org/show_bug.cgi?id=161493 Reviewed by Michael Catanzaro. Source/WebCore: Use the first glyph origin as the initial advance of every complex text run. * platform/graphics/cairo/FontCairo.cpp: (WebCore::FontCascade::drawGlyphs): Update the yOffset using the height advance. * platform/graphics/cairo/GraphicsContextImplCairo.cpp: (WebCore::GraphicsContextImplCairo::drawGlyphs): Ditto. * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Set the initial advance. LayoutTests: Rebaseline fast/text/international/hebrew-vowels.html. * platform/gtk/fast/text/international/hebrew-vowels-expected.png: * platform/gtk/fast/text/international/hebrew-vowels-expected.txt: git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243602 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- LayoutTests/ChangeLog | 12 ++++++++++++ .../text/international/hebrew-vowels-expected.png | Bin 21954 -> 22435 bytes .../text/international/hebrew-vowels-expected.txt | 8 ++++---- Source/WebCore/ChangeLog | 16 ++++++++++++++++ .../WebCore/platform/graphics/cairo/FontCairo.cpp | 1 + .../graphics/cairo/GraphicsContextImplCairo.cpp | 1 + .../harfbuzz/ComplexTextControllerHarfBuzz.cpp | 3 +++ 7 files changed, 37 insertions(+), 4 deletions(-) diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog index cd65382..3d51e33 100644 --- a/LayoutTests/ChangeLog +++ b/LayoutTests/ChangeLog @@ -1,3 +1,15 @@ +2019-03-28 Carlos Garcia Campos + + [FreeType] Incorrect application of glyph positioning in the Y direction + https://bugs.webkit.org/show_bug.cgi?id=161493 + + Reviewed by Michael Catanzaro. + + Rebaseline fast/text/international/hebrew-vowels.html. + + * platform/gtk/fast/text/international/hebrew-vowels-expected.png: + * platform/gtk/fast/text/international/hebrew-vowels-expected.txt: + 2019-03-27 Ryosuke Niwa [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown diff --git a/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.png b/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.png index 5695a2764958238e98ea6ccb89634a274e710b99..c2e11bbb4190385af5e6921cf171e53c442b9a92 100644 GIT binary patch literal 22435 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 + + [FreeType] Incorrect application of glyph positioning in the Y direction + https://bugs.webkit.org/show_bug.cgi?id=161493 + + Reviewed by Michael Catanzaro. + + Use the first glyph origin as the initial advance of every complex text run. + + * platform/graphics/cairo/FontCairo.cpp: + (WebCore::FontCascade::drawGlyphs): Update the yOffset using the height advance. + * platform/graphics/cairo/GraphicsContextImplCairo.cpp: + (WebCore::GraphicsContextImplCairo::drawGlyphs): Ditto. + * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: + (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Set the initial advance. + 2019-03-27 Ryosuke Niwa [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown diff --git a/Source/WebCore/platform/graphics/cairo/FontCairo.cpp b/Source/WebCore/platform/graphics/cairo/FontCairo.cpp index c942b49..e10ebe4 100644 --- a/Source/WebCore/platform/graphics/cairo/FontCairo.cpp +++ b/Source/WebCore/platform/graphics/cairo/FontCairo.cpp @@ -65,6 +65,7 @@ void FontCascade::drawGlyphs(GraphicsContext& context, const Font& font, const G for (size_t i = 0; i < numGlyphs; ++i) { glyphs[i] = { glyphsData[i], xOffset, yOffset }; xOffset += advances[i].width(); + yOffset -= advances[i].height(); } } diff --git a/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp b/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp index c697d22..50b7d9c 100644 --- a/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp +++ b/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp @@ -248,6 +248,7 @@ void GraphicsContextImplCairo::drawGlyphs(const Font& font, const GlyphBuffer& g for (size_t i = 0; i < numGlyphs; ++i) { glyphs[i] = { glyphsData[i], xOffset, yOffset }; xOffset += advances[i].width(); + yOffset -= advances[i].height(); } } diff --git a/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp b/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp index 5532d18..360ffa1 100644 --- a/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp +++ b/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp @@ -168,6 +168,9 @@ ComplexTextController::ComplexTextRun::ComplexTextRun(hb_buffer_t* buffer, const float advanceX = harfBuzzPositionToFloat(glyphPositions[i].x_advance); float advanceY = harfBuzzPositionToFloat(glyphPositions[i].y_advance); + if (!i) + m_initialAdvance = { offsetX, -offsetY }; + m_glyphs[i] = glyph; m_baseAdvances[i] = { advanceX, advanceY }; m_glyphOrigins[i] = { offsetX, offsetY }; -- 1.8.3.1