Resolves: tdf#152196 visible gaps with glyph fallback in Arabic/Persian text

includes:

Related: tdf#152196 these should be at least DeviceCoordinate
Related: tdf#152196 adjustLinearPosX takes a double
Related: tdf#152196 adjustLinearPosX takes a double

Change-Id: I0bf5a10940782f4507e7d632ec37bc4eaa710b03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143626
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx
index 75f7cb3..a1b30ed 100644
--- a/vcl/inc/sallayout.hxx
+++ b/vcl/inc/sallayout.hxx
@@ -135,7 +135,7 @@ public:

private:
    // for glyph+font+script fallback
    void            MoveGlyph(int nStart, tools::Long nNewXPos);
    void            MoveGlyph(int nStart, double nNewXPos);
    void            DropGlyph(int nStart);
    void            Simplify(bool bIsBase);

diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 51e1d9a..48f8082 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -550,7 +550,7 @@ bool GenericSalLayout::GetNextGlyph(const GlyphItem** pGlyph,
    return true;
}

void GenericSalLayout::MoveGlyph( int nStart, tools::Long nNewXPos )
void GenericSalLayout::MoveGlyph(int nStart, double nNewXPos)
{
    if( nStart >= static_cast<int>(m_GlyphItems.size()) )
        return;
@@ -564,7 +564,7 @@ void GenericSalLayout::MoveGlyph( int nStart, tools::Long nNewXPos )
    if( pGlyphIter->IsRTLGlyph() )
        nNewXPos += pGlyphIter->newWidth() - pGlyphIter->origWidth();
    // calculate the x-offset to the old position
    tools::Long nXDelta = nNewXPos - pGlyphIter->linearPos().getX() + pGlyphIter->xOffset();
    double nXDelta = nNewXPos - pGlyphIter->linearPos().getX() + pGlyphIter->xOffset();
    // adjust all following glyph positions if needed
    if( nXDelta != 0 )
    {
@@ -782,7 +782,7 @@ void MultiSalLayout::ImplAdjustMultiLayout(vcl::text::ImplLayoutArgs& rArgs,
    mnLevel = nLevel;

    // prepare merge the fallback levels
    tools::Long nXPos = 0;
    DC nXPos = 0;
    for( n = 0; n < nLevel; ++n )
        maFallbackRuns[n].ResetPos();