Почему прозрачность отключает субпиксельный рендеринг в Adobe Reader?

9

Я обычно предпочитаю Adobe Reader (все еще v9 в Linux) всем другим программам просмотра PDF, потому что я думаю, что он имеет лучшее качество рендеринга, хотя в последнее время другие догоняли его. Это качество рендеринга, по-видимому, во многом благодаря CoolType, реализации Adobe субпиксельного рендеринга. К сожалению, я обнаружил, что Adobe Reader последовательно отключает субпиксельный рендеринг (для каждой страницы), как только страница содержит прозрачные элементы. Пример:

Синяя фигура непрозрачна, текст отображается с использованием субпикселей:

непрозрачный

Синяя фигура прозрачна на 50%, текст отображается стандартным сглаживанием:

прозрачный

Два соответствующих файла pdf были сгенерированы абсолютно одинаково (с использованием TikZ / PGF с pdflatex), за исключением указания прозрачности во втором случае. Я сделал эти PDF-файлы сам, но я часто наблюдал тот же эффект с PDF-файлами из совершенно разных источников. Как ни странно, Foxit Reader и Okular отрисовывают одинаковые два файла PDF абсолютно одинаковым образом (за исключением, конечно, самой прозрачной части), но с качеством IMHO в целом хуже.

Мой вопрос: знает ли кто-нибудь, почему это происходит, и можно ли / как этого избежать?

А. Донда
источник
Это может быть ошибкой в ​​Adobe, лучше поднятой на их форумах. Вы можете попробовать улучшить отображение шрифтов в Linux (какая версия?) С помощью Infinality . Смотрите также Настройка шрифта archlinux - Бесконечность .
Harrymc
@harrymc Я сомневаюсь, что это влияет на рендеринг шрифтов Adobe Reader, но в остальном это интересный совет. Может быть, Окулар поправляется таким образом. Спасибо!
А. Донда
@slhck, я думал, что наградил это? Вы как-то это переняли, или я просто запутался? Все равно спасибо!
А. Донда

Ответы:

1

Субпиксельная визуализация выполняется с использованием отдельных цветов пикселя. Каждый пиксель на экране состоит из еще меньшего пикселя с цветом красного, зеленого и синего.

Если вы хотите визуализировать объект шириной 10,3 пикселя, вы должны использовать только красный цвет 11-го пикселя. Затем экран будет излучать свет из 31 субпикселя, то есть 10 полных пикселей, а затем треть пикселя.

Если вы попытаетесь смоделировать этот эффект самостоятельно, просто нарисовав 10 белых пикселей шириной, а затем красный пиксель справа на черном фоне, вы увидите эффект сами.

Проблема в том, что вы заметите, что правый край будет красным, если вы просто сделаете это таким образом. Скорее всего, Adobe должна использовать продвинутые алгоритмы, чтобы нейтрализовать этот эффект - возможно, путем усиления значения красного и зеленого 10-го пикселя.

Добавление прозрачности в уже достаточно продвинутый алгоритм, вероятно, еще не решено, и поэтому они просто отключают субпиксельный рендеринг.

Я полагаю, что это так, потому что я пытался реализовать субпиксельный рендеринг таким наивным способом и сам видел эффект «цветной стороны».

frodeborli
источник
Да, эффект цветного края определенно есть, вы можете увидеть его также на увеличенных снимках экрана выше, и я не вижу, как его можно избежать. Я думаю, что субпиксельный рендеринг имеет смысл только тогда, когда целые пиксели уже малы. Может быть, вы правы, что это слишком сложно.
А.Донда
Я считаю, что они слишком сложны. Если нет, технология не будет достойна таких крутых имен :)
frodeborli
Только примечание: порядок подпикселей не всегда может быть RGB. Если мы посмотрим на скриншоты, предоставленные OP, то они выглядят упорядоченными по BGR: подпиксели на левых краях красные, а подпиксели на правых краях синие.
Йохан Буле
0

Это может быть ошибкой в ​​Adobe, лучше поднятой на их форумах.

Чтобы улучшить отображение шрифтов в Linux, вы можете попробовать использовать Infinality:

Infinality - это набор патчей Freetype, которые пытаются улучшить визуализацию шрифтов для Linux, а также позволяют легко настраивать их, чтобы пользователи могли изменять настройки по своему вкусу. Используя его, вы можете легко установить стиль шрифта для эмуляции OSX, OSX2, Windows 98, Windows XP или Windows 7 или использовать стили «Linux» или «Infinality» (по умолчанию).

Видеть :

Лучший рендеринг шрифтов в Linux с Infinality
archlinux Настройка шрифтов - Infinality .

harrymc
источник
Я ценю советы, и я пойду и спросить на форумах Adobe. Тем не менее, я не думаю, что это квалифицируется как ответ.
А.Донда
Нет проблем. Вы хотите, чтобы я удалил это?
harrymc
Нет, я просто хотел объяснить, почему я не голосовал.
А. Донда
К сожалению, это единственный ответ, который вы получите.
Harrymc