Kaydet (Commit) 827b63a7 authored tarafından Khaled Hosny's avatar Khaled Hosny

[harfbuzz] Correctly apply glyph positions

X and Y offsets should only affect the position of the current glyph,
not any subsequent ones.

Change-Id: I9dd1576cbdbb36b70f1898dc52702c02c4e851af
üst d225318e
...@@ -338,7 +338,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) ...@@ -338,7 +338,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
rLayout.Reserve(nGlyphCapacity); rLayout.Reserve(nGlyphCapacity);
Point aNewPos(0, 0); Point aCurrPos(0, 0);
while (true) while (true)
{ {
int nMinRunPos, nEndRunPos; int nMinRunPos, nEndRunPos;
...@@ -431,15 +431,15 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) ...@@ -431,15 +431,15 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
aHbPositions[i].x_advance = aHbPositions[i].x_advance >> 6; aHbPositions[i].x_advance = aHbPositions[i].x_advance >> 6;
aHbPositions[i].y_advance = aHbPositions[i].y_advance >> 6; aHbPositions[i].y_advance = aHbPositions[i].y_advance >> 6;
aNewPos = Point(aNewPos.X() + aHbPositions[i].x_offset, aNewPos.Y() - aHbPositions[i].y_offset); Point aNewPos = Point(aCurrPos.X() + aHbPositions[i].x_offset, -(aCurrPos.Y() + aHbPositions[i].y_offset));
GlyphItem aGI(nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth); GlyphItem aGI(nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth);
aGI.mnNewWidth = aHbPositions[i].x_advance; aGI.mnNewWidth = aHbPositions[i].x_advance;
rLayout.AppendGlyph(aGI); rLayout.AppendGlyph(aGI);
aNewPos.X() += aHbPositions[i].x_advance; aCurrPos.X() += aHbPositions[i].x_advance;
aNewPos.Y() += aHbPositions[i].y_advance; aCurrPos.Y() += aHbPositions[i].y_advance;
} }
hb_buffer_destroy(aHbBuffer); hb_buffer_destroy(aHbBuffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment