[cairo] Struggling with subpixel text (last blocker for 1.8)
sylvain.pasche at gmail.com
Sat Sep 27 09:22:57 PDT 2008
That's definitely a regression if Cairo is using a FreeType not compiled
with subpixel rendering . There are other options in FreeType that
can be selected at compile time such as enabling the bytecode
interpreter or not. I noticed that it is usually all or nothing for
distributions: either they enable lcd filtering and the bytecode
interpreter (Debian/Ubuntu), or they do not enable anything
(Redhat/Fedora). Using the old lcd filtering algorithm in Cairo without
having the bytecode interpreter enabled can lead to unpleasant looking
fonts for users . So in most situations, the regression will be
between a "not best looking lcd filtering" and no filtering at all. I
don't mean that the regression is not an issue, just that it may not be
as bad as it seems.
The test assumed that FreeType was compiled with that option. Ideally,
it should have used two reference images, and switch the image to test
according to the HAVE_FT_LIBRARY_SETLCDFILTER macro value. I'm not sure
this is possible to do with the current test infrastructure.
Do you still think we should incorporate the old filter algorithm in
case HAVE_FT_LIBRARY_SETLCDFILTER is undefined? In my opinion, this
should belong in FreeType. It is a bit ironic that distributions do not
compile FreeType with lcd filtering because of patent issues while the
same thing is available inside Cairo without a way to turn it off. Last
time I tried OpenSuse, subpixel antialiasing was not available by
default because they compiled Cairo with the subpixel patch and didn't
compile FreeType with the lcd filtering option.
Carl Worth wrote:
> So I stayed up all night trying to get the 1.8 release done.
> The test suite was in pretty bad shape as of the last 1.7.6 snapshot.
> There were dozens of failing tests, and the causes were all over the
> * Stale reference images needing to be updated
> * Known bugs that needed to be marked as XFAIL
> * New regressions that needed to be fixed
> It was pretty tedious work sorting through all that, and for the ones
> that were actual regressions we had to actually fix the bugs too. Thanks
> to Behdad, Chris, Emmanuel, and Adrian for helping out with that
> The final result I got to was a single test not passing, (I
> intentionally wasn't testing xlib to avoid X server/driver issues):
> And this one is a regression. It's giving me grayscale antialiasing
> instead of subpixel on image and other backends. The text passes fine
> back in 1.6.4.
> I bisected the failure down to this large commit:
> commit 7f870035177da7aa63fa33dce837528f442d9ffe
> Author: Sylvain Pasche <sylvain.pasche at gmail.com>
> Date: Tue Jan 22 23:51:32 2008 +0100
> [cairo-ft] LCD filtering patch from David Turner
> This is the patch David Turner wrote some times ago and can be found on
> http://david.freetype.org/lcd/cairo-1.2.4-lcd-filter-1.patch. It was
> somewhat modified for compatibility with cairo 1.5
> I spent a fair amount of time trying to debug this, but never succeeded.
> So now I'd like some suggestions on how to proceed. One option is to
> revert the patch, (it broke an existing test in the test suite after
> all). I've got a patch in my personal repository, (revert-lcd-filter
> branch), that does this and which seems to work:
> But meanwhile, I know that some users were particularly keen on being
> able to control, (via fontconfig), the various LCD filter options made
> available by freetype. And reverting this patch would remove that
> Behdad, do you have some guidance here? Can you fix the code so that the
> test suite works? Or shall we just go ahead with the revert and bring
> back the LCD filter functionality in 1.8.2 or so? I know you were hoping
> to wake up and see that the release had already happened. Sorry that
> didn't happen, but this is really the last issue left.
> -Carl (overdue for sleep)
More information about the cairo