使用高DPI时如何解决IntelliJ IDEA中的字体抗锯齿问题?


Answers:


112

我使用的是高dpi显示器,并且可以使用完美的字体渲染来实现此目的,您需要:

  • (在Linux上)安装并使用Oracle JDK(我使用的是1.7)而不是OpenJDK(同样,用fontfix修补的版本对我来说是没有用的)。看看如何做

  • 通过添加以下几行,编辑在Bin安装文件夹中找到的.vmoptions配置文件(例如,studio.vmoptions和64bit studio64.vmoptionsWebStorm.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中选择它

如果您遵循上述提示,并且在快速滚动代码时遇到了滞后现象(有时在使用未优化gpu驱动程序的Linux发行版中可能会发生这种情况),请尝试
-Dsun.java2d.xrender=true
.vmoptions文件中删除该行。

最后,这是结果的屏幕截图:

IDE屏幕截图


(此处使用的字体是用于主IDE的LucidaMAC和用于代码编辑器的已删除提示信息的Ubuntu Mono


4
太棒了!也可以在Windows中使用:))谢谢您:*
Bloke

1
我已经在Windows机器上以dpi高分辨率(3200x1800)尝试了上述操作,如上所述,我已经调整了studio.vmoptions,但一切仍然很模糊。请告知如果可能的话,我真的很想让这个工作吗?
Pace 2014年

10
@Pace要删除模糊字体,您需要为该应用程序禁用显示缩放功能(右键单击其图标,选择Properties,转到Compatibility选项卡并检查Disable DPI scaling on high DPI settings,对于Win8中的x64应用程序,您应编辑相关注册表项的标志:打开Regedit。 exe,转到HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers并添加一个字符串值REG_SZ,其名称是应用程序可执行文件的完整路径,其值是HIGHDPIAWARE);)
guari 2014年

3
无法清除关于字体伪造中字体的提示和说明...在此之后尝试保存它们时出现错误...我在做什么错
Mario Zderic 2014年

2
哇。一年后仍然有帮助。JetBrains需要将此设置为默认值,或者至少执行一些自动检测。没有这些设置的模糊性使IntelliJ看起来糟透了并且无法使用。
Andrew T Finnell 2014年

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=truebin/webstorm64.vmoptionsWebStorm的目录中就足够了。
艾丽西亚(Alicia)2014年

1
下载链接已损坏。请修正
jackode

此答案假设不是64位体系结构
Anwar

本质上,这是作为root运行任意代码-谨慎使用。
托尔比约恩Ravn的安德森

2

通过下载Menlo字体并将“外观和行为>外观”中的“编辑器抗锯齿”设置为“灰度”,我得到了类似的外观

结果如下:

看起来就是这样

这是两个平台之间的比较

在此处输入图片说明

我在MAC上使用了更高的分辨率和更好的硬件,这就是为什么字体看起来更亮的原因,结果会因您的机器而异。无论如何值得一试,更改很容易还原


为我工作了一部分!字体不如一般的Mac UI清晰,但足够锐利,可以使用。我使用的是13英寸Mac Pro,OS X 10.11.4
Mayank Jain

为什么要在OSX上执行此操作?,应该立即使用正确的字体:)
FRR

2

这些丑陋的东西都不再需要了。下载适用于Linux的最新IntelliJ(自2016.1起)。它包括一个修正的JRE,已修复字体问题。要同时修复Android Studio,请建立指向IntelliJ jre的符号链接:

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

或者,只需以根用户身份打开文件管理器(假设您的IDE安装在/ opt目录或其他系统文件夹中),然后创建IntelliJ jre的快捷方式并将其移至Android Studio安装文件夹,然后将其重命名为“ jre”。这适用于最新的android studio 2.0,但也应该适用于较早的版本。


您是哪个版本?当我去帮助>关于,我看到Intellij IDEA 15.0.2Build #IU-143.1184
小子

@Bloke只需转到站点并下载最新的IntelliJ。我想现在是2016.1.1。他们现在更改了广告新版本的方式,并且现在具有YEAR.REVISION.UPDATE#格式。
Aspiring Dev

哦,的确如此。我刚刚尝试过。我的Source Code Pro字体现在看起来有点太粗体,但这是一个小问题。谢谢!
Bloke

使用与IntelliJ打包在一起的JRE对我来说无异。我最初是在没有JRE的情况下下载IntelliJ的,并使用了本地Oracle JDK(1.7),这导致字体损坏。HTH。
演唱

2

在较新的JetBrains IDE中,解决方案有所不同。

在IDE 安装文件夹中,只需 jre文件重命名为其他名称即可。例如:

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

较新的版本使用捆绑的JRE而不是系统版本的JRE,此捆绑的版本会导致字体渲染问题

在这里工作正常:Kubuntu 16.04 linux上的WebStorm 2016.3.2。

固定字体的WebStorm屏幕截图


它埋在底部,但这是真正的罪魁祸首。上面的每个人都专注于编辑器字体,但是我已经有了好的编辑器字体。我的问题是各种标注,工具提示和模式对话框都显示了可怕的字体渲染,而没有抗锯齿。我尝试了上面的所有操作,但都没有解决问题,但是隐藏打包的jre可以解决问题。

1

如果您无法清除FontForge的提示,例如guari在他的回答中所述。使用Cousine(Apache License v2.00)作为编辑器字体,并将大小设置为14。我尝试了几种其他的等宽字体。但是,Cousine似乎比大多数其他字体具有更好的渲染效果。见最后的截图

  1. 下载字体: cd ~/Downloads/ && wget www.fontsquirrel.com/fonts/download/cousine
  2. 创建一个新的字体系列目录: 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. 不要忘记像guari一样设置vmoptions

屏幕截图:


您的屏幕截图看起来好像没有在使用抗锯齿功能。
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

可接受的答案对我不起作用,但是我通过执行以下操作使一切正常:

在阅读了各种教程并弄乱了一些修复程序之后,我发现了一种完美的方法。

首先,从Oracle下载JDK 8,并在终端中执行以下行:

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字体修复程序(由[Urshulyak Yaroslav] [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

保存它,然后编辑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.selector = WebIde90 \ $ IDE_PROPERTIES \ $ IDE_JVM_ARGS \ $ REQUIRED_JVM_ARGS \ $ MAIN_CLASS_NAME \“ $ @” EC = $?测试$ EC -ne 88 &&退出$ EC#测试$?-ne 88 &&中断执行程序“ $ 0”“ $ @”
MichaelHindley

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上可怕的字体渲染的样子

如果您使用的是不附带JDK的IntelliJ IDEA 2016.X或更高版本,则可以设置环境变量“ IDEA_JDK”以指定特定的运行时。使用Android Studio的ubuntu 16.04中的字体渲染非常完美,因此您可以与Intellij IDEA共享相同的JRE。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)。

我修改了想法的启动脚本,使其使用phpstorm的java进行了工作,并且一切都与phpstorm一样好。 屏幕截图


有什么变化?您是否需要安装phpstorm?
Journeyman Geek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.