Как исправить размытый / пиксельный рендеринг шрифтов на красном / синем фоне (Windows, Firefox, Chrome и др.)?

В Windows и в определенной степени также в Mac OS с разными браузерами (Firefox, Chrome, Safari) наша строка меню имеет довольно пиксельный / размытый рендеринг шрифтов. Это на сайте ASP.NET Core 2.1, который использует Bootstrap 4.1.3, но его достаточно легко воспроизвести с помощью простого HTML: https://jsfiddle.net/2tgc9r84/

<html>
  <body style="background-color:#e72c87;">
  <p style="font-size:20pt;">
    This is some text that looks terrible.
  </p>
  </body>
</html>

Интересно, что тот же шрифт отлично отображается в других областях сайта. Я заметил это на мониторе 4K, у которого активировано 150% масштабирование, но проблема также проявляется на 100%. Я также пробовал это с разными шрифтами, так что, видимо, это тоже не проблема со шрифтом.

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

Вы можете прямо посмотреть на сайт, где это происходит здесь: https://beat-the-rhythm-vr.com/Home/Social (навигация с размытым текстом появляется после принятия файлов cookie).

Вот изображение, которое показывает эффект с разным фоном, а также визуализировано в Mac OS (снимки экрана Mac OS на изображении меньше):

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

Вот как это выглядит в iOS (я получаю такую ​​же размытость в Windows, когда делаю окно достаточно маленьким, чтобы получить тот же макет, что и на мобильном телефоне, так что это также не проблема, вызывающая это / исправление):

Очевидный вопрос: есть ли способ исправить это, и если да, то как?

РЕДАКТИРОВАТЬ: это дополнение к комментарию к ответу Портера (я не могу добавлять снимки экрана в комментарии, поэтому публикую это здесь):

РЕДАКТИРОВАТЬ 2: Хотя эта статья посвящена немного другой проблеме, я предполагаю, что то, что я вижу, на самом деле является просто ограничением ClearType, которое связано с тем, что изложено в статье: ClearType с учетом цвета требует доступа к фиксированным фоновым пикселям, которые проблема, если вы не знаете, что такое фоновые пиксели, или если они не исправлены

ClearType, по-видимому, не работает, когда цвет фона неизвестен, и, судя по тому, что я вижу, кажется, что он предназначен в первую очередь для черного текста на белом фоне, также хорошо работает со светлыми цветами на темном фоне, но не очень для красного / синего / пурпурного фона (и любого цвета шрифта).

1 ответ

Я не могу воспроизвести это на дисплее 1080p или 4K, с мобильным или веб-просмотром в Firefox и Chrome. Шрифты имеют тенденцию сливаться с цветом фона, поэтому не все пиксели шрифта будут одного цвета; Он смешается по краям. Чем меньше шрифт, тем меньше пикселей он должен обрабатывать для смешивания. Возникает ли та же проблема, если вы используете более крупный шрифт?

Другие вопросы по тегам