html - 如何修复红色/蓝色背景(Windows、Firefox、Chrome 等)上的模糊/像素化字体渲染?

标签 html css blurry font-rendering

在 Windows 上,在某种程度上也在 Mac OS 上,使用不同的浏览器(Firefox、Chrome、Safari),我们的菜单栏具有相当像素化/模糊的字体渲染。这是在一个使用 Bootstrap 4.1.3 的 ASP.NET Core 2.1 网站上,但它很容易用简单的 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>

有趣的是,相同的字体在网站的其他区域呈现得很好。我在激活了 150% 缩放比例的 4K 显示器上注意到了这一点,但问题也出现在 100% 缩放比例下。我也尝试过使用不同的字体,所以显然这也不是字体的问题。

最初我认为这是透明度或转换的问题,但最后,我尝试简单地更改背景颜色 - 事实证明这种模糊对于红色和深蓝色非常明显(当然,这些的组合,如洋红色), 并且与大多数其他颜色几乎不可见。此外,通过更改主要背景颜色,我可以在其他区域重现该问题。

您可以直接查看出现此问题的站点:https://beat-the-rhythm-vr.com/Home/Social (接受 cookie 后出现带有模糊文本的导航)。

这是一张显示不同背景效果的图像,也是在 Mac OS 上渲染的(Mac OS 屏幕截图在图像中显得较小):

Image illustrating the issue of blurry / pixelated font-rendering

据我所知,这在 iOS 上根本不会发生。在 Mac 上,我不太清楚屏幕上的问题,但在截屏时它确实变得很明显。然而,由于屏幕截图的缩放,这也可能是一个人工制品。

这是它在 iOS 上的样子(当窗口足够小以获得与移动设备上相同的布局时,我在 Windows 上遇到了同样的模糊,所以这也不是导致此问题/修复此问题的问题):

enter image description here

显而易见的问题:有什么方法可以解决这个问题,如果可以,如何解决?

编辑:这是对 Porter 回答的评论的补充(我无法在评论中添加屏幕截图,所以我将其发布在这里):

Comparing screenshots on my PC and Porter's PC

编辑 2:虽然这篇文章是关于一个稍微不同的问题,但我的猜测是我所看到的实际上只是 ClearType 的一个限制,它与文章概述的内容相关:Color-aware ClearType requires access to fixed background pixels, which is a problem if you don't know what the background pixels are, or if they aren't fixed

当背景颜色未知时,ClearType 显然不起作用,从我所看到的情况来看,它似乎主要是为白色背景上的黑色文本设计的,也适用于深色背景上的浅色,但不是红色/蓝色/洋红色背景(以及任何字体颜色)真的太多了。

最佳答案

我无法在 1080p 或 4K 显示器上重现此内容,在 Firefox 和 Chrome 上使用移动或 WebView 。字体确实倾向于与背景颜色混合,因此并非字体的每个像素都将是相同的颜色;它会在边缘融合。字体越小,用于混合的像素就越少。如果您使用更大的字体,是否会出现同样的问题?

enter image description here

关于html - 如何修复红色/蓝色背景(Windows、Firefox、Chrome 等)上的模糊/像素化字体渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825193/

相关文章:

python - Python-OpenCV清除模糊的图像

javascript - 如何让我的删除按钮删除一行?

javascript - jQuery:在悬停时将文本插入容器 div

javascript - 从所有中删除类并添加到一个单击

css - 如何使用相对定位的第二级修复此基于 CSS 的垂直菜单?

c# - 模糊装饰器 WPF Xaml

html - iframe 内容导致我页面上的文本变得模糊

html - 在 HTML 文档中包含其他页面

javascript - 使用自定义复选框,在其更改的事件上调用函数

javascript - 无法让 jQuery 动画切换工作