设置 LCD 伽玛/对比度(IntelliJ IDEA,JDK8)

Setting LCD gamma / contrast (IntelliJ IDEA, JDK 8)

我在 IntelliJ IDEA 中遇到抗锯齿文本问题。出于某种原因,那个东西附带了它自己的 OpenJDK 8 版本。无论如何......子像素别名对于明暗文本是可以接受的:

但是 gamma 对亮暗文本是错误的:

这意味着在这个方案中,文本看起来像是粗体和水平的 smeared/fuzzy。

是否可以指定一个系统 属性 或破解系统,以将 AA 插值的伽马值更改为更深的颜色?我已经选择了一个非常好的字体(FicaCode Light),在这台电脑上根本没有显示不那么粗体的字体(Linux with Gnome 3, 1920x1080 display)。


编辑: 我真的在寻找一种控制 AA 伽玛的方法。我没有使用 IDEA 2017.1 EAP,但是发布版本已经包含 'fixed' 捆绑调整版本 1.8.0_112,这在要点评论中提到。如果我下载那个版本,我得到与上面两张图片完全相同的像素输出。这些是 idea64.jvmoptions:

自定义 IntelliJ IDEA VM 选项

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Djava2d.font.loadFontConf=false

添加或删除最后一个 属性 只会使差异为零,从 lcd 更改为 onoff 也具有零效果。

将这些图片与我通过 Debian 安装的常规 OpenJDK 1.80_121 进行比较:

很明显这里的 AA 被破坏了(在 1:1 它看起来完全是彩色的)。所以我觉得捆绑版的亚像素渲染基本正确。只是它对深色背景上的浅色文本使用了错误的 Gamma。


编辑: 经过更多调查,问题归结为:我可以在 [=18= 之间使用带有 hintstyle 的自定义 font.conf 文件]、hintmediumhintfull。对于轻微的提示,字体在宽高比方面看起来很平衡,但是抗锯齿的伽马值不对,所以字体线条很粗(一切看起来都是粗体)。对于medium 或full hinting,字体显得更加细线和尖锐,但现在宽高比被破坏了,字体太宽了。

你说正常的 openJDK 按照你希望的方式工作,对吗?

如果为真,你为什么不改变 JDK IntelliJ 的用途? 我相信它是偏好中的平台SDK

FWIW,虽然放大当前渲染 (IC 2020.3) 看起来与原始屏幕截图相似:

我不再觉得这看起来太大胆或太模糊了。也许是字体的细微变化(现在使用 JetBrains Mono)。