У меня проблемы со сглаженным текстом в 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
. Для легкого хинтинга шрифт выглядит сбалансированным по соотношению сторон, но сглаживание имеет неправильную гамму, поэтому линии шрифта толстые (все выглядит жирным шрифтом). При среднем или полном хинтинге шрифт выглядит более тонколинейным и четким, но теперь соотношение сторон нарушено, шрифт слишком широкий.
-Djava2d.font.loadFontConf=false
не имеет никакого эффекта. Кажется, рендеринг жестко запрограммирован, использованиеoff
вместоlcd
также не дает никакого эффекта. - person 0__   schedule 29.03.2017lib/fonts/font.conf
и используйте-Djava2d.font.loadFontConf=true
для загрузки этой настроенной конфигурации. - person CrazyCoder   schedule 30.03.2017