75статья

Хватит “исправлять” сглаживание шрифтов

Опубликовал Александр Иваничкин, 8 апреля 2013

Я написал две статьи на тему сглаживания шрифтов в WebKit, но к сожалению, с того времени ситуация стала еще хуже. Позволив дизайнерам подбирать свои собственные режимы сглаживания шрифтов через свойство CSS -webkit-font-smoothing, разработчики WebKit открыли возможность злоупотребления форматами текста, отключая субпиксельный рендеринг шрифтов.

Как я уже говорил ранее, WebKit предоставляет дизайнерам три режима сглаживания шрифтов:

  1. Никакой, в результате чего получается резкий шрифт
  2. Субпиксельный рендеринг, т.е. стандартный режим сглаживания шрифта, который используется для большинства элементов операционной системы вашего компьютера (мобильные устройства не используют субпиксельный рендеринг, так как они должны поддерживать и вертикальную, и горизонтальную ориентацию экрана)
  3. Сглаживание, которое отключает субпиксельный рендеринг и сглаживает шрифт на пиксельном уровне, что является противоположностью субпикселям.

В чем состоит выбор? Субпиксельный рендеринг дает оптимальную четкость шрифта для обычного темного шрифта на светлом фоне. Однако, в Mac OS X, когда вы делаете наоборот и устанавливает светлый текст на темном фоне, вы получаете довольно отвратительные эффект, в результате которого текст становится слишком жирным, выходя за пределы строк. Переключение с субпиксельного рендеринга на сглаживание для светлого текста на темном фоне делает его светлее, снижая эффект жирного текста. Могут быть и другие способы использования этого параметра, например, исправление проблем со сглаживанием стандартных шрифтов в Windows, или просто использование его ради эффекта, который он создает на небольших отрывках текста, заголовках и элементах интерфейса.

Чрезмерное сглаживание

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

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

Вот скриншот двух этих режимов, на котором показан и темный текст на белом фоне, и белый текст на темном фоне:

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

Резкость субпиксельного рендеринга делает большие отрывки текста более читабельными. Светлый текст на темном фоне, как минимум в OS X, это обратный случай. Субпиксельный текст может разливаться и делать шрифт более жирным. В таком случае, сглаживание может оказаться полезным для того, чтобы сделать линии более четкими.

Это не «исправление»

Недавно я просматривал код Skeleton, отличный шаблонный сайт для отзывчивого дизайна, и заметил, что он тоже попал в ловушку сглаживания. Свойство сглаживания шрифта было включено в тело селектора чтобы изменять все на странице, и более того, там был комментарий «Исправление для рендеринга webkit».

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

Почему дизайнеры до сих пор неправильно используют это свойство?

У меня есть две теории, почему люди продолжают неправильно использовать сглаживание. Первая – это то, что они слишком сильно фокусируются на элементах страницы просто как на элементах страницы, которые нужно разместить и выстроить. Они строят иерархии элементов при помощи таких инструментов, как уровень контраста, не учитывая в процессе такие моменты, как читабельность текста. Вторая причина исходит из первой и связана с тем, что дизайнер тестирует свой сайт, который он создал, с помощью теста с прищуром, даже не пытаясь именно использовать сайт, читая текст. Давайте более подробно рассмотрим каждую причину.

Ошибка в контрасте

В веб-дизайне контраст является полезным инструментом для создания чувства иерархии между элементами страницы. Высшие уровни контраста остаются для наиболее важных элементов, чтобы они выделялись, в то время, как элементы с меньшей значимостью получают более низкий уровень контраста, что заставляет их сливаться с фоном. Таким образом, дизайнер привлекает внимание пользователя и направляет его к тому, что считается наиболее важным, в то же время отодвигая все остальное на задний план.

Распространение размытых светло-серых шрифтов, используемых в тексте, частично относится к неправильному использованию техники контраста. Дизайнер принимает во внимание, что заголовок – это более важная часть, чем автор, дата, и когда он наконец доходит до текста, он придает ему низкий уровень значимости и оформляет в сером цвете с низким контрастом.
Они стараются для скиммера – пользователя, который просматривает контент в поиске нужных элементов, вероятно сканируя перечень заголовков с целью найти желаемую статью, и таким образом снижают значимость самого текста, так как большой кусок текста не является объектом скиммера.

Несмотря на то, что применение различных уровней контраста к элементам страницы является довольно важной задачей, основной текст – это особый тип элементов, который в большинстве случаев не подвержен влиянию этой техники. Основной текст должен читаться, а потому в первую очередь он должен быть разборчивым и читабельным. Это подразумевает наличие крупного шрифта, четкого начертания, разработанного для экрана монитора, и нормального уровня контраста. Применение сглаживания вместо субпиксельного рендеринга приводит к тому, что шрифты становятся менее резкими, а снижение контраста с использованием светло-серого цвета делает текст нечитабельным. Неважно, насколько хорошо определена иерархия остальных элементов, если основной контент нечитабелен – дизайн остается неудачным.

Ошибка теста с прищуриванием

Когда дизайнер закончил создавать макет сайта, он тестирует его либо отойдя подальше от монитора, чтобы увидеть его со стороны, либо прищуривая глаза, чтобы увидеть более размытое изображение. Тест с прищуриванием помогает увидеть иерархию, организацию и разделение элементов на странице, замечая, что выделяется и как элементы выглядят при беглом взгляде.
Этот тест удобен для дизайна интерфейса, но он абсолютно бесполезен при тестировании читабельности страницы. Чтобы протестировать читабельность основного текста, вы можете сделать только одно без помощи дополнительных тестеров, а именно – прочитать текст.

Отбросьте свой “Lorem ipsum” и заполните текст чем-нибудь реальным, если вы не сделали этого ранее, и когда вы его оформляете, старайтесь именно читать. Я считаю, что лучше всего читать различные отрывки текста при изменении разметки, так как если вы уже раз его прочитали, вы будете знать о чем он, и вам будет слишком легко. Чтобы протестировать читабельность, вам следует попытаться именно читать текст, используя выбранные стили начертания и оформления. В читабельности всегда есть различия, и вы будете постоянно их ощущать. Да, различия довольно слабые, но вы должны иметь возможность понять, улучшили ли ваши изменения что-либо или нет.

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

Пожалуйста, прекратите «исправлять» сглаживание шрифтов в WebKit

В общем, это еще одна мольба к дизайнерам, чтобы они прекратили «исправлять» сглаживание шрифтов в WebKit, отключая субпиксельный рендеринг. Вы можете свободно использовать его в светлом тексте на темном фоне, чтобы исправлять стандартный рендеринг в Windows или оформлять особые отрывки текста на странице, чтобы они выглядели более тонкими, но для основной части текста, в которой читабельность – это первостепенное свойство, пожалуйста, оставьте в покое стандартные настройки и дайте возможность операционной системе самой выполнять сглаживание.

Это перевод статьи под названием “Please Stop “Fixing” Font Smoothing” от Дмитрия Фадеева. Перевели в компании UXDepot с одобрением издания UsabilityPost.

PS от переводчиков: Надеюсь, вам понравилась статья. Мы будем рады, если вы укажете нам на ошибки в переводе, чтобы мы могли их оперативно исправить. Пишите нам по адресу editor@uxfox.ru, пожалуйста 🙂

VK.init({apiId: 2745953, onlyWidgets: true}); VK.Widgets.Like(‘vk_like_6117’, {type: ‘button’, pageTitle: ‘Хватит “исправлять” сглаживание шрифтов’, pageUrl:’/please-stop-fixing-font-smoothing/’, verb: ‘0’}, 6117);

Все комментарии:

    Нет комментариев.


    Оставьте комментарий: