Title: [243602] trunk
Revision
243602
Author
[email protected]
Date
2019-03-28 06:58:38 -0700 (Thu, 28 Mar 2019)

Log Message

[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:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (243601 => 243602)


--- trunk/LayoutTests/ChangeLog	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/LayoutTests/ChangeLog	2019-03-28 13:58:38 UTC (rev 243602)
@@ -1,3 +1,15 @@
+2019-03-28  Carlos Garcia Campos  <[email protected]>
+
+        [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  <[email protected]>
 
         [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown

Modified: trunk/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.txt (243601 => 243602)


--- trunk/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.txt	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/LayoutTests/platform/gtk/fast/text/international/hebrew-vowels-expected.txt	2019-03-28 13:58:38 UTC (rev 243602)
@@ -11,10 +11,10 @@
         RenderText {#text} at (0,0) size 458x17
           text run at (0,0) width 458: "The vowel (two vertical dots) should be centered beneath the main letter."
       RenderBlock {DIV} at (0,86) size 784x91
-        RenderText {#text} at (33,1) size 67x88
-          text run at (33,1) width 67 RTL: "\x{5E1}\x{5B0} "
-        RenderText {#text} at (0,1) size 34x88
-          text run at (0,1) width 34 RTL: "\x{5E9}\x{5B0}"
+        RenderText {#text} at (57,1) size 66x88
+          text run at (57,1) width 66 RTL: "\x{5E1}\x{5B0} "
+        RenderText {#text} at (0,1) size 57x88
+          text run at (0,1) width 57 RTL: "\x{5E9}\x{5B0}"
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {HR} at (0,185) size 784x2 [border: (1px inset #000000)]
       RenderBlock {P} at (0,203) size 784x18

Modified: trunk/Source/WebCore/ChangeLog (243601 => 243602)


--- trunk/Source/WebCore/ChangeLog	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/Source/WebCore/ChangeLog	2019-03-28 13:58:38 UTC (rev 243602)
@@ -1,3 +1,19 @@
+2019-03-28  Carlos Garcia Campos  <[email protected]>
+
+        [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  <[email protected]>
 
         [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown

Modified: trunk/Source/WebCore/platform/graphics/cairo/FontCairo.cpp (243601 => 243602)


--- trunk/Source/WebCore/platform/graphics/cairo/FontCairo.cpp	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/Source/WebCore/platform/graphics/cairo/FontCairo.cpp	2019-03-28 13:58:38 UTC (rev 243602)
@@ -65,6 +65,7 @@
         for (size_t i = 0; i < numGlyphs; ++i) {
             glyphs[i] = { glyphsData[i], xOffset, yOffset };
             xOffset += advances[i].width();
+            yOffset -= advances[i].height();
         }
     }
 

Modified: trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp (243601 => 243602)


--- trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp	2019-03-28 13:58:38 UTC (rev 243602)
@@ -248,6 +248,7 @@
         for (size_t i = 0; i < numGlyphs; ++i) {
             glyphs[i] = { glyphsData[i], xOffset, yOffset };
             xOffset += advances[i].width();
+            yOffset -= advances[i].height();
         }
     }
 

Modified: trunk/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp (243601 => 243602)


--- trunk/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp	2019-03-28 06:22:42 UTC (rev 243601)
+++ trunk/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp	2019-03-28 13:58:38 UTC (rev 243602)
@@ -168,6 +168,9 @@
         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 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to