Chart test failures on mac: text size differences

Khaled Hosny khaledhosny at eglug.org
Sun Feb 26 23:30:02 UTC 2017


On Sat, Feb 25, 2017 at 09:58:58PM +0000, Tamas Zolnai wrote:
> Hi Khaled,
> 
> > > However I think it would be better to debug this problem with a unit
> > > test in vcl module which tests directly the text rendering. I would
> > > suggest that if you are working making text rendering consitent. The
> > > vcldemo does something similar, but it's just doing the rendering and
> > > does not compare the text size to expected values. That code can be
> > > reused to write some unit tests about text rendering.
> >
> > If someone knows how to write text layout unit tests for VCL (i.e. by
> > showing some example) I might try adding some, otherwise I don’t think
> > OutputDevice provides much of useful API for doing layout tests that
> 
> > would be helpful at VCL level.
> 
> Is vcldemo code not good enough as example? (vcl/workben/vcldemo.cxx)
> Check the drawText() or drawComplex() method. As I see this method
> uses only vcl objects (OutputDevice, vcl::Font).
> OutputDevice::GetTextBoundRect() can be used to get the text width and
> height. Or did I miss something?

I don’t think text width or height are that interesting, but they are
probably a good approximation, so I repurposed one of the existing VCL
tests to test this[1]. I tried testing also the text bounding rectangle
but it showed a 1 pixel difference on Mac, this should be fixed in [2].

Feel free to add more test cases that you think are worth having.

1. https://gerrit.libreoffice.org/gitweb?p=core.git;a=commitdiff;h=eb7b03b052ffe8c2c577b2349987653db6c53f76
2. https://gerrit.libreoffice.org/gitweb?p=core.git;a=commitdiff;h=af871d02914c9fc6a08079f67b4af71a198e166a

Regards,
Khaled

P.S. The bounding rectangle is the ink extents of the text, i.e. the
smallest rectangle that fits around the text without leaving any white
space around it, which is not the same as text width and height. This
should’t normally have any effect on text layout, as it should depend
only on logical extents (the width and height). We still use platform
APIs to determine each glyph bounding rectangle which is a potential
source of differences here. We probably should try to use HarfBuzz here
as well.


More information about the LibreOffice mailing list