Font rendering in Calligra Words

I've just committed a fix to the Calligra Engine, so that font rendering will be without hinting when compiled against Qt 4.8.

And here are the obligatory screenshots to prove it (thanks buscher). Both are with system wide hinting turned on.

First on Qt 4.7:

And here on Qt 4.8:

Big thanks to Eskil Abrahamsen Blomfeldt at Nokia for implementing it in Qt.



I'm no font expert, so....

So disabling some feature improves something ?

What exactly is disabled now, and why is it better this way ?

In the screenshots I see that the "even" looks much better in the 4.8 version. Is this what this is about or something else ?


By Alexander Neundorf at Sun, 12/11/2011 - 10:44

see the other comments - the hinting caused quite horrible text as you can indeed clearly see in the spacing issues the word 'even' has. By disabling this feature things look a lot better. I hope an even better solution will come in Qt 5 but we'll have to see :D

By jospoortvliet at Mon, 12/12/2011 - 00:21

disabling hinting is a huge step backward- the entire free s/w world spent years and countless hours to add this functionality to the desktop !

By Vasu Muppalla at Tue, 12/27/2011 - 19:28

That's much better.

However, if I understand the comments to Qt bug #10615 [1] and KDE bug #186513 [2] correctly, the real problem is that KWord / Calligra Words seem to always apply font hinting which is appropriate for the *logical* font size, regardless of the actual on-screen size of the text (which is governed by the screen dpi and the page's zoom level).

Disabling font hinting altogether is of course the obvious work-around, but wouldn't the ideal solution be to first scale the page content according to the zoom level, and *then* apply font hinting appropriate for the actual on-screen font size?


By smls at Sun, 12/11/2011 - 11:25

Yes we are disabling hinting because qt normally applies it too soon. And when it's applied too soon it ruins the look rather than improve it.

In theory it might be nice to apply the hinting after scaling but that means the text has to be relayouted everytime the zoom is changed, which simply is too costly.

By boemann at Sun, 12/11/2011 - 12:15

OK, thanks for the clarification.

I must say I'm really happy about this change, it will make Calligra actually usable for me. I hope Qt 4.8 gets released soon, so I (or my distro) can re-compile Calligra against it...

By smls at Sun, 12/11/2011 - 13:02

by other s/w with similar functionality.

It would appear that an attribute that allows scaling can be used, with a signal/event that sets that attribute. The signal will be fired after say, a zoom event and when scaling is done, the attribute is reset.

Am I missing something or oversimplifying it ?

By Vasu Muppalla at Tue, 12/27/2011 - 19:26