¿Por qué la transparencia deshabilita la representación de subpíxeles en Adobe Reader?

9

Normalmente prefiero Adobe Reader (todavía v9 en Linux) a todos los demás visores de PDF porque creo que tiene la mejor calidad de representación, a pesar de que otros se han puesto al día últimamente. Esta calidad de representación parece deberse en gran parte a CoolType, la implementación de Adobe de la representación de subpíxeles. Desafortunadamente, descubrí que Adobe Reader apaga constantemente la representación de subpíxeles (por página) tan pronto como la página contiene elementos transparentes. Un ejemplo:

La forma azul es opaca, el texto se representa con subpíxeles:

opaco

La forma azul es 50% transparente, el texto se representa con antialiasing estándar:

transparente

Los dos archivos pdf correspondientes se han generado exactamente de la misma manera (usando TikZ / PGF con pdflatex), excepto para especificar la transparencia en el segundo caso. Yo mismo hice estos archivos PDF, pero con frecuencia he observado el mismo efecto con archivos PDF de fuentes completamente diferentes. Curiosamente, Foxit Reader y Okular reproducen los mismos dos archivos PDF de una manera exactamente idéntica (excepto, por supuesto, para la parte transparente en sí), pero en mi humilde opinión, en general, de peor calidad.

Mi pregunta: ¿Alguien sabe por qué sucede esto y si / cómo se puede evitar?

A. Donda
fuente
Esto puede ser un error en Adobe, mejor planteado en sus foros. Puede intentar mejorar la visualización de fuentes en Linux (¿qué versión?) Utilizando Infinality . Consulte también Configuración de fuente archlinux - Infinality .
harrymc
@harrymc Dudo que esto afecte el renderizado de fuentes de Adobe Reader, pero de lo contrario es un consejo interesante. Quizás Okular mejore de esta manera. ¡Gracias!
A. Donda
@slhck, ¿pensé que había recompensado esto? ¿Asumiste esto de alguna manera, o simplemente estoy confundido? ¡Gracias de todos modos!
A. Donda

Respuestas:

1

La representación de subpíxeles se realiza utilizando los colores individuales de un píxel. Cada píxel en una pantalla está formado por un píxel aún más pequeño con el color rojo, verde y azul.

Si desea renderizar un objeto que tiene 10.3 píxeles de ancho, usaría solo el color rojo del undécimo píxel. La pantalla emitiría luz desde 31 subpíxeles, es decir, 10 píxeles completos y luego un tercio de píxel.

Si intenta simular este efecto usted mismo, simplemente dibujando 10 píxeles blancos de ancho y luego un píxel rojo a la derecha sobre un fondo negro, verá el efecto usted mismo.

El problema es que notarías que el borde derecho sería rojo, esto si simplemente lo haces de esa manera. Lo más probable es que Adobe tenga que usar algoritmos avanzados para cancelar ese efecto, posiblemente amplificando el valor del rojo y el verde del décimo píxel.

Agregar transparencia a un algoritmo que ya está bastante avanzado es probablemente algo que aún no han resuelto y, por lo tanto, simplemente deshabilitan la representación de subpíxeles.

Creo que este es el caso, porque he intentado implementar el renderizado de subpíxeles de esta manera ingenua y vi ese efecto de "lado coloreado".

frodeborli
fuente
Sí, el efecto de borde de color definitivamente está ahí, puedes verlo también en las capturas de pantalla ampliadas de arriba, y realmente no veo cómo podría evitarse. Creo que la representación de subpíxeles solo tiene sentido cuando los píxeles completos ya son pequeños. Tal vez tengas razón, que es demasiado complicado.
A. Donda
Creo que son demasiado complicados. Si no, la tecnología no sería digna de nombres tan geniales :)
frodeborli
Solo una nota: el orden de los subpíxeles puede no ser siempre RGB. Si miramos las capturas de pantalla proporcionadas por el OP, parece estar ordenado por BGR: los subpíxeles en los bordes izquierdos son rojos, mientras que los subpíxeles en los bordes derechos son azules.
Johan Boulé
0

Esto puede ser un error en Adobe, mejor planteado en sus foros.

Para mejorar la visualización de fuentes en Linux, puede intentar usar Infinality:

Infinality es un conjunto de parches Freetype que intentan proporcionar una representación de fuente mejorada para Linux y también, para permitir una fácil personalización para que los usuarios puedan ajustar la configuración a su gusto. Utilizándolo, puede configurar fácilmente el estilo de fuente para emular OSX, OSX2, Windows 98, Windows XP o Windows 7 o puede usar los estilos "Linux" o "Infinality" (predeterminado).

Ver :

Mejor representación de fuentes en Linux con Infinality Archlinux
Font Configuration - Infinality .

harrymc
fuente
Agradezco los consejos, y preguntaré en los foros de Adobe. Sin embargo, no creo que esto califique como una respuesta.
A. Donda
No hay problema. ¿Quieres que elimine esto?
harrymc
No, solo quería explicar por qué no voté.
A. Donda
Desafortunadamente, esta parece ser la única respuesta que obtendrá.
harrymc