我在IntelliJ IDEA中遇到了反锯齿文本的问题。由于某种原因,该软件自带OpenJDK 8版本。在深色背景下,次像素抗锯齿可以接受:
但是在浅色背景下伽马值不正确:
这意味着在这种方案中,文本看起来就像加粗并且水平模糊。
有没有可能指定一个系统属性或以其他方式欺骗系统,以使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
更改为on
或off
也不会产生任何影响。
将这些图片与我通过Debian安装的常规OpenJDK 1.8.0_121进行比较:
显然,这里的AA(抗锯齿)已经失效了(在1:1的情况下,它看起来完全彩色)。所以我认为捆绑版本的亚像素渲染基本上是正确的。只是它对于深色背景上的浅色文本使用了错误的伽马值。
编辑:经过更多调查,问题归结为:我可以使用自定义的font.conf
文件,并将hintstyle
设置为hintslight
、hintmedium
和hintfull
之间进行选择。对于微弱提示,字体的纵横比看起来很平衡,但是反走样有错误的伽马值,因此字体线条很粗(看起来像粗体)。对于中等或完全提示,字体看起来更细线条和锐利,但现在纵横比已经打破,字体过宽。
lib/fonts/font.conf
文件,并使用-Djava2d.font.loadFontConf=true
选项来加载您的自定义配置文件。 - CrazyCoder