[Okular-devel] [PATCH] Fix rendering of DVI documents

Benoit Jacob jacob.benoit.1 at gmail.com
Fri Oct 2 22:33:03 CEST 2009


2009/10/2 Albert Astals Cid <aacid at kde.org>:
> A Divendres, 2 d'octubre de 2009, Benoit Jacob va escriure:
>> Hi List,
>>
>> I noticed that the rendering of DVI documents was broken exactly in
>> the same way as what I observed with PDF documents, namely, it used
>> auto-hinting which looks especially bad with TeX fonts.
>>
>> Attached is a 1-line patch that changes it. I need your permission to
>>  commit.
>>
>> Screenshots:
>> * original :
>>  http://picasaweb.google.ca/lh/photo/fry54ANy23UesNpFhbWanA?feat=directlink
>>  * fixed :
>>  http://picasaweb.google.ca/lh/photo/OjQIZ7Of6wP74k7fKUwXTw?feat=directlink
>>
>> Here are some comments before one objects that disabling hinting is
>> just a matter of taste, etc.
>>
>> First, it's obvious that the "original" screenshot linked above is
>> horrible and that the "fixed" is the one that looks good.
>>
>> Second, it is a consensus on the Poppler/PDF side that one should use
>> no hinting, and then, there's no reason why DVI should be any
>> different. To summarize the situation on the PDF side:
>> * poppler/cairo (hence Evince) 's code completely disables hinting
>> * poppler/splash (hence Okular) 's code _meant_ to completely disable
>> hinting (actually only auto-hinting, but in the context of DVI that's
>> really the same because almost all DVI files use Type 1 fonts, and
>> bytecode only exists in TrueType fonts). It was a clear bug in the
>> code, where it was clear that the code didn't do what it intended,
>> that resulted in hinted fonts being used.
>>
>> Third, the old KDVI used to not do any hinting, I'm completely sure of
>> that because I've spent hundreds of hours looking at documents in it.
>> I remember distinctly the (imho beautiful) slightly fuzzy look of the
>> TeX fonts in it, that is characteristic of non-hinted text, although
>> at that time I didn't know about hinting. That said, I used "svn
>> annotate" to see who enabled hinting in the C++ code, and it turns out
>> to be Stefan Kebekus himself in an old revision (240000-something). I
>> am puzzled about that, but I still maintain that KDVI didn't use
>> hinting on all the Linux systems that I tried. My best guess is that
>> Stefan Kebekus _thought_ that he had enabled hinting but for some
>> reason it wasn't used. I haven't investigated further as this is quite
>> intricate, and of course I only have Okular's code at hand, I haven't
>> looked at the actual KDVI code.
>>
>> OK to commit?
>
> No, actually what it is clear that *you* don't like hinting, and you have a
> certain amount of followers, the problem is that typically people that is
> happy with a setting is not much active defending it because they are happy in
> their sofas.

Come on. There's no way at all that the "original" screenshot that I
posted could be satisfactory. Look at the letters, they border on
unreadable. The e look like c, etc.

There is no way that that screenshot can be acceptable.

It's not a matter of liking hinting or not. I'm just saying that that
particular screenshot should not happen.

Thus, what we have here is a BUG. I'd like you to acknowledge that.
There's nothing wrong about having bugs.

The next question is how to fix that bug. When I first suggested that
it could be caused by auto-hinting, you told me that there was no
reason why I should claim that, since I was no expert. Fair enough.
Then here I come, making a patch to disable hinting, and bingo!
Suddenly the bug appears fixed.

Conclusion:

At least of THAT PARTICULAR font, hinting was a bad thing --- it was
the cause of the bug.

Now if this were a PDF document, one could still say, hey! But just
because that particular font looks bad with hinting, doesn't mean that
all fonts will! Well, even with that, Poppler/Cairo is still disabling
hinting and Poppler/Splash still _meant_ to disable auto-hinting. ( By
the way you never addressed this point. )

But here we're not talking about PDF documents, we're talking about
DVI, and there it's even 100x more of a no-brainer.

Because DVI documents, ultimately, are all generated by TeX or PDFTeX,
using TeX fonts. And there aren't too many TeX fonts, almost everybody
uses the standard fonts that are Roman, Computer Modern, and Times.

That's just 3 fonts to check and I already checked one for you. The
_default_ one (on modern tex distros), i.e., I think, Computer Modern.

Feel free to check the 2 other ones, but I won't waste more time,
because the truth is that, out of the dozens of DVI documents that I
tried, NONE looked good in Okular.

>
> My suggestion is adding a configuration option that lets the user choose
> between "No Hinting", "Hinting" and "Hinting as set in KDE settings". For KDE
> 4.3.x we can add it, it set in "Hinting" and the only configuration option
> will be thought non GUI as we can't add translatable texts. For KDE 4.4.x we
> can default to "No Hinting" if others here (basically Pino, Brad, Tokoe)
> agree.

As long as "no hinting" is the default, I am happy. This is useless
for DVI but may be useful for PDF, for the reasons explained above.

You run no risk of getting hordes of angry users slamming you for
this. For if you had any exposure to potential angry users, you would
already have been slammed quite a bit by the users who are unhappy
about the current state of Okular. I mean, Okular currently messes the
rendering of, say, all DVI files (unconditionally) and perhaps half of
PDF files (at least on Ubuntu and openSUSE).

Benoit


More information about the Okular-devel mailing list