Сглаживание шрифтов

Сравним различные способы сглаживания:

Слева обычное сглаживание, справа — включена специальная программаСлева обычное сглаживание, справа — включена специальная программа

Субпиксельное сглаживание

Каждый пиксель состоит из трёх сегментов (R-красный, G-зелёный, B-голубой). Несмотря на то, что сегменты цветные, их можно задействовать для увеличения горизонтального разрешения экрана. Например, если в пикселях разрешение экрана 800*600, то в субпикселях — 2400*600; это позволяет рисовать более плавные линии по сравнению с 800*600. Однако, это «даёт свободу» только по горизонтали (для рисования вертикальных и наклонных линий). Поэтому горизонтальные линии обычно вписаны строго в пиксельную сетку (при увеличении они чисто чёрные):

Состав пикселя и принцип субпиксельного сглаживанияСостав пикселя и принцип субпиксельного сглаживания

Порядок сегметов в пикселе может различаться у разных мониторов. Все примеры в этой статье приводятся для LCD-BGR.

Предыстория

Много раз, глядя на шрифты в ОС Windows XP, я удивлялся, почему в системе нет дополнительных настроек отрисовки. Есть только «стандартное сглаживание» (буэээ) и cleartype (неплохое). Последнее появилось в XP, а в третьем сервис-паке появился доп. экран настройки этого cleartype:

Настройка сглаживания шрифтов под ВиндойНастройка сглаживания шрифтов под Виндой

Апдейт. В Висте и Семёрке, кстати, ничего не изменилось.

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

Поиски вывели меня на программу GDI++ (легко ищется в Гугле). Её написали Японцы: у них иероглифы, в которых может быть куча штрихов. Все штрихи надо красиво и читабельно отобразить. Прога сидит в трее и имеет много готовых шаблонов сглаживания:

Настройка GDI++Настройка GDI++

Я привыкал к этой программе несколько дней, то включая, а то выключая опять. В итоге серьёзно на неё подсел, и теперь системное сглаживание кажется мне уродством. Особенно в режиме программирования и чтения сайтов:

Сверху — cleartype, снизу — GDI++Сверху — cleartype, снизу — GDI++

У GDI++ есть небольшая проблема: размытие мелких шрифтов. Это легко решается увеличением системного шрифта (в настройках Винды и во всех программах).

Сглаживание в браузерах

Первым браузером на Винде, который позаботился о проблеме шрифтов, был Сафари. Но шрифты в нём безбожно мажутся. Обратите внимание на букву «ч» в слове «ночных». Только Винда её отобразила хорошо:

Смотрим на букву Ч в разных режимах СафариСмотрим на букву Ч в разных режимах Сафари

Как видно, ширина штрихов «скачет» во всех режимах. Методы Сафари хорошо бы подошли, если бы штрихи были как минимум 2-3 пикселя в ширину.

Фаерфокс использует системный рендеринг, и GDI++ благополучно перехватывает инициативу. Сайты выглядят красиво:

Слева — XP, справа — GDI++Слева — XP, справа — GDI++

Апдейт. В последних версиях Фаерфокса GDI++ не работает. Чтобы заработало, надо отключить аппаратное ускорение: Инструменты → Настройки → Дополнительные → Общие, и там снять галку «По возможности использовать аппаратное ускорение».

19 сентября 2010шрифт

Смотрите также

Комментарии закрыты. По всем вопросам обращайтесь ко мне по почте, через Вотсап или Вконтакте, см. раздел Контакты

Следующая заметка

© 2010