Netbeans中的字体丑陋-如何使用系统字体?


69

我在使Netbeans字体看起来不错时遇到了问题,自从我尝试Ubuntu〜8以来,这一直是一个问题。出于某种原因,字体看起来并不仅仅在Netbeans中获得亚像素平滑,对于其他应用程序来说,它们看起来很完美。

看截图多么丑陋:

在此处输入图片说明

这不仅是代码区域,而且应用程序中的每种字体都采用这种方式。我环顾四周,显然在.bashrc文件中添加以下行应该可以解决问题,但就我而言,它没有解决问题:

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd'

它认为这可能只会影响基于Java的应用程序,但是我无法测试另一个Java应用程序来检查字体。

有谁知道我该怎么做才能解决此问题?如何使Netbeans使用系统字体?


我也一直在寻找并解决此问题,但是似乎没有一个。具体来说,它会影响基于Swing的应用程序;您会发现Eclipse看起来不错。我实际上对代码字体不太在意(它是可变的,我发现在11pt的Droid Sans Mono上看起来还可以),但是chrome字体确实让我讨厌。
Jamie Schembri

是的,它似乎只影响基于Java的应用程序,我想改变我的IDE正因为如此..
哈维尔·维拉纽瓦

实际上,我特别提到了Swing,因为字体问题在SWT应用程序(例如Eclipse)中不可见。无论哪种方式,它只会影响(某些)Java应用程序。此外,我可以确认问题仍然存在于Netbeans 7.0 RC1中。
Jamie Schembri

没错,我改用Aptana了,它们在那里看起来不错,希望我能找到解决办法,我真的很喜欢Netbeans,但是那些字体使我发疯。
哈维尔·比亚努耶娃

1
我现在使用大小为16的'Droid Sans Mono'和'-J-Dawt.useSystemAAFontSettings = on --laf javax.swing.plaf.nimbus.NimbusLookAndFeel -J-Dsun.java2d.noddraw = true -J-Dsun。 java2d.dpiaware =真正的”
Karussell

Answers:


38

如评论中所述,这是Linux上的Java Swing应用程序存在的问题。Swing确实使用了Gnome的字体平滑设置(停用,灰度或亚像素)-但是它忽略了提示设置。它总是使用完整的提示,如果您在运行Ubuntu时很少或没有字体提示(就像大多数人一样,因为默认设置是很少提示),这将使字体看起来与其他应用程序大不相同。像Eclipse这样的SWT应用程序很好,但是如果您喜欢Netbeans,那将无济于事。

警告:对于以下变通办法,我仅讨论编辑器字体,因为在IDE中,这对我很重要。您也可以将其应用于菜单字体等,但这可能会超出顶部。

我在这里找到的唯一可用解决方案:使用Fontforge编辑您选择的编辑器字体,并从字体本身中删除所有提示信息,然后将其保存为新字体并在Netbeans中使用。

  1. sudo apt-get install fontforge
  2. 启动Fontforge
  3. 打开您选择的字体
  4. Ctrl+ Aedit -> Select -> Select all选择所有字符
  5. 提示⇒明确说明
  6. Ctrl+ Shift+ Felement -> font info打开字体信息
  7. 重命名字体(例如,重命名为原始名称+'_nohints')
  8. 通过将编辑后的字体保存.fonts到您家的目录中file -> generate fonts,确保使用Ubuntu读取的格式(请参阅下一步)
  9. 清除字体缓存fc-cache -rv-在其输出之后,确保您的新字体文件被选中(例如.sfd,没有,但是.ttf有)。
  10. 运行Netbeans并使用您创建的字体作为编辑器字体

不,不是完美的,是的,有点麻烦,但仍然是一个与众不同的世界。希望能有所帮助。


3
我使用Monospace了NetBeans中的默认值。我试图进行修复 Ubuntu Monospace,现在看起来更好,但那时仍然更糟Monospace。不管怎么说,还是要谢谢你。如果我可以Monospace在文件系统上找到位置,我也会尝试对其进行修复。
umpirsky

非常感谢...我找到的唯一可行的解​​决方案。我为此感到疯狂!
Stefanos Kalantzis

不确定哪个字体文件是我的字体...仅为Ubuntu字体提供了9种不同的字体文件,因此需要查阅font.ubuntu.com来确定要修改的字体文件。希望这会起作用。
马特2015年

17

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

要么

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

到文件:netbeans.config。您可以在$ NETBEANS_HOME / etc /文件夹中找到它。根据系统偏好设置减小应用程序字体。

资源


9
配置文件通常位于/home/<user_name>/<neabeans_folder>/etc/netbeans.conf
Bibhas 2012年

2
没为我工作:(
szx

配置文件位于/etc/netbeans.conf中。第一行对我不起作用,但第二行对我
有用

添加此行后,我看不到任何区别。一种 。例如,它仍然只有一个像素,在其他任何应用程序中都能很好地显示。
NoBugs 2013年

这是我的把戏。
Nico M

7

我知道这是一个古老的问题,但是在寻求相同问题的过程中,我尝试了所有技巧,但没有运气。我以为我只需要忍受netbeans中可怕的文字。

然后我发现了这个:http: //youtrack.jetbrains.com/issue/IDEA-57233#comment=27-472038

基本上:Ubuntu 13.10,Netbeans(7.3),用于freetype的Infinality字体补丁,OpenJDK7以及对其进行修复的Swings令人沮丧的字体处理补丁。它“工作正常” !!!

复制此链接以防万一:

  1. 安装freetype

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

    $ 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字体从1990年代的可接受字体改变为现代的超棒字体。现在,我可以将Inconsolata用作Netbeans编辑器字体,它看起来很棒。

根据要求截屏:(实际文本比该捕获更加清晰。捕获中的某些内容使其略有模糊)。 在此处输入图片说明


作为脚注:“ -J-Dsun.java2d.xrender = true”引入了一些渲染故障。将其设置为false,可修复快速滚动时的渲染故障,但不会影响美观的字体。
克里斯·霍尔特

快速跟进说明:如果openjdk的更新在字体固定的更新之前得到应用,您可以像这样返回:对于openjdk-7-jdk,openjdk-7-jre和openjdk-7-jre-headless ,将其卸载,然后从字体修复库中安装以前的版本。 apt-cache policy <package>将向您显示版本。即 apt-get remove openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless apt-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
克里斯·霍尔特

您可以附加图像吗,现在看起来怎么样?
罗马,

5

字体的抗锯齿在Ubuntu Java Swing应用程序中无法正常工作。

加:

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

netbeans_default_options字符串末尾的netbeans.config 。

您可以在$ NETBEANS_HOME / etc /文件夹中找到配置文件(例如/home/<user_name>/<neatbeans_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



2

我在Ubuntu 12.04和Netbeans 7.2上遇到了相同的问题。

我尝试添加-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcdnetbeans.conf但是并没有解决问题。

然后我在Netbeans错误215785上看到有关行高的问题注释。将编辑器行高设置为1.0以及AA设置可以netbeans.conf解决我的问题。


1

我能够做到这一点(我正在使用Ubuntu 12.10,也可以在Ubuntu 13.04上工作):


步骤1(这可能在所有Ubuntu版本中都适用):

首先,我使用此插件清理菜单Tools -> Plugins -> Settings -> Add

http://java-swing-ayatana.googlecode.com/files/netbeans-catalog.xml

添加该位置后,您需要通过搜索来安装插件Java Ayatana(说明将以西班牙语显示)。这将使顶部菜单和上下文菜单与操作系统相同。


步骤2(我不知道这是否适用于所有Ubuntu版本):

接下来,您可能希望项目字体看起来更好,我为在终端上运行该字体进行了修复:sudo apt-get install gnome-tweak-tool我启动了它,并选择了另一种default fontNow Netbeans看起来很漂亮!

这是屏幕截图:

在此处输入图片说明


在调整工具上更改'Interface'字体对我有用。我只有那些文字有问题(切成两半!)
Makiavelo

1

刚看了这篇文章并试图解决我的字体问题,我也遇到了问题,我只能选择4种都是me脚的字体,想知道发生了什么事情,netbeans仅提供4种字体可供选择,并且还出现了me脚的字体选择器框,我是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
  1. 运行netbeans update,我现在觉得神奇了,我拥有漂亮的字体选择器,可以选择更多字体,然后再编写代码(这很有趣)。

希望对您有帮助。


1

在手动方式方面,我准备了一种名为“ Ubuntu Mono Nohinting”的专用字体,以解决Java Swing应用程序(例如NetBeans IDE,IntelliJ IDEA和PyCharm)的呈现问题。字体提示信息已从原始Ubuntu Mono字体家族中删除。

如何安装

  • 从此处下载zip文件
  • 提取它
  • 使用Font Viewer打开* .ttf 进行安装。
  • 或者您可以手动将* .ttf复制到中~/.local/share/fonts/

如何使用

  • 在编辑器的配置中选择“ Ubuntu Mono Nohinting”。

屏幕截图

具有PyCharm Monokai主题的Ubuntu Mono字体

具有PyCharm Monokai主题的Ubuntu Mono字体

具有PyCharm Monokai主题的Ubuntu Mono Nohinting字体

具有PyCharm Monokai主题的Ubuntu Mono Nohinting字体


1

下面的代码添加到结束netbeans_default_options你的netbeans.conf文件。

-J-Dawt.useSystemAAFontSettings=on

这将使用系统字体。


0
#!/bin/sh

gsettings set org.gnome.desktop.interface font-name 'Ubuntu 10'
sh /home/xxx/netbeans-7.2/bin/netbeans &
sleep 5
gsettings set org.gnome.desktop.interface font-name 'Ubuntu 11'

7
欢迎来到Ask Ubuntu!这个答案将大大受益,如果你要编辑它添加一些解释(或者至少告诉用户究竟做什么用这些行)。
伊利亚·卡根

0

就我个人而言,我认为Linux上Netbeans的整体默认外观有些令人失望,尤其是考虑到它在其他平台上的外观。幸运的是,可以在IDE内部轻松地更改外观(LAF)。根据您的选择,这通常会改善字体的外观。

要更改LAF,请执行以下操作:单击“工具” >>“选项”。在对话框中,选择“外观”,然后选择“外观”选项卡。只需选择一个LAF。我的首选是Nimbus,但您可能更喜欢其他东西。

还有两个“ Dark LAF”插件可用:Dark Metal和Dark Nimbus。


0

我自己做了一些不同的事情:就我而言,谈到NetBeans版本8.0.1,问题是系统上安装了JDK(Oracle JDK 8.0)。转移到OpenJDK 8之后,更好的字体出现在用户界面元素中。

我不知道这是否是一个好答案,因为它可能无法在所有地方都有效,但是可以肯定的是,通过切换JDK(无论是OpenJDK还是Oracle JDK),您可能会发现不同。


0

实际上,我已经尝试过所有可以找到的解决方案,但是除了为NetBeans使用不同的默认JDK之外,其他解决方案均无效。

Oracle的JDK不能很好地呈现字体。OpenJDK似乎也不适用于NetBeans,但可以为IntelliJ及其兄弟提供奇迹。

一种适用于NetBeans的软件称为TuxJDK,它本质上是OpenJDK的增强,适用于在Linux上工作的Java开发人员。增强功能之一是出色的字体渲染

使用方法如下:

  1. 此处下载TuxJDK二进制文件。(在撰写本文时,“ tuxjdk-static-8.92.03.tar.xz”)
  2. 随时将tar.xz解压缩。
  3. 复制TuxJDK目录的位置。
  4. 打开位于NetBeansInstallationDirectory / etc /中的netbeans.conf。
  5. 找到以“ netbeans_jdkhome”开头的行,并将该路径替换为在步骤3中复制的路径。
  6. 启动NetBeans,并使用一些漂亮的字体来处理您的眼睛!

之前:使用TuxJDK之前的 NetBeans

之后:使用TuxJDK之后的 NetBeans



-1

我在Mint 12上遇到了同样的问题。我通过输入“ Advanced Settings”->“ Fonts”并将默认字体从11减少到10来解决此问题。我将列表中的所有字体都降低了一致性。

Cantarell 11字体一定有问题。

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.