Pourquoi la transparence désactive-t-elle le rendu des sous-pixels dans Adobe Reader?

9

Je préfère normalement Adobe Reader (toujours v9 sous Linux) à tous les autres visualiseurs PDF car je pense qu'il a la meilleure qualité de rendu, même si d'autres ont rattrapé leur retard ces derniers temps. Cette qualité de rendu semble être en grande partie due à CoolType, l'implémentation par Adobe du rendu sous-pixel. Malheureusement, j'ai constaté qu'Adobe Reader désactive systématiquement le rendu des sous-pixels (sur une base par page) dès que la page contient des éléments transparents. Un exemple:

La forme bleue est opaque, le texte est rendu en utilisant des sous-pixels:

opaque

La forme bleue est transparente à 50%, le texte est rendu avec l'anticrénelage standard:

transparent

Les deux fichiers pdf correspondants ont été générés exactement de la même manière (en utilisant TikZ / PGF avec pdflatex), sauf pour spécifier la transparence dans le second cas. J'ai créé ces fichiers PDF moi-même, mais j'ai souvent observé le même effet avec des fichiers PDF provenant de sources complètement différentes. Étrangement, Foxit Reader et Okular rendent les deux mêmes fichiers PDF de manière exactement identique (sauf bien sûr pour la partie transparente elle-même), mais à une IMHO de qualité généralement pire.

Ma question: quelqu'un sait-il pourquoi cela se produit et si / comment cela peut être évité?

A. Donda
la source
Cela peut être un bug d'Adobe, mieux évoqué dans leurs forums. Vous pouvez essayer d'améliorer l'affichage des polices sous Linux (quelle version?) En utilisant Infinality . Voir aussi Configuration des polices archlinux - Infinality .
harrymc
@harrymc Je doute que cela affecte le rendu des polices Adobe Reader, mais c'est une astuce intéressante sinon. Peut-être qu'Okular s'améliore de cette façon. Merci!
A. Donda
@slhck, je pensais avoir mis une prime sur ça? Avez-vous repris cela d'une manière ou d'une autre, ou suis-je simplement confus? Merci quand même!
A. Donda

Réponses:

1

Le rendu des sous-pixels se fait en utilisant les couleurs individuelles d'un pixel. Chaque pixel sur un écran est composé d'un pixel encore plus petit avec la couleur du rouge, du vert et du bleu.

Si vous souhaitez rendre un objet d'une largeur de 10,3 pixels, vous utiliserez uniquement la couleur rouge du 11e pixel. L'écran émettrait alors de la lumière à partir de 31 sous-pixels, soit 10 pixels pleins puis un tiers de pixel.

Si vous essayez de simuler cet effet vous-même, en dessinant simplement 10 pixels blancs de large, puis un pixel rouge à droite sur un fond noir, vous verriez l'effet vous-même.

Le problème est que vous remarquerez que le bord droit serait rouge, ceci si vous le faites simplement de cette façon. Très probablement, Adobe doit utiliser des algorithmes avancés pour annuler cet effet - éventuellement en amplifiant la valeur du rouge et du vert du 10e pixel.

Ajouter de la transparence à un algorithme déjà assez avancé est probablement quelque chose qu'ils n'ont pas encore résolu et, par conséquent, ils désactivent simplement le rendu sous-pixel.

Je crois que c'est le cas, parce que j'ai essayé d'implémenter le rendu sous-pixel de cette manière naïve et j'ai vu cet effet "côté coloré" moi-même.

frodeborli
la source
Oui, l'effet de bord coloré est définitivement là, vous pouvez le voir également dans les captures d'écran agrandies ci-dessus, et je ne vois pas vraiment comment cela pourrait être évité. Je pense que le rendu en sous-pixels n'a de sens que lorsque les pixels entiers sont déjà petits. Vous avez peut-être raison, c'est trop compliqué.
A. Donda
Je pense qu'ils sont trop compliqués. Sinon, la technologie ne serait pas digne de ces noms sympas :)
frodeborli
Juste une note: l'ordre des sous-pixels n'est pas toujours RVB. Si nous regardons les captures d'écran fournies par l'OP, elles semblent être ordonnées par BGR: les sous-pixels sur les bords gauches sont rouges, tandis que les sous-pixels sur les bords droits sont bleus.
Johan Boulé
0

Cela peut être un bug d'Adobe, mieux évoqué dans leurs forums.

Pour améliorer l'affichage des polices sous Linux, vous pouvez essayer d'utiliser Infinality:

Infinality est un ensemble de correctifs Freetype qui essaient de fournir un rendu de police amélioré pour Linux et aussi, pour permettre une personnalisation facile afin que les utilisateurs puissent ajuster les paramètres à leur goût. En l'utilisant, vous pouvez facilement définir le style de police pour émuler OSX, OSX2, Windows 98, WIndows XP ou Windows 7 ou vous pouvez utiliser les styles "Linux" ou "Infinality" (par défaut).

Voir:

Meilleur rendu des polices sous Linux avec Infinality
Configuration des polices archlinux - Infinality .

harrymc
la source
J'apprécie les conseils et j'irai demander dans les forums Adobe. Cependant, je ne pense pas que cela puisse être considéré comme une réponse.
A. Donda
Aucun problème. Voulez-vous que je supprime cela?
harrymc
Non, je voulais juste expliquer pourquoi je n'ai pas voté.
A. Donda
Malheureusement, cela semble être la seule réponse que vous obtiendrez.
harrymc