vcl/source/gdi/sallayout.cxx | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
New commits: commit 0e8270cb1dc0f4ecf916d14c3d5233c5370bf180 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Jun 28 15:27:57 2022 +0100 Commit: Aron Budea <aron.bu...@collabora.com> CommitDate: Sat Aug 6 04:36:49 2022 +0200 tdf#149755 bottom of characters missing in dwrite rendered case snap bounding box to full pixels Change-Id: Iecd973e99cec49ee129bad422ae00f558f057abd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136546 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> (cherry picked from commit d8963ecd20579a62906eae3ed14d498bf07cbb98) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137889 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Aron Budea <aron.bu...@collabora.com> diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx index abad66427491..b0669fa0a54f 100644 --- a/vcl/source/gdi/sallayout.cxx +++ b/vcl/source/gdi/sallayout.cxx @@ -238,12 +238,19 @@ bool SalLayout::GetBoundRect(tools::Rectangle& rRect) const // get bounding rectangle of individual glyph if (pGlyph->GetGlyphBoundRect(pGlyphFont, aRectangle)) { - // merge rectangle - aRectangle += Point(aPos.getX(), aPos.getY()); - if (rRect.IsEmpty()) - rRect = aRectangle; - else - rRect.Union(aRectangle); + if (!aRectangle.IsEmpty()) + { + aRectangle.AdjustLeft(std::floor(aPos.getX())); + aRectangle.AdjustRight(std::ceil(aPos.getX())); + aRectangle.AdjustTop(std::floor(aPos.getY())); + aRectangle.AdjustBottom(std::ceil(aPos.getY())); + + // merge rectangle + if (rRect.IsEmpty()) + rRect = aRectangle; + else + rRect.Union(aRectangle); + } bRet = true; } }