Netbeans中的字体很丑 - 我该如何让它使用系统字体?

我在使用Netbeans时遇到了字体显示不好看的问题,这个问题从我尝试Ubuntu ~8开始就一直存在。不知为何,只有在Netbeans中字体看起来没有进行次像素平滑处理,而其他应用程序的字体则看起来完美无瑕。
看看这个截图有多丑陋:

enter image description here

不仅是代码区域,应用程序中的每个字体都是这样的。我四处寻找了一下,显然在.bashrc文件中添加以下行可以解决这个问题,但在我的情况下并没有起作用:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd'

我觉得这可能只会影响基于Java的应用程序,但我还没有测试其他Java应用程序来检查字体。

有人知道我该怎么做才能解决这个问题吗?我该如何让Netbeans使用系统字体?


我也一直在寻找解决方法,但似乎并没有一个。具体来说,这会影响基于Swing的应用程序;例如,你会发现Eclipse看起来很好。实际上,我对代码字体并不太在意(可以更改,并且我发现使用Droid Sans Mono 11pt看起来还不错),但是浏览器字体确实让我很烦恼。 - Jamie Schembri
是的,看起来只影响基于Java的应用程序,我正在考虑因为这个问题而更换我的集成开发环境(IDE)。 - Javier Villanueva
实际上,我特别提到了Swing,因为字体问题在SWT应用程序(如Eclipse)中是不可见的。无论如何,它只影响(一些)Java应用程序。此外,我可以确认这个问题在Netbeans 7.0 RC1中仍然存在。 - Jamie Schembri
你说得对,我切换到了Aptana,字体看起来还不错,在这里希望我能找到解决办法。我真的很喜欢Netbeans,但那些字体让我抓狂。 - Javier Villanueva
1我现在使用的是 'Droid Sans Mono',大小为16,并带有 '-J-Dawt.useSystemAAFontSettings=on --laf javax.swing.plaf.nimbus.NimbusLookAndFeel -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true'。 - Karussell
请将接受的答案更改为Chris Holt所给出的答案。这将对以后阅读此内容的所有人有所帮助。 - Mihai
https://www.rdeeson.com/weblog/159/fix-ugly-fonts-in-netbeans-under-linux ---使用以下任一选项:---在您的netbeans.conf文件中添加netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dawt.useSystemAAFontSettings=on" --或者-- 在您的.bash_profile文件中添加export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'。 - loxaxs
我在Ubuntu上运行多个Netbeans配置,具体取决于我需要使用的编译器。它们都通过使用-J-Dawt.useSystemAAFontSettings=on设置来修复,这个设置是由@Karussell、@Ioxaxs和Kevin RED提供的答案确定的。非常简单,非常有效 - 看起来到目前为止只有我一个人点赞了。此外,我还使用“最大化本地外观”,因为对话框会在通常的字段(例如文件打开)上打开光标,而不是Swing的“面板顶部”(或其他位置)。 - will
17个回答

正如评论中所述,这是Linux上Java Swing应用程序的问题。Swing确实使用了Gnome的字体平滑设置(禁用、灰度或子像素)-尽管它忽略了字体提示设置。它总是使用完全提示,如果你在Ubuntu上运行并且几乎没有字体提示(因为很多人都是使用默认设置的几乎没有提示),这将使字体看起来与其他应用程序明显不同。SWT应用程序(如Eclipse)没有问题,但如果你喜欢Netbeans,这对你没有帮助。
注意:在下面的解决方法中,我只谈论编辑器字体,因为在IDE中这对我来说很重要。你也可以将它应用于菜单字体等,但那可能有点过头。
我找到的唯一可用的解决方案 在这里:使用Fontforge编辑您选择的编辑器字体并从字体本身中删除所有提示信息,然后将其另存为新字体并在Netbeans中使用它。
  1. sudo apt-get install fontforge
  2. 启动 Fontforge
  3. 打开您选择的字体
  4. Ctrl+Aedit -> Select -> Select all 选择所有字符
  5. Hints ⇒ 清晰的说明
  6. Ctrl+Shift+Felement -> font info 打开字体信息
  7. 重命名字体(例如,改为原始名称 + '_nohints')
  8. 通过 file -> generate fonts 将编辑后的字体保存在您的主目录下的 .fonts 目录中,确保使用 Ubuntu 可读取的格式(请参见下一步骤)
  9. 清除字体缓存 fc-cache -rv - 按照其输出以确保拾取新的字体文件(例如,.sfd 不行,但 .ttf 行)。
  10. 运行 Netbeans 并将您创建的字体用作编辑器字体
不,不完美,是有点麻烦,但仍然有天壤之别。希望这能帮到你。

3我使用的是NetBeans中的默认字体Monospace。我尝试修复了Ubuntu Monospace,现在看起来好一些了,但仍然比Monospace差。不管怎样,还是谢谢。如果我能找到Monospace在文件系统中的位置,我也会尝试修复它。 - umpirsky
非常感谢...这是我找到的唯一有效的解决方案。我对此问题烦透了!! - Stefanos Kalantzis
不确定哪个字体文件是我的字体...仅Ubuntu字体就有9个不同的字体文件,所以需要查阅http://font.ubuntu.com/来找出要调整哪一个。希望这样能行。 - matanster

添加

--laf Nimbus -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd

或者

-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd --laf Metal

在文件netbeans.config中的default_options字符串末尾。您可以在$NETBEANS_PATH/etc/文件夹中找到它。 从系统偏好设置中将应用程序字体调小。

来源


9配置文件通常位于/home/<user_name>/<neabeans_folder>/etc/netbeans.conf - Bibhas
2对我没用 :( - szx
配置文件位于 /etc/netbeans.conf。第一行对我没用,但第二行解决了问题。 - Christian Vielma
我在添加这行代码后没有看到任何区别。例如,一个点仍然只有一个像素,而在其他应用程序中它显示得很好。 - NoBugs
这个对我起了作用。 - NiMeDia
我根据R. Oosterholt的建议编辑了答案。你必须将选项添加到default_options字符串中。 - Carlos

我知道这是一个老问题,但在寻找同样的问题时,我尝试了这里的所有技巧都没有成功。我以为我只能忍受Netbeans中糟糕的文本。
然后我找到了这个链接: http://youtrack.jetbrains.com/issue/IDEA-57233#comment=27-472038 基本上: Ubuntu 13.10,Netbeans(7.3),Infinality字体补丁到freetype,OpenJDK7,并对其进行修补以修复Swings糟糕的字体处理。然后它“就工作了”!
为了防止链接失效,我将其复制在这里:
  1. 安装freetype

    $ sudo apt-get install libfreetype6
    
  2. 安装infinality补丁

    $ sudo add-apt-repository ppa:no1wantdthisname/ppa
    $ sudo apt-get update
    $ sudo apt-get install fontconfig-infinality
    

    之后需要执行以下操作:

    $ sudo rm /etc/fonts/conf.avail/52-infinality.conf
    $ sudo ln -s /etc/fonts/infinality/infinality.conf /etc/fonts/conf.avail/52-infinality.conf
    

    要使用类似Windows 7的字体渲染,请执行以下操作:

    $ sudo /etc/fonts/infinality/infctl.sh setstyle win7
    

    在/etc/profile.d/infinality-settings.sh中将USE_STYLE设置为"WINDOWS7"

  3. 安装修复过的OpenJDK字体

    $ sudo add-apt-repository ppa:no1wantdthisname/openjdk-fontfix
    $ sudo apt-get update
    $ sudo apt-get install openjdk-7-jdk
    

    在.../etc/netbeans.conf中,

    netbeans_default_options包括: -J-Dawt.useSystemAAFontSettings=lcd-J-Dsun.java2d.xrender=true"

    并设置 netbeans_jdkhome="/usr/lib/jvm/java-1.7.0-openjdk-amd64"

这改变了我的Netbeans字体,从90年代的可接受到现代的超赞。现在我可以使用Inconsolata作为我的Netbeans编辑器字体,看起来非常棒。
如要求的那样,附上屏幕截图:(实际文本比此截图更清晰,截图中的某些东西稍微模糊了一点)。 enter image description here

作为一个脚注:"-J-Dsun.java2d.xrender=true"引入了一些渲染故障。将其设置为false,在快速滚动时修复了渲染故障,但对美丽的字体没有影响。 - Chris Holt
一则快速的后续说明:如果openjdk软件包在font-fixed软件包之前更新,并且你应用了这个更新,你可以像这样恢复:对于openjdk-7-jdk,openjdk-7-jre和openjdk-7-jre-headless,先卸载它们,然后从font fix软件源中安装先前的版本。apt-cache policy <package> 命令将显示可用版本。例如: apt-get remove openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headlessapt-get install openjdk-7-jdk=7u51-2.4.4-0ubuntu0.13.10.1ppa2 openjdk-7-jre=7u51-2.4.4-0ubuntu0.13.10.1ppa2 openjdk-7-jre-headless=7u51-2.4.4-0ubuntu0.13.10.1ppa2 - Chris Holt
你可以附上图片吗?现在它看起来是什么样子? - Roman

Ubuntu Java Swing应用程序中的字体反锯齿效果不正确。
添加:
-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd

netbeans_default_options字符串的末尾添加到netbeans.config。

您可以在$NETBEANS_HOME/etc/文件夹中找到配置文件(例如,/home/<user_name>/<netbeans_folder>/etc/netbeans.conf

示例:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dnetbeans.extbrowser.manual_chrome_plugin_install=yes -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd"

对我来说,配置文件位于/etc/netbeans.conf(并且从其他位置进行了符号链接)。 - Cedric Reichenbach
明显来源:https://www.rdeeson.com/weblog/159/fix-ugly-fonts-in-netbeans-under-linux -- 对我有效 - loxaxs
对于Manzaro Linux来说,配置文件是/usr/etc/netbeans.conf - cuspymd
这对我有用,在基于NetBeans的MPLABX编辑器中也适用。该文件位于/opt/microchip/mplabx/v5.45/mplab_platform/etc/mplab_ide.conf - Carlos

这个字体还不错。

然而,这是一个Java应用程序,有一种特殊的处理字体的方式。

如果你只想改变字体大小,你可以使用"--fontsize"参数启动Netbeans:

netbeans --fontsize 12

如果您想更改字体类型,更改环境参数会稍微困难一些。这篇文章解释得非常好:

https://wiki.archlinux.org/index.php/Java_Runtime_Environment_Fonts

这是为ArchLinux准备的,但我认为它在Ubuntu上也可以工作,因为Java是一种通用软件。

我在Ubuntu 12.04和Netbeans 7.2上遇到了同样的问题。
我尝试在netbeans.conf中添加"-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd",但问题没有解决。
然后我看到了关于行高的问题评论,链接为Netbeans bug 215785。 将编辑器行高设置为1.0,并在netbeans.conf中设置AA参数,解决了我的问题。

进一步采用手动方式,我准备了一个专用字体,名为“Ubuntu Mono Nohinting”,以解决Java Swing应用程序(如NetBeans IDE、IntelliJ IDEA和PyCharm)的渲染问题。原始的Ubuntu Mono字体系列已经去除了字体提示信息。
安装方法:
- 从这里下载zip文件from here - 解压缩 - 使用“字体查看器”打开*.ttf文件进行安装 - 或者手动将*.ttf文件复制到~/.local/share/fonts/目录中
使用方法:
- 在编辑器的配置中选择“Ubuntu Mono Nohinting”字体
屏幕截图:
- 使用PyCharm Monokai主题的Ubuntu Mono字体

Ubuntu Mono Font with PyCharm Monokai theme

Ubuntu Mono Nohinting字体与PyCharm Monokai主题

Ubuntu Mono Nohinting Font with PyCharm Monokai theme



刚刚看到这篇帖子,试图解决我的字体问题。我也遇到了同样的问题,只能选择4种很糟糕的字体,不知道为什么NetBeans只提供了4种字体选择,并且字体选择框也很差劲。我是NetBeans的忠实粉丝,相信在这里能找到解决方案。
无论如何,我按照所有可能的指南进行了操作。 我使用的是Ubuntu 13.10和NetBeans 7.3(是的,我喜欢不稳定的东西)。
  1. 在我的用户文件夹中创建了.font文件夹。
  2. 将我拥有的所有字体复制到该文件夹中。
  3. 在netbeans.conf文件中添加了以下行。

通过运行以下命令找到它:

locate netbeans.conf

编辑并按照上述建议在引号内添加以下内容。
-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd --laf Metal

运行NetBeans更新,我认为这是一个神奇的操作,现在我有了漂亮的字体选择器,并且有更多的字体可供选择,然后就可以开始编写代码了(无趣的笑话)。
希望对你有所帮助。

个人认为,Netbeans在Linux上的默认外观有点令人失望,特别是考虑到它在其他平台上的美观程度。幸运的是,可以从IDE内部轻松更改外观和感觉(LAF)。根据您的选择,这通常会改善字体的外观。
要更改LAF,请执行以下操作: 单击“工具”>>“选项” 在对话框中,选择“外观”,然后选择“外观和感觉”选项卡 只需选择其中一个LAF即可。我偏爱Nimbus,但您可能喜欢其他东西。
还有两个“暗色LAF”插件可用:Dark Metal和Dark Nimbus。