Опубликовано: 12 февраля 2025 г.
Работа механизма веб-рендеринга обширна, и большая часть этой работы, такая как стилизация, мультимедиа или макет, определяется стандартами. Эти стандарты гарантируют совместимость независимых механизмов, что позволило Интернету процветать. Но некоторые более мелкие детали, такие как то, как текст отображается на уровне пикселей, часто оставляются на усмотрение органов по стандартизации и обычно в конечном итоге зависят от операционных систем, на которых работают браузеры.
В 2020 году у Microsoft Edge появилась редкая возможность — полная замена базового механизма рендеринга. Edge перешел на Chromium , отказавшись от платформы только для Windows, где он напрямую использовал API Windows, и стал настоящим кроссплатформенным средством веб-рендеринга. До перехода на Chromium Edge полностью полагался на Windows API под названием DirectWrite для рендеринга текста. Однако Chromium опирается на Skia , мощный и гибкий кроссплатформенный графический движок, который абстрагирует большую часть кода, специфичного для операционной системы, от своего API.
Во время перехода Edge на Chromium у команды Edge была возможность собрать отзывы пользователей о механизме рендеринга Chromium. Один отзыв был важным: многие пользователи Edge отметили, что текст выглядит «размытым» и не соответствует тексту в других частях Windows.
Команда серьезно отнеслась к этому отзыву и провела небольшое расследование. Хотя Skia использует DirectWrite в Windows для определенных функций, таких как поиск шрифтов, окончательная растеризация текста фактически обрабатывается непосредственно Skia. И одним из основных факторов «размытых» отзывов пользователей являются внутренние настройки контрастности и гаммы для рендеринга текста.
Между движком Edge на основе Chromium и его предыдущим движком были обнаружены два основных различия в контрастности текста и значениях гаммы. Во-первых, Skia не получает значения контрастности текста и гаммы из Windows ClearType Tuner . Во-вторых, он использует другие значения по умолчанию для контрастности и гаммы текста, чем те, которые используются в текстовом стеке Edge на основе DirectWrite.
В прошлом году команда Edge добавила поддержку соблюдения значений ClearType Tuner непосредственно в Chromium. Это дало пользователям браузера на базе Chromium возможность управлять настройками контрастности текста и гаммы в Windows. Хотя это был значительный шаг в правильном направлении, большинство пользователей склонны не настраивать общесистемные настройки контрастности текста и гаммы. Таким образом, следующим этапом этого пути было серьезно рассмотреть возможность настройки контрастности текста и настроек гаммы по умолчанию для текстового содержимого веб-интерфейса и пользовательского интерфейса браузера.
Изменение того, как текст выглядит в Интернете, — это большая задача. В сети всегда было много текста, поэтому необходим высококачественный текстовый движок. Было очевидно, что значение контрастности текста необходимо увеличить, но нужны были данные, чтобы определить, насколько его корректировать.
Команда Edge начала экспериментировать с различными значениями контрастности текста еще в 2021 году. После долгих исследований пользователей члены Edge и Chromium определили, что значение контрастности 1,0 близко соответствует рендерингу текста в Edge до версии Chromium и выглядит одинаково по сравнению с другими собственными приложениями Windows.
В команде Edge мы считали, что наши исследования и эксперименты могут быть полезны всему сообществу Chromium для Windows, поэтому поделились своими выводами с командой Chrome в Google, которая подтвердила их своими собственными экспериментами. Затем мы приступили к включению нового значения контрастности по умолчанию для сборок Windows, начиная с Chrome 132.
Сегодня все пользователи браузеров на базе Chromium в Windows могут извлечь выгоду из совместных исследований, экспериментов и внедрения последних лет.
Особая благодарность Яну Престу, Дэниелу Либби и Элисон Махер из Microsoft, а также Доминику Ретшесу, Дэвиду Юнгу, Бену Вагнеру и Брайану Осману из Google за их вклад в этот проект!