Настройка гаммы/контраста LCD (IntelliJ IDEA, JDK 8)

У меня проблемы со сглаженным текстом в IntelliJ IDEA. Эта штука по какой-то причине поставляется с собственной версией OpenJDK 8. В любом случае... субпиксельное наложение допустимо с темным текстом на ярком:

введите описание изображения здесь

Но гамма неверна для яркого текста на темном:

введите описание изображения здесь

Это означает, что в этой схеме текст выглядит так, как будто он выделен жирным шрифтом и горизонтально смазан/размыт.

Можно ли указать системное свойство или взломать систему иначе, чтобы изменить гамму для интерполяции AA в сторону более темных цветов? Я уже выбрал очень хороший шрифт (FicaCode Light), на этом компьютере (Linux с Gnome 3, дисплей 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 не имеет никакого эффекта.

Сравните эти картинки с обычным OpenJDK 1.8.0_121, который я установил через Debian:

введите описание изображения здесь

Ясно, что здесь нарушено АА (при масштабе 1:1 оно выглядит полностью окрашенным). Так что я думаю, что субпиксельный рендеринг версии в комплекте в основном правильный. Только он использует неправильную гамму для светлого текста на темном фоне.


Редактировать: После дополнительных исследований проблема сводится к следующему: я могу использовать пользовательский файл font.conf с hintstyle между hintslight, hintmedium и hintfull. Для легкого хинтинга шрифт выглядит сбалансированным по соотношению сторон, но сглаживание имеет неправильную гамму, поэтому линии шрифта толстые (все выглядит жирным шрифтом). При среднем или полном хинтинге шрифт выглядит более тонколинейным и четким, но теперь соотношение сторон нарушено, шрифт слишком широкий.


person 0__    schedule 29.03.2017    source источник
comment
См. gist.github.com/CrazyCoder/0d9e54f450000d3fb6edcbda6d9788be.   -  person CrazyCoder    schedule 29.03.2017
comment
@CrazyCoder спасибо - на самом деле я уже использовал обновленный JDK, который упоминается в сути, когда я установил выпускную версию IDEA. Итак, мой вопрос в том, можно ли настроить значение гаммы AA, которое используется средством визуализации.   -  person 0__    schedule 29.03.2017
comment
Суть JDK не такая, как в релизной версии.   -  person CrazyCoder    schedule 29.03.2017
comment
@CrazyCoder Я тоже пробовал это, но вывод выглядит полностью идентично первым двум изображениям. Также переключение -Djava2d.font.loadFontConf=false не имеет никакого эффекта. Кажется, рендеринг жестко запрограммирован, использование off вместо lcd также не дает никакого эффекта.   -  person 0__    schedule 29.03.2017
comment
Ваш шрифт слишком велик, чтобы на него могли повлиять настройки. Либо создайте пользовательский font.conf, либо измените его внутри JetBrains Runtime lib/fonts/font.conf и используйте -Djava2d.font.loadFontConf=true для загрузки этой настроенной конфигурации.   -  person CrazyCoder    schedule 30.03.2017
comment
intellij-support.jetbrains.com/hc/en-us/community/posts/   -  person Samuel Tulach    schedule 18.04.2017
comment
@SamuelTulach, вы предлагаете мне создать свою собственную версию OpenJDK?   -  person 0__    schedule 26.04.2017
comment
Темная тема решила вашу проблему?   -  person Thorbjørn Ravn Andersen    schedule 10.03.2020
comment
Не уверен, что это поможет, но я столкнулся с этим некоторое время назад. reddit.com/r/IntelliJIDEA/comments/gp1hup/   -  person Adesh Atole    schedule 28.07.2020


Ответы (2)


Вы сказали, что обычный openJDK работает так, как вы хотите, верно?

Если это правда, почему бы вам не изменить использование JDK IntelliJ? Я считаю, что это платформа SDK в настройках.

person Deian    schedule 07.08.2020

FWIW, хотя увеличение текущего рендеринга (IC 2020.3) выглядит похоже на исходный снимок экрана:

введите здесь описание изображения

Я больше не чувствую, что это выглядит слишком смелым или размытым. Возможно, это небольшое изменение шрифта (сейчас используется JetBrains Mono).

person 0__    schedule 28.12.2020