tdf#103891: Fix DX array calculation

This partially reverts:

commit c49d5dea164b09b05a898495fa2dd48b7ca4f0e4
Author: Khaled Hosny <khaledhosny@eglug.org>
Date:   Fri Nov 11 18:24:11 2016 +0200

    tdf#103765: Minimize the effect of rounding to int

    Instead of scaling the relative coordinates and accumulating rounding
    errors, scale the absolute coordinates. Also round to int instead of
    truncating.

as it results in OutputDevice::GetTextArray() calculating wrong absolute
DX array. Again the whole DX array thing is brain dead.

Change-Id: Ia257b73062315b797b5ed52e434562fad3b3fb90
diff --git a/vcl/source/gdi/CommonSalLayout.cxx b/vcl/source/gdi/CommonSalLayout.cxx
index 9ad1967..b9240e7 100644
--- a/vcl/source/gdi/CommonSalLayout.cxx
+++ b/vcl/source/gdi/CommonSalLayout.cxx
@@ -595,11 +595,13 @@ bool CommonSalLayout::LayoutText(ImplLayoutArgs& rArgs)
                    nYOffset = -pHbPositions[i].y_offset;
                }

                Point aNewPos(lround((aCurrPos.X() + nXOffset) * nXScale),
                              lround((aCurrPos.Y() + nYOffset) * nYScale));
                nAdvance *= nXScale;
                nXOffset *= nXScale;
                nYOffset *= nYScale;

                Point aNewPos(aCurrPos.X() + nXOffset, aCurrPos.Y() + nYOffset);
                const GlyphItem aGI(nCharPos, nGlyphIndex, aNewPos, nGlyphFlags,
                                    lround(nAdvance * nXScale),
                                    lround(nXOffset * nXScale));
                                    nAdvance, nXOffset);
                AppendGlyph(aGI);

                aCurrPos.X() += nAdvance;