问题标签 [font-rendering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
centos7 - 如何修复 Fedora (27/28) 和 CentOS 7 之间的字体渲染差异
我们正在为 vmware 上的 Web 堆栈开发人员托管一个虚拟化桌面。目前,开发人员箱基于 Fedora (27/28),但我想将其移至 CentOS 7,因为它更接近我们的 Red Hat Prod 基础设施。
我们使用几乎相同的 Ansible 脚本来设置 Fedora 和 CentOS 的开发人员框,使用 XFCE4 作为桌面环境,并使用 EPEL 存储库来存储某些软件包,例如 xrdp(因此它们在两种设置中是相同的版本)。
两个开发者框之间的一个巨大的显着差异是字体渲染。它在 Fedora 上看起来不错,但在 CentOS 上看起来很糟糕,即使选择了相同的字体/字体大小和(如果可能)抗锯齿选项。
如何让 CentOS 拥有与 Fedora 类似质量的字体渲染?
html - 如何修复红色/蓝色背景(Windows、Firefox、Chrome 等)上的模糊/像素化字体渲染?
在 Windows 上,在某种程度上也在 Mac OS 上,使用不同的浏览器(Firefox、Chrome、Safari),我们的菜单栏具有相当像素化/模糊的字体渲染。这是在使用 Bootstrap 4.1.3 的 ASP.NET Core 2.1 站点上,但只需简单的 HTML 即可轻松重现:https ://jsfiddle.net/2tgc9r84/
有趣的是,相同的字体在网站的其他区域也能很好地呈现。我在激活了 150% 缩放的 4K 显示器上注意到了这一点,但问题也显示为 100%。我也尝试过使用不同的字体,所以显然这也不是字体的问题。
最初我认为这是透明度或转换的问题,但最后,我尝试简单地更改背景颜色 - 结果证明这种模糊在红色和深蓝色(当然,它们的组合,如洋红色)中非常明显,并且与大多数其他颜色几乎不可见。此外,通过更改主背景颜色,我可以重现其他区域的问题。
您可以在此处直接查看发生这种情况的站点:https ://beat-the-rhythm-vr.com/Home/Social (接受 cookie 后显示带有模糊文本的导航)。
这是一张显示不同背景效果的图像,并且也在 Mac OS 上渲染(Mac OS 屏幕截图在图像中显得更小):
据我所知,这在 iOS 上根本不会发生。在 Mac 上,我在屏幕上看不到问题,但在制作屏幕截图时确实很明显。但是,由于屏幕截图的缩放,这也可能是一个伪影。
这就是它在 iOS 上的样子(当窗口足够小以获得与移动设备上相同的布局时,我在 Windows 上得到同样的模糊,所以这也不是导致这个/修复这个的问题):
显而易见的问题:有没有办法解决这个问题,如果有,如何解决?
编辑:这是对波特答案的评论(我无法在评论中添加屏幕截图,所以我在这里发布):
编辑 2:虽然这篇文章是关于一个稍微不同的问题,但我的猜测是,我所看到的实际上只是 ClearType 的一个限制,它与文章概述的内容有关:Color-aware ClearType requires access to fixed background pixels, which如果您不知道背景像素是什么,或者如果它们没有固定,这是一个问题
当背景颜色未知时,ClearType 显然不起作用,从我所见,它似乎主要是为白色背景上的黑色文本设计的,也适用于深色背景上的浅色,但不是真的那么多对于红色/蓝色/洋红色背景(和任何字体颜色)。
java - 尽管关闭了小数宽度,但 macOS Retina 上的 OpenJDK 11 Swing 等宽字体渲染问题
我正在尝试解决我正在开发的代码编辑器的问题,该问题仅在具有 Retina 显示屏的 Mac 上使用 OpenJDK 11 时出现。以下屏幕截图说明了这个问题。顶部是 OpenJDK 11(AdoptOpenJDK 11.0.5 HotSpot),底部是 JDK 8(我相信 Apple/Oracle JDK 8):
如您所见,OpenJDK 11 使字体更宽。这是一个大问题,因为我是FontRenderContext#getStringBounds
用来确定等宽列宽的。使用默认的等宽字体(看起来像Menlo)和 14 号字体,据报告这会使每个字符提前 8 个像素,这正确对应于 JDK 8 呈现,但不对应于 OpenJDK 11 呈现。更糟糕的是,似乎在后一种情况下,我们得到的不是整数个像素,而是 8.5 个像素(第一个非注释行包含 38 个字符,在 JDK 8 上它需要 38 * 8 * 2 = 608 个像素,但是在 OpenJDK 11 上大约 646 像素。
更奇怪的是,这个问题是由AttributedText
使用Graphics2D#drawString
. 如果我转换为纯文本,使用g.setFont
OpenJDK 11 的渲染与 JDK 8 完全相同。所以它必须与渲染的特定实现有关AttributedCharacterIterator
。
显然我并没有因为这个错误而改变我的整个实现,所以我正在寻找一种解决方法(当然,除了要求用户选择不同的字体)。也许有一些系统属性......?
编辑:经过一些进一步的调试会话后,我可以看到差异来自ExtendedTextSourceLabel#createGV
更深层次SunLayoutEngine#layout
,然后调用本机代码,尽管字体打击描述相同,但在 JDK 8_positions
中,字形数据设置为整数,而在 OpenJDK 11 中,它们被设置为小数(实际上也不是 的倍数0.5
,所以它似乎与我们在 Retina 显示器上运行的事实没有任何关系;也许,字体由本机 macOS 字体)
opengl-es - 字体渲染到屏幕外 FBO 上不起作用。(注意:字体是通过使用带有 glTexImage2D 的 Freetype 库创建纹理来加载的)
我有以下代码可以在屏幕外 FBO 上渲染一个矩形和一些文本。然后我尝试在默认/显示帧缓冲区中绑定纹理(附加到 FBO)。我能够渲染矩形,但字体没有被渲染。我尝试调试,但到目前为止还不能。我只需要在 OpenGL ES 2.0 中执行此操作。
我的矩形是橙色的。文本/字体为红色。我使用 Freetype lib 和 glTexImage2D 调用为每种字体创建单独的纹理。当我直接在默认帧缓冲区上渲染时,我成功获得了一个橙色矩形和红色字体。但是当我首先在屏幕外 FBO 上执行此操作时,我会得到一个带红色的矩形和一些垃圾小文本(我假设)。我正在继续调试,但任何输入都会有所帮助。
注意:我是 OpenGL 的新手。
egl 相关的初始化。
android - android中的文档渲染
文档查看器如何显示和呈现文档。
将文档转换为位图(通过字形和绘画)并在画布上绘画是最好的方法还是有其他方法。
java - Netbeans source code font not being well rendered
I'm having an issue using Netbeans under Linux, I'm using Arch Linux with KDE and JRE 8 and, as you can see from the screenshot, the GUI fonts are ok, but the source code font rendering is very ugly. I'm using java options for AA, but it only solved the GUI issue, not the source code font rendering issue. I have PHPStorm installed too, to compare, I made a screenshot using the same font and settings in both. PHPStorm fonts are rendered beautifully, Netbeans doesn't, what's the problem?
python - PIL 在文本中呈现奇怪的伪影
我正在尝试使用 PIL 来渲染一些字符图像。出于某种原因,大约 1% 的渲染字符具有如下所示的奇怪伪影。第二个应该是“v”。
这是一个一贯的现象。对于相同的字体、字符和大小,工件看起来总是一样的。许多不同的字体都会发生这种情况。上面的例子是 20 pt “aakar-medium”。用于执行此渲染的代码如下。
如您所见,由于另一个问题,我还添加了一些填充。在某些情况下,角色会被切断。这似乎在 StackOverflow 上的另一个问题中得到了解决。虽然我也很感激这方面的帮助,但这不是我最关心的问题。我将这些图像保存为 *.bmp 文件。我也试过 *.png 和 *.jpg,它们都有更严重的伪影。我假设其中一些是由于压缩。我也尝试过使用“RGB”模式(而不是“RGBA”)的图像。这没什么区别。
编辑:根据 martineau 的建议,我已将此错误发布到https://github.com/python-pillow/Pillow/issues/4645
fonts - Alacritty 字体渲染
[初始]我在 Ubuntu 20.04 上安装 alacritty 没有问题,只需安装 cargo 然后运行这个脚本。
[根本原因]想要更轻松的主题杂耍,我为此目的查找了实用程序并找到了这个。安装随机主题后,脚本留下了一个~/.alacritty.yml
文件。
[当前问题]现在终端是这样的:
【问题描述】字体明显不渲染了,powerline提示也乱了。我尝试用 alacritty 运行一个裸sh
会话,并且可以观察到相同的行为。删除.yml
什么也没做。覆盖它cp .config/alacritty/alacritty.yml .alacritty.yml
也没有做任何事情。
[现在怎么办?]我很好奇是否有人对如何解决这个问题有任何建议,我的互联网搜索没有结果。