Bug 286440 - Accessibility color changes produce less readable text with anti-aliased text
Summary: Accessibility color changes produce less readable text with anti-aliased text
Status: CONFIRMED
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: 0.13.2
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-11-12 19:17 UTC by Jörg Walter
Modified: 2021-03-09 23:59 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jörg Walter 2011-11-12 19:17:30 UTC
Version:           0.13.2 (using KDE 4.7.2) 
OS:                Linux

When using the accessibility options to invert / change text colors, anti-aliased text gets less readable. Especially the "good" PDFs that are not bi-level scanned papers but actual computer-produced text PDFs get a lot less readable. Combine that with italic fonts, small subscript letters and thin lines widely used in algebraic formulae,  the result sometimes is even harder to read than the original.

This may be a result of the perceptual nonlinearity of such transformations. If this was done in linear space instead of perceptual, it looks way better. Something along these lines:

f(x) = (x/255)^gamma * 255
f-1(x) = (x/255)^1/gamma * 255

invert(x) = f(255-f-1(x))

instead of invert(x) = 255-x (for 8 bit per channel, obviously)

Something similar would be needed for the option to change light/dark colors, especially if using a "dark" color that is brighter than the "light" color.

A gamma value of 2 would not be entirely correct, but would be easy to calculate: f(x) = x*x/255 and f-1(x) = sqrt(x)*sqrt(255). Simulating this in gimp is easy:

1. Open a suitable PDF in Okular. I used page 6 of http://www.abiezzi.com/Salim/publications/Docs/NEWBASIS.pdf and page 16 of the on-topic document http://www.poynton.com/PDFs/Rehabilitation_of_gamma.pdf
2. Select and copy a rectangle to the clipboard at any chosen view size. I used "fit to width" with Okular at 1/2 screen width, as this is my most common viewing situation.
3. Paste it in gimp, make sure to have zoom at 100% so that gimp doesn't introduce any more anti-aliasing
4. Use Colors/Invert (this is the reference layer - inversion as Okular does it)
5. Paste the same image as new layer
6. Use Colors/Levels and enter a gamma value of .5
7. Use Colors/Invert (this is inversion in linear space)
8. Use Colors/Levels and enter a gamma value of 2
9. Paste the same image as new layer
10. Use the Layers dialog to switch between the three layers and compare which one looks 
more readable.

To evaluate the image quality, in the first PDF compare the brightness of letters with diagonals, like "w" with letters like "n" from a large distance or with squinted eyes. In the original, w and n have similar darkness, maybe w is a bit darker. In the non-gamma-corrected inversion, w looks noticeably fainter than n. In the proposed inversion, w again matches n. In test images created from the second PDF, you can easily see that naive inversion creates a very non-uniform brightness of text blocks, while the gamma-corrected method keeps a uniform brightness.

This can be repeated for various other gamma levels, like the human subjective gamma of 1.25 (with the inverse of 0.8) that Poynton mentions.

Given Poynton's explanations and these tests, the gamma value of 2 probably isn't correct at all, but it leads to fast calculation and a big visual improvement of text. IMO there is no need for a more elaborated scheme, as the main purpose, improving readability and overall quality, is met.


Reproducible: Always

Steps to Reproduce:
Use the accessibility settings to display a text PDF with inverted colors or custom colors, where "dark" is brighter than "light".

Actual Results:  
Overall text brightness becomes less uniform, letters vary more in their weight. Additionally, the text looks fainter than the original.

Expected Results:  
Relative brightness should be as in the original, as this aspect is an important point of typography's readability goals. It should not become harder to read text.

OS: Linux (x86_64) release 3.0.0-12-generic
Compiler: gcc
Comment 1 Justin Zobel 2021-03-09 23:59:25 UTC
Thank you for the bug report.

As this report hasn't seen any changes in 5 years or more, we ask if you can please confirm that the issue still persists.

If this bug is no longer persisting or relevant please change the status to resolved.