summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/win/source/gdi/winlayout.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index f7bc83b051cc..6fc12454e9d8 100644
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -1736,6 +1736,12 @@ bool UniscribeLayout::DrawCachedGlyphs(SalGraphics& rGraphics) const
Point aPos = GetDrawPosition( aRelPos );
int nAdvance = 0;
+
+ // This has to be in sync with UniscribeLayout::FillDXArray(), so that
+ // actual and reported glyph positions (used for e.g. cursor caret
+ // positioning) match.
+ const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
+
for (int i = nMinGlyphPos; i < nEndGlyphPos; i++)
{
assert(mrWinFontEntry.GlyphIsCached(mpOutGlyphs[i]));
@@ -1759,7 +1765,7 @@ bool UniscribeLayout::DrawCachedGlyphs(SalGraphics& rGraphics) const
rChunk.maLocation[n].getWidth(), rChunk.maLocation[n].getHeight()); // ???
pImpl->DrawMask(*rChunk.mpTexture, salColor, a2Rects);
}
- nAdvance += mpGlyphAdvances[i];
+ nAdvance += pGlyphWidths[i];
}
}
pImpl->PostDraw();