Skip to content

Commit

Permalink
Merge r243602 - [FreeType] Incorrect application of glyph positioning…
Browse files Browse the repository at this point in the history
… 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:
  • Loading branch information
carlosgcampos committed Apr 8, 2019
1 parent 3808b75 commit a5b85a5
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 4 deletions.
12 changes: 12 additions & 0 deletions LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
2019-03-28 Carlos Garcia Campos <cgarcia@igalia.com>

[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-18 Philippe Normand <pnormand@igalia.com>

[GStreamer] Rewrite HTTP source element using pushsrc base class
Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Expand Up @@ -11,10 +11,10 @@ layer at (0,0) size 800x600
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
Expand Down
16 changes: 16 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,19 @@
2019-03-28 Carlos Garcia Campos <cgarcia@igalia.com>

[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-02-28 Carlos Garcia Campos <cgarcia@igalia.com>

[CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/platform/graphics/cairo/FontCairo.cpp
Expand Up @@ -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();
}
}

Expand Down
Expand Up @@ -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();
}
}

Expand Down
Expand Up @@ -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 };
Expand Down

0 comments on commit a5b85a5

Please sign in to comment.