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();