Введение
Техника повышения воспринимаемого разрешения дисплея
Субпиксельное сглаживание — это метод, используемый для увеличения эффективного разрешения цветного дисплейного устройства. Он использует структуру каждого пикселя, состоящего из отдельных адресуемых красных, зеленых и синих компонентов, расположенных рядом друг с другом в матрице дисплея, называемых субпикселями, и применяет их в качестве единиц рендеринга вместо пикселей. Субпиксельное сглаживание в основном используется для рендеринга текста на дисплеях со стандартным DPI. Несмотря на возможные цветовые искажения, оно также может применяться для рендеринга общей графики.
История
Происхождение субпиксельного рендеринга, используемого в настоящее время, остаётся предметом споров. Apple Inc., IBM и Microsoft запатентовали различные реализации с определёнными техническими различиями, обусловленными разными задачами, для которых разрабатывались эти технологии. Microsoft обладала рядом патентов в США на технологию субпиксельного рендеринга для рендеринга текста в RGB Stripe-макетах. Патенты № 6,219,025, 6,239,783, 6,307,566, 6,225,973, 6,243,070, 6,393,145, 6,421,054, 6,282,327, 6,624,828 были поданы в период с 7 октября 1998 года по 7 октября 1999 года и срок их действия истек 30 июля 2019 года.
Характеристики
Один пиксель на цветном дисплее состоит из нескольких подпикселей, обычно трех, расположенных слева направо в виде красного, зеленого и синего (RGB). Их легко увидеть, если посмотреть на них с помощью небольшого увеличительного стекла, например лупы. Эти компоненты пикселя воспринимаются человеческим глазом как единый цвет из-за размытия, создаваемого оптикой, и пространственной интеграции нервными клетками в глазу. Однако глаз гораздо более чувствителен к положению. Поэтому, включение зеленого и синего подпикселей одного пикселя и красного подпикселя следующего пикселя справа создаст белую точку, но она будет казаться смещенной на 1/3 пикселя вправо от белой точки, которую можно было бы увидеть, используя только RGB первого пикселя. Субпиксельный рендеринг использует этот эффект для достижения в три раза большего горизонтального разрешения рендеризуемого изображения, хотя для получения правильного цвета ему необходимо размыть изображение, обеспечивая ту же интенсивность красного, зеленого и синего цветов, что и при отсутствии субпиксельного рендеринга. Субпиксельный рендеринг не требует использования сглаживания (антиалиазинга) и обеспечивает более плавный результат независимо от того, используется сглаживание или нет, поскольку он искусственно повышает разрешение. Однако он может приводить к цветовым артефактам, так как подпиксели окрашены. Последующая фильтрация, применяемая для устранения этих цветовых артефактов, является формой сглаживания, хотя ее цель – не сглаживание неровных краев, как при обычном сглаживании. Субпиксельный рендеринг требует, чтобы программное обеспечение знало расположение подпикселей. Наиболее распространенная причина ошибок – мониторы, которые можно поворачивать на 90 (или 180) градусов, хотя существуют мониторы с другими расположениями подпикселей, например BGR, треугольниками или с 4 цветами, такими как RGBW-квадраты. На любом таком дисплее результат неправильного субпиксельного рендеринга будет хуже, чем если бы он не использовался вовсе (он не вызовет цветовых артефактов, но приведет к появлению зашумленных краев).
Яблоко II
Стив Гибсон утверждает, что Apple II, представленный в 1977 году, поддерживает раннюю форму субпиксельного рендеринга в режиме графики высокого разрешения (280×192). В патенте Возняка использовалось всего 2 "субпикселя". Байты, составляющие буфер экрана Apple II в режиме высокого разрешения, содержат семь видимых битов (каждый из которых напрямую соответствует пикселю) и флаг-бит, используемый для выбора между фиолетово-зелёными или сине-оранжевыми цветовыми наборами. Каждый пиксель, представленный одним битом, либо включен, либо выключен; внутри самого пикселя нет битов для определения цвета или яркости. Цвет создается как артефакт схемы цветового кодирования NTSC и определяется горизонтальным положением: пиксели с четными горизонтальными координатами всегда фиолетовые (или синие, если установлен флаг-бит), а пиксели с нечетными координатами – всегда зеленые (или оранжевые). Два соседних включенных пикселя всегда отображаются белым, независимо от того, является ли пара четной/нечетной или нечетной/четной, и независимо от значения флаг-бита. Это приближение, но именно это большинство программистов того времени имели в виду при работе с режимом высокого разрешения Apple. Пример Гибсона заключается в том, что поскольку два соседних бита создают белый блок, фактически на пиксель приходится два бита: один, активирующий фиолетовую левую половину пикселя, а другой – зеленую правую половину. Если программист вместо этого активирует зеленую правую половину пикселя и фиолетовую левую половину следующего, результатом будет белый блок, смещенный на 1/2 пикселя вправо, что и является примером субпиксельного рендеринга. Однако неясно, рассматривали ли программисты Apple II пары битов как пиксели, или же каждый бит считали отдельным пикселем. Флаг-бит в каждом байте влияет на цвет, смещая пиксели на полпикселя вправо. Этот сдвиг на полпикселя был использован некоторыми графическими программами, такими как HRCG (High Resolution Character Generator) – утилитой Apple, отображавшей текст в режиме графики высокого разрешения, – для сглаживания диагоналей.
ClearType (полное описание)
Microsoft анонсировала свою технологию рендеринга субпикселей, ClearType, на выставке COMDEX в 1998 году. В мае 2000 года Microsoft опубликовала научную работу «Displaced Filtering for Patterned Displays», описывающую алгоритм фильтрации, лежащий в основе ClearType. Эта технология была включена в Windows XP, но не активировалась по умолчанию до Windows Vista. (Однако производители оборудования, поставляющие Windows XP (OEM), могли и меняли эту настройку по умолчанию.)
Фритайп
FreeType, библиотека, используемая большинством современного программного обеспечения в X Window System, содержит две реализации с открытым исходным кодом. Оригинальная реализация использует антиалиасинговые фильтры ClearType и содержит следующее уведомление: "Алгоритм цветовой фильтрации технологии ClearType от Microsoft для субпиксельного рендеринга защищен патентами; по этой причине соответствующий код в FreeType отключен по умолчанию. Следует отметить, что субпиксельный рендеринг сам по себе является общеизвестным; использование другого цветового фильтра, таким образом, легко позволяет обойти патентные притязания Microsoft". FreeType предлагает различные цветовые фильтры. Начиная с версии 2.6.2, фильтр по умолчанию – "light" (светлый), фильтр, который одновременно нормализован (сумма значений равна 1) и сбалансирован по цвету (устраняет цветовые ореолы за счет снижения четкости). Начиная с версии 2.8.1, существует вторая реализация под названием Harmony, которая "обеспечивает высококачественный вывод, оптимизированный для ЖК-дисплеев, без использования методов утроения разрешения и фильтрации, применяемых в ClearType". Этот метод включен по умолчанию. При использовании этого метода "каждый цветовой канал генерируется отдельно после сдвига контура глифа, используя тот факт, что цветовые субпиксели на ЖК-панелях смещены на треть пикселя. Результат практически неотличим от ClearType с использованием легкого 3-точечного фильтра". Поскольку метод Harmony не требует дополнительной фильтрации, он не подпадает под действие патентов ClearType.
CoolType (по умолчанию)
Adobe создала собственный субпиксельный рендерер CoolType, что позволило им обеспечить единообразное отображение документов в различных операционных системах, таких как Windows, MacOS, Linux и другие. Запущенный примерно в 2001 году, CoolType поддерживал большее количество шрифтов, чем ClearType от Microsoft, который в то время был ограничен шрифтами TrueType, в то время как CoolType от Adobe поддерживал также шрифты PostScript (и их эквивалент OpenType).
macOS
Mac OS X (позже OS X, теперь macOS) также использовала субпиксельное сглаживание, как часть Quartz 2D. Однако от него отказались после появления дисплеев Retina. В отличие от реализации Microsoft, которая стремится к плотной привязке к пиксельной сетке (намеки шрифтов) для максимальной четкости, реализация Apple отдает приоритет форме символов, заданной их создателями.