CppunitTest_svgio fails on macOS with the new layout engine
khaledhosny at eglug.org
Thu Nov 3 00:22:15 UTC 2016
On Wed, Nov 02, 2016 at 06:34:32PM +0200, Khaled Hosny wrote:
> On Tue, Nov 01, 2016 at 10:14:49PM +0100, Tomaž Vajngerl wrote:
> > Hi,
> > On Tue, Nov 1, 2016 at 8:33 PM, Khaled Hosny <khaledhosny at eglug.org> wrote:
> > > I tried to find what is the source of difference, but to no avail. I
> > > can’t figure out why the choice of the layout engine can make a
> > > difference here.
> > I don't know the cause and if this is possible but just a quick check
> > at the svgio code my speculation is that it could make a difference if
> > it determines for example that text overflows the bounds and it needs
> > to clip. If you look at the XML and what the test checks you see the
> > mask primitive is inserted just suddenly. I saw in the svgio code that
> > the mask primitive is used at many places to do clipping.
> Thanks for the pointers, that was very helpful. I now found the part
> that does the mask; if I set bDoCorrectCanvasClipping to false in
> svgio/source/svgreader/svgsvgnode.cxx the test passes. Now I need to
> find the part that actually calculates the bounding box...
After further debugging it turned out we were returning bad text
bounding boxes on macOS with the new layout engine, apparently
CoreTextStyle::GetGlyphBoundRect() was returning wrong bounding box all
along but it was not detected before because we were using Core Text to
get the bounding box of the whole text at once and this function was not
used (not for this at least).
This is now fixed in:
More information about the LibreOffice