问题描述
我在让Netbeans字体看起来很好看时遇到了问题,自从我尝试Ubuntu~8以来,这一直是个问题。由于某种原因,字体看起来只是在Netbeans中没有得到亚像素平滑,对于其他应用程序,它们看起来很完美。
看看截图是多么丑陋:
它不仅仅是代码区域,而且应用程序中的每种字体都是这样的。我环顾四周,显然在.bashrc
文件中添加以下行应该解决问题,但在我的情况下它没有:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd'
它认为它可能只会影响基于Java的应用程序,但我无法测试另一个Java应用程序来检查字体。
有谁知道我该怎么做才能解决这个问题?如何让Netbeans使用系统字体?
最佳解决思路
正如评论中所述,这是Linux上的Java Swing应用程序的问题。 Swing确实使用了Gnome的字体平滑设置(停用,灰度或子像素) – 但它忽略了提示设置。它总是使用完全提示,如果你运行Ubuntu很少或没有字体提示(因为大多数人做的,因为很少暗示是默认设置)这将使字体显得与其他应用程序显著不同。像Eclipse这样的SWT应用程序很好,但如果你喜欢Netbeans,这对你没有帮助。
警告:对于以下解决方法,我只谈论编辑器字体,因为在IDE中,’s what’对我很重要。您也可以将它应用于菜单字体等,但这可能有点超过顶部。
我发现here唯一可用的解决方案:使用Fontforge编辑您选择的编辑器字体,并从字体本身中删除所有提示信息,然后将其保存为新字体并在Netbeans中使用。
-
sudo apt-get install fontforge
-
启动Fontforge
-
打开您选择的字体
-
Ctrl
+A
或edit -> Select -> Select all
选择所有字符 -
提示⇒清除说明
-
Ctrl
+Shift
+F
或element -> font info
打开字体信息 -
重命名字体(例如原始名称+ ‘_nohints’)
-
通过
file -> generate fonts
将编辑后的字体保存在家中的.fonts
目录中,确保使用Ubuntu读取的格式(参见下一步) -
清除字体缓存
fc-cache -rv
– 按照其输出确保您的新字体文件被拾取(例如.sfd
不会,但.ttf
会这样做)。 -
运行Netbeans并使用您创建的字体作为编辑器字体
不,不完美,是的,有点麻烦,但仍然是一个不同的世界。希望有所帮助。
次佳解决思路
加
--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 /文件夹中找到它。从系统首选项中缩小应用程序字体。
第三种解决思路
我知道这是一个老问题,但在我寻求同样的问题时,我在这里尝试了所有的技巧而没有运气。我以为我只能忍受netbeans中可怕的文字。
然后我发现了这个:http://youtrack.jetbrains.com/issue/IDEA-57233#comment=27-472038
基本上:Ubuntu 13.10,Netbeans(7.3),Infinality字体补丁到freetype,OpenJDK7,以及补丁来修复Swings惨淡的字体处理。它”just worked” !!!
如果链接死亡,请在此处复制:
-
安装freetype
$ sudo apt-get install libfreetype6
-
安装无限补丁
$ 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″
-
安装字体修复了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编辑器字体,它看起来很棒。
按要求进行屏幕截图:(实际文本比此捕获更清晰。捕获中的某些内容略微模糊)。
第四种思路
字体的anti-aliasing在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"
第五种思路
字体不是那么糟糕..
但是,这是一个Java应用程序,并作为处理字体的特殊方式。
如果只想更改字体大小,可以使用“–fontsize” parameter启动Netbeans:
netbeans --fontsize 12
如果你想改变字体类型,那么改变环境参数会有点困难,本文解释得非常好:
https://wiki.archlinux.org/index.php/Java_Runtime_Environment_Fonts
这是针对ArchLinux的,但我认为它也适用于Ubuntu,因为Java是一个通用软件。
第六种思路
我在Ubuntu 12.04和Netbeans 7.2上遇到了同样的问题。
我尝试将-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd
添加到netbeans.conf
但它没有解决问题。
然后我看到了有关Netbeans bug 215785线高的问题评论。在netbeans.conf
中将编辑器行高设置为1.0以及AA设置解决了我的问题。