Как исправить сглаживание шрифтов в IntelliJ IDEA при использовании высокого DPI?


79

Я использую более высокое значение DPI, что делает IntelliJ (фактически Android Studio) действительно испорченными шрифтами .

Я использую MacType, который прекрасно отображает мои шрифты в других местах, но я предполагаю, что Java VM каким-то образом перехватывает его или что-то еще, это убивает меня.

Ответы:


112

Я работаю с дисплеем с высоким разрешением, и у меня он работает с идеальным рендерингом шрифтов, для достижения этого вам необходимо:

  • (В Linux) Установите и используйте Oracle JDK (я использую 1.7), а не OpenJDK (также исправленный файл с fontfix был для меня бесполезен). Посмотрите, как это сделать .

  • Отредактируйте файл конфигурации .vmoptions, который вы найдете в папке установки Bin (например, studio.vmoptions и для 64bit studio64.vmoptions или WebStorm.exe.vmoptions и т. Д. В соответствии с версией установленной IDE), добавив следующие строки:
    -Dawt.useSystemAAFontSettings=on
    -Dswing.aatext=true
    -Dsun.java2d.xrender=true

  • Удалите информацию подсказок из шрифта, который вы хотите использовать, и выберите новый шрифт в настройках IntelliJ IDEA (Настройка -> Редактор -> Шрифт);
    если вы не знаете, как это сделать, установите FontForge :

    1. Откройте свой шрифт в FontForge
    2. Выделите все глифы с помощью Ctrl+Aи удалите все подсказки (Подсказки -> Очистить подсказки)
    3. Снова выберите глифы и используйте подсказки -> Очистить инструкцию
    4. Сохраните шрифт под другим именем (Файл -> Создать шрифты)
    5. Установите новый шрифт, выберите его в IDEA

Если вы следовали приведенным выше советам и у вас возникают задержки при быстрой прокрутке кода (это иногда может происходить в дистрибутивах Linux с неоптимизированным драйвером gpu), попробуйте удалить строку
-Dsun.java2d.xrender=true
из файла .vmoptions .

Наконец, вот скриншот результата:

Скриншот IDE


(здесь используются шрифты LucidaMAC для основной IDE и Ubuntu Mono с удаленной информацией о подсказках для редактора кода)


4
Потрясающие! Работает и в Windows :)) спасибо: *
Blok

1
Я попробовал вышеописанное на своей машине Windows с привет dpi (3200x1800). Я настроил studio.vmoptions, как уже упоминалось, но все еще размыто. Пожалуйста, посоветуйте, если возможно, я действительно хотел бы, чтобы это работало?
Пейс

10
@Pace Чтобы удалить размытые шрифты, вам нужно отключить масштабирование экрана для этого приложения (щелкните правой кнопкой мыши по его значку, выберите Properties, перейдите на Compatibilityвкладку и проверьте Disable DPI scaling on high DPI settings, для приложений x64 в Win8 вам нужно отредактировать флаг соответствующего ключа реестра: откройте Regedit. exe, перейдите HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layersи добавьте строковое значение REG_SZ , имя которого представляет собой полный путь к исполняемому файлу приложения, а значение - HIGHDPIAWARE );)
guari

3
не могу очистить подсказки и инструкции для шрифтов в шрифтовой кузнице ... Есть ошибки, когда я пытаюсь сохранить их после этого ... Что я делаю не так
Mario Zderic

2
Ух ты. Все еще полезно год спустя. JetBrains должен сделать это по умолчанию или, по крайней мере, выполнить автоматическое обнаружение. Размытость без этих настроек делает IntelliJ ужасным и непригодным для использования.
Эндрю Финнелл

4

Я написал небольшое руководство, как это исправить.

   wget http://urshulyak.com/jdk-8u5-tuxjdk-b08.tar.gz
   tar -zxvf jdk-8u5-tuxjdk-b08.tar.gz
   sudo mv jdk-8u5-tuxjdk-b08 /usr/lib/jvm
   rm jdk-8u5-tuxjdk-b08.tar.gz

Скрипт для запуска Intellij Idea

* только обратите внимание, что нужно изменить местоположение IDEA_HOME для вашего пути идеи

#!/bin/sh

IDEA_HOME=/opt/idea
export JAVA_HOME=/usr/lib/jvm/jdk-8u5-tuxjdk-b08/
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=lcd \
                      -Dsun.java2d.xrender=true"
export GNOME_DESKTOP_SESSION_ID=this-is-deprecated
exec $IDEA_HOME/bin/idea.sh "$@"

Больше информации и скриншоты лучших шрифтов: http://urshulyak.com/?p=478


Добавление -Dsun.java2d.xrender=trueк bin/webstorm64.vmoptionsв каталоге WebStorm было достаточно для меня.
Алисия

1
ссылка на скачивание не работает. Пожалуйста, исправьте
Jackode

Этот ответ предполагает 64-битную архитектуру, что может быть не так
Анвар

По сути, это выполняется произвольный код от имени пользователя root - рекомендуется соблюдать осторожность.
Турбьёрн Равн Андерсен

2

Я получил похожий вид, просто скачав шрифт Menlo и установив сглаживание Editor на «оттенки серого» в разделе «Внешний вид и поведение»> «Внешний вид».

Это результат:

Вот так это выглядит

Вот сравнение между двумя платформами

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

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


Работал частично для меня! Шрифты не такие четкие, как универсальный пользовательский интерфейс Mac, но достаточно острые, чтобы их можно было использовать. Я на 13 "Mac Pro, OS X 10.11.4
Mayank Jain

почему вы делаете это на OSX ?, вы должны получить правильные шрифты из коробки :)
FRR

2

Больше ничего этого не нужно. Загрузите последнюю версию IntelliJ (2016.1 и более поздние версии) для Linux. Он включает в себя модифицированный JRE с исправленной проблемой шрифтов. Чтобы исправить Android Studio тоже сделайте символическую ссылку на IntelliJ jre:

ln -s /PATH/TO/INTELLIJ/jre /PATH/TO/ANDROIDSTUDIO/jre

В качестве альтернативы просто откройте ваш файловый менеджер от имени root (при условии, что ваши IDE установлены в каталоге / opt или другой системной папке) и создайте ярлык для jre IntelliJ и переместите его в папку установки Android Studio, затем переименуйте его в «jre». Это работает для последней версии Android 2.0, но должно работать и с более ранними версиями.


Какую версию вы имеете в виду? Когда я иду в «Справка»> «О программе», я вижу Intellij IDEA 15.0.2иBuild #IU-143.1184
Bloke

@Bloke просто зайдите на сайт и загрузите последнюю версию IntelliJ. Я думаю, сейчас 2016.1.1. Они изменили способ рекламы новых версий сейчас, и теперь он имеет формат YEAR.REVISION.UPDATE #.
Aspiring Dev

О, действительно. Я только что попробовал это. Мой Source Code Proшрифт теперь выглядит слишком жирным, но это небольшая проблема. Спасибо!
Blok

Использование JRE, поставляемого с IntelliJ, сделало все для меня лучше. Сначала я скачал IntelliJ без JRE и использовал свой локальный Oracle JDK (1.7), что привело к неправильным шрифтам. НТН.
Сенгс

2

В более новой версии JetBrains IDE решение другое.

В папке установки IDE просто переименуйте jre папку на что-то другое. Например:

  1. $ cd your-path-to/WebStorm-162.2228.20/
  2. $ mv jre/ _jre/

Более новые версии используют пакет JRE вместо вашей системной, и эта версия вызывает проблемы с отображением шрифтов .

Здесь отлично работает: WebStorm 2016.3.2 на Kubuntu 16.04 linux.

Скриншот WebStorm с фиксированным шрифтом


Это похоронено на дне, но это настоящий преступник. Все выше ориентированы на шрифты редактора, но у меня уже были хорошие шрифты редактора. Моя проблема заключалась в том, что различные выноски, всплывающие подсказки и модальные диалоги показывали ужасный рендеринг шрифтов без сглаживания. Я перепробовал все вышеперечисленное, и ни одна из них не решила проблему, но сокрытие упаковки jre помогло.
Дэн

1

Если вы не можете очистить подсказки с FontForge, как Гуари объяснил в своем ответе . Используйте Cousine (Apache License v2.00) в качестве шрифта редактора и установите размер 14. Я пробовал пару других моноширинных шрифтов. Тем не менее, Cousine, кажется, имеет более хороший рендеринг, чем большинство других шрифтов. Смотрите скриншот в конце

  1. Скачать шрифт: cd ~/Downloads/ && wget www.fontsquirrel.com/fonts/download/cousine
  2. Создать новое семейство шрифтов dir: sudo mkdir /usr/share/fonts/truetype/Cousine
  3. Извлеките файлы шрифтов: sudo unzip cousine -d /usr/share/fonts/truetype/Cousine/
  4. Сделайте их доступными для IntelliJ: sudo chmod -R 777 /usr/share/fonts/truetype/Cousine
  5. Обновите кэш шрифтов: sudo fc-cache -f -v
  6. Перезапустите IntelliJ и выберите Cousin в качестве шрифта редактора.
  7. Не забудьте установить vmoptions, как объяснил guari

Скриншот:


Ваш скриншот не выглядит, как будто он использует сглаживание.
Ztyx

Снимок экрана заменен на меньший, чтобы избежать уменьшения масштаба. Теперь вы можете видеть, что используется сглаживание
user1185087

1

В Windows 10 у меня были похожие проблемы. Проверка Disable display scaling on high DPI settingsсделала шрифты более плавными, но гораздо большими. Вот как это сделать (из предыдущего комментария от другого пользователя):

Щелкните правой кнопкой мыши по его значку, выберите Properties, перейдите на Compatibilityвкладку и проверьтеDisable DPI scaling on high DPI settings

Заходя в Windows Settingsи ища Display Settings, есть диалог с ползунком, который говорит Change the size of text, apps, and other items. Я переместил его со 125% до 100% и должен был выйти из системы и снова войти в нее. Шрифты стали маленькими И плавными:

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

Более того, если я уберу галочку Disable display scaling on high DPI settings, все будет гладко.


Это было единственное решение, которое сработало для меня! Спасибо!
DrKaoliN

0

Принятый ответ не сработал для меня, но я получил все, сделав это:

Прочитав различные учебники и поработав с кучей исправлений, я нашел способ, который отлично работает.

Прежде всего загрузите JDK 8 из Oracle и выполните в терминале следующие строки:

cd Downloads
tar -xvf jdk-8u25-linux-x64.tar.gz
rm jdk-8u25-linux-x64.tar.gz
sudo mkdir -p /usr/lib/jvm/
sudo mv jdk1.8.0_25 /usr/lib/jvm/

Теперь загрузите исправление шрифта JDK (Предоставлено [Уршуляк Ярослав] [2]), выполнив следующее:

cd ~/Downloads
wget http://urshulyak.com/jdk-8u5-tuxjdk-b08.tar.gz
tar -xvf jdk-8u5-tuxjdk-b08.tar.gz
sudo mv jdk-8u5-tuxjdk-b08 /usr/lib/jvm
rm jdk-8u5-tuxjdk-b08.tar.gz

Это распакует загруженный zip-файл и переместит его в / usr / lib / jvm /. Теперь запустите следующее в терминале:

cd ~
sudo gedit .bashrc

Затем добавьте следующие строки в самый конец файла bashrc.

JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25/
export JAVA_HOME

Сохраните его, затем gedit idea.sh. (Местоположение вашего скрипта может быть другим)

gedit /home/USER/Downloads/idea/bin/idea.sh

В самом низу скрипта замените строку (и) в операторе While Do внизу этими двумя строками:

eval "/usr/lib/jvm/jdk-8u5-tuxjdk-b08/bin/java" $ALL_JVM_ARGS -Djb.restart.code=88 $MAIN_CLASS_NAME "$@"
test $? -ne 88 && break

Сохраните его, затем откройте IntelliJ, шрифты должны работать, и вы будете использовать Oracle JDK 8 для разработки. Скорее всего, вам придется отредактировать настройки проекта и заново настроить JDK, но обязательно используйте реальный JDK, а не шрифт с исправлением шрифта.

Это исправление также работает с CLion, Android Studio и [PyCharm.

В этих инструкциях предполагается, что версия JDK была 1.8.0_25, имена файлов / путей будут изменены для будущих версий.


У вас есть идея, как заставить это работать с PhpStorm? Нижняя часть файла выглядит следующим образом: LD_LIBRARY_PATH = "$ IDE_BIN_HOME: $ LD_LIBRARY_PATH" "$ JDK / bin / java" \ $ AGENT \ "-Xbootclasspath / a: $ IDE_HOME / lib / boot.jar" \ -classpath "$ CLASSPATH "\ $ VM_OPTIONS" -Djb.vmOptionsFile = $ VM_OPTIONS_FILES_USED "\" -XX: ErrorFile = $ HOME / java_error_in_WEBIDE_% p.log "\ -Djb.restart.code = 88 -Didea.paths.selectRO $ IDEI_PERTI_PERTI_PERTI_PERTI_PERTI_PERTI_PERTI_PERTI_PERTI_PERTI_PERT_PYP_PYP_PRO_RID_PYP_PRO_RID_PYP_PRO_RID_PRO_PY_PLE_WR \ $ IDE_JVM_ARGS \ $ REQUIRED_JVM_ARGS \ $ MAIN_CLASS_NAME \ "$ @" EC = $? проверить $ EC -ne 88 && exit $ EC #test $? -ne 88 && break exec "$ 0" "$ @"
Майкл Хиндли

0

Вы можете установить Oracle JDK-8. Протестировано на Ubuntu 14.04, должно работать позже.

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Проверьте версию:

$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

Взял отсюда .


0

Вот как это выглядит с ужасным рендерингом шрифтов в Ubuntu 16.04:

Вот как это выглядит с ужасным рендерингом шрифтов в Ubuntu 16.04

Если вы используете IntelliJ IDEA 2016.X или более позднюю версию без JDK в комплекте, вы можете установить переменную среды "IDEA_JDK", чтобы указать конкретную среду выполнения. Рендеринг шрифтов в Ubuntu 16.04 с Android Studio идеален, так что вы можете поделиться одним и тем же JRE с Intellij IDEA. IntelliJ сначала ищет переменную среды IDEA_JDK, поэтому установите ее, добавив файл:

/etc/profile.d/IDEA_SDK.sh

Добавьте это в файл:

export IDEA_JDK=/opt/android-studio/jre

Отрегулируйте / opt / android-studio / jre согласно вашей установке. Выйдите из системы и войдите в систему и запустите вашу Intellij IDE

Вот как это выглядит после использования нового JRE:

Вот как это выглядит после использования новой JRE


-1

Я понял, что сглаживание phpstorm работает довольно хорошо, используя конфигурацию по умолчанию. Сравнение двух команд показывает, что единственное отличие - это phpstorm, использующий собственную java (/ usr / share / phpstorm / jre64 / bin / java).

Я изменил стартовый скрипт идеи, чтобы он использовал java phpstorm, и он работал, и все так же хорошо, как и phpstorm. Скриншот


Какие изменения? Вам нужно установить phpstorm для этого?
Подмастерье Компьютерщик
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.