Por que a transparência desabilita a renderização de subpixel no Adobe Reader?


9

Normalmente, prefiro o Adobe Reader (ainda v9 no Linux) a todos os outros visualizadores de PDF, porque acho que ele tem a melhor qualidade de renderização, mesmo que outros tenham se recuperado ultimamente. Essa qualidade de renderização parece ser em grande parte devido ao CoolType, a implementação da Adobe de renderização de subpixel. Infelizmente, descobri que o Adobe Reader desativa consistentemente a renderização de subpixel (por página) assim que a página contém elementos transparentes. Um exemplo:

A forma azul é opaca, o texto é processado usando subpixels:

opaco

A forma azul é 50% transparente, o texto é renderizado com antialiasing padrão:

transparente

Os dois arquivos pdf correspondentes foram gerados exatamente da mesma maneira (usando TikZ / PGF com pdflatex), exceto para especificar a transparência no segundo caso. Eu mesmo fiz esses PDFs, mas frequentemente observei o mesmo efeito com os PDFs de fontes completamente diferentes. Estranhamente, Foxit Reader e Okular processam os mesmos dois PDFs de uma maneira exatamente idêntica (exceto, é claro, pela parte transparente em si), mas com uma qualidade geralmente pior em IMHO.

Minha pergunta: alguém sabe por que isso acontece e se / como isso pode ser evitado?


Isso pode ser um bug na Adobe, mais suscitado em seus fóruns. Você pode tentar melhorar a exibição da fonte no Linux (qual versão?) Usando o Infinality . Veja também archlinux Font Configuration - Infinality .
precisa

@harrymc Duvido que isso afete a renderização da fonte do Adobe Reader, mas, caso contrário, é uma dica interessante. Talvez o Okular melhore dessa maneira. Obrigado!
A.Delda

@ Slhck, eu pensei que tinha colocado uma recompensa por isso? Você assumiu isso de alguma forma, ou estou apenas confuso? Obrigado mesmo assim!
A.Delda

Respostas:


1

A renderização de subpixel é feita usando as cores individuais de um pixel. Cada pixel em uma tela é composto por um pixel ainda menor com as cores vermelho, verde e azul.

Se você deseja renderizar um objeto com 10,3 pixels de largura, use apenas a cor vermelha do 11º pixel. A tela então emitia luz de 31 subpixels, ou seja, 10 pixels completos e depois um terço de pixel.

Se você tentar simular esse efeito, simplesmente desenhando 10 pixels brancos de largura e, em seguida, um pixel vermelho à direita em um fundo preto, você mesmo verá o efeito.

O problema é que você notaria que a borda direita seria vermelha, se você simplesmente fizer dessa maneira. Provavelmente, a Adobe precisa usar algoritmos avançados para cancelar esse efeito - possivelmente amplificando o valor do vermelho e do verde do décimo pixel.

Adicionar transparência a um algoritmo já avançado é provavelmente algo que eles ainda não resolveram e, portanto, simplesmente desativam a renderização de subpixel.

Acredito que seja esse o caso, porque tentei implementar o subpixel de maneira ingênua e vi o efeito "lado colorido".


Sim, o efeito da borda colorida está definitivamente lá, você pode vê-lo também nas capturas de tela ampliadas acima, e eu realmente não vejo como isso poderia ser evitado. Eu acho que a renderização de subpixel só faz sentido quando os pixels inteiros já são pequenos. Talvez você esteja certo, que é muito complicado.
A.Delda

Eu acredito que eles são muito complicados. Se não, a tecnologia não seria digno de tais nomes legais :)
frodeborli

Apenas uma observação: a ordem dos subpixels nem sempre pode ser RGB. Se olharmos para as capturas de tela fornecidas pelo OP, ele parece ser pedido pelo BGR: os subpixels nas bordas esquerdas são vermelhos, enquanto os subpixels nas bordas direitas são azuis.
Johan Boulé

0

Isso pode ser um bug na Adobe, mais suscitado em seus fóruns.

Para melhorar a exibição da fonte no Linux, você pode tentar usar o Infinality:

Infinality é um conjunto de patches Freetype que tentam fornecer uma renderização de fonte aprimorada para Linux e também, para permitir fácil personalização para que os usuários possam ajustar as configurações de acordo com suas preferências. Com ele, você pode definir facilmente o estilo da fonte para emular OSX, OSX2, Windows 98, Windows XP ou Windows 7 ou usar os estilos "Linux" ou "Infinalidade" (padrão).

Vejo :

Melhor renderização de fontes no Linux, com Infinality
archlinux Font Configuration - Infinality .


Aprecio as dicas e vou pedir nos fóruns da Adobe. No entanto, não acho que isso seja qualificado como resposta.
A.Delda

Sem problemas. Deseja que eu apague isso?
harrymc

Não, eu só queria explicar por que não votei.
A.Delda

Infelizmente, esta parece ser a única resposta que você receberá.
harrymc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.