设置LCD伽马/对比度(IntelliJ IDEA,JDK 8)

61

我在IntelliJ IDEA中遇到了反锯齿文本的问题。由于某种原因,该软件自带OpenJDK 8版本。在深色背景下,次像素抗锯齿可以接受:

enter image description here

但是在浅色背景下伽马值不正确:

enter image description here

这意味着在这种方案中,文本看起来就像加粗并且水平模糊。

有没有可能指定一个系统属性或以其他方式欺骗系统,以使AA插值朝更暗的颜色改变伽马值?我已经选择了非常好的字体(FicaCode Light),但在这台电脑上简直没有显示更少黑体的字体(使用Gnome 3的Linux,1920x1080的显示屏)。


编辑:我真的正在寻找一种控制AA伽马值的方法。我没有使用IDEA 2017.1 EAP,而是已经带有“修复”版本1.8.0_112的发行版。如果我下载那个版本,我得到的像素输出与上面两幅图像完全相同。这是idea64.jvmoptions文件:

自定义IntelliJ IDEA虚拟机选项

-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.8.0_121进行比较:

enter image description here

显然,这里的AA(抗锯齿)已经失效了(在1:1的情况下,它看起来完全彩色)。所以我认为捆绑版本的亚像素渲染基本上是正确的。只是它对于深色背景上的浅色文本使用了错误的伽马值。


编辑:经过更多调查,问题归结为:我可以使用自定义的font.conf文件,并将hintstyle设置为hintslighthintmediumhintfull之间进行选择。对于微弱提示,字体的纵横比看起来很平衡,但是反走样有错误的伽马值,因此字体线条很粗(看起来像粗体)。对于中等或完全提示,字体看起来更细线条和锐利,但现在纵横比已经打破,字体过宽。


2
请查看 https://gist.github.com/CrazyCoder/0d9e54f450000d3fb6edcbda6d9788be。 - CrazyCoder
2
@CrazyCoder 谢谢 - 实际上我已经在使用gist提到的更新JDK,因为我安装了IDEA的发布版本。所以我的问题是,是否可以调整渲染器使用的AA伽马值。 - 0__
2
您的字体大小不会受到设置的影响。您可以创建自定义font.conf文件,或修改JetBrains Runtime中的lib/fonts/font.conf文件,并使用-Djava2d.font.loadFontConf=true选项来加载您的自定义配置文件。 - CrazyCoder
1
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206607445-A-fix-for-font-ugliness-under-Linux?sort_by=votes - Samuel Tulach
1
@SamuelTulach你是在建议我自己构建OpenJDK的版本吗? - 0__
显示剩余4条评论
2个回答

1

就我个人而言,尽管将当前渲染(IC 2020.3)放大后看起来与原始截图相似:

enter image description here

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


1
你说正常的openJDK按照你想要的方式工作,是吗?
如果是这样,为什么不改变IntelliJ使用的JDK呢? 我相信这是偏好设置中的平台SDK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接