是否有适用于 Ubuntu 14.10 的 OpenJDK-8 或 Oracle JDK 8 的修补版本,可以修复 Java 应用程序(Jetbrains 产品、Netbeans 等)中丑陋的字体?
我之前在 Ubuntu 14.04 中安装了 OpenJDK7 的修补版本这文章,但似乎不适用于 14.10。我也找不到 OpenJDK8/OracleJDK8 的修补版本。
如果有任何适用于 OpenJDK8/OracleJDK8 的修补版本或补丁可供安装,我将不胜感激,如果有人能指出的话。
谢谢。
答案1
在阅读了各种教程并尝试了一系列修复后,我找到了一种完美的方法。
首先下载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 字体修复程序(由乌尔舒利亚克·雅罗斯拉夫) 执行以下命令:
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,而不是字体修复版。
此修复也适用于克莱恩,Android Studio和PyCharm。
这些说明假设 JDK 版本是 1.8.0_25,文件/路径名将会在未来版本中改变。
答案2
为了使 DanielSteward 的回答完整:
不幸的是tuxjdk
,GTK 的外观和感觉使用当前使用的 gtkrc 中设置的字体。但大多数主题都没有在那里设置任何字体。因此,netbeans 将使用粗体 Arial 15 作为 UI 字体。
为了修复该问题,请为具有固定字体的 netbeans 创建 gtkrc,并告诉 netbeans 使用此文件。
我准备了一个特殊的启动器,可以半自动地执行此操作:
/bin/bash #!/bin/bash ### 可自定义变量:### # Netbeans 的安装路径 NETBEANS_PATH=${NETBEANS_PATH:-~/opt/netbeans-dev-2015-06-04}/bin/netbeans # 要使用的样式的桌面环境名称 USED_DE=${USED_DE:-mate} # Tuxjdk 似乎渲染了过大的 UI 字体,因此请使用此值来减小它们 FONT_SUBTRAHENT=${FONT_SUBTRAHENT:-3} ############################### 函数 remQuotes(){ 回显“${@//\'/}” } 函数减少字体大小(){ 本地减数=$1;移位 本地参数=“$@” echo ${args//[0-9]/} $((${args//[!0-9]/} - $subtrahend)) } 主题=$(remQuotes`gsettings 获取 org.${USED_DE}.interface gtk-theme`) 字体=$(remQuotes`gsettings 获取 org.${USED_DE}.interface 字体名称`) 字体=$(减少字体大小 $FONT_SUBTRAHENT $font) themeDirs=$(find ~/.themes/ /usr/share/themes/ -type d -name "${theme}") gtkRcPath="" 对于“$themeDirs”中的目录;执行 如果 [[ -f "$dir/gtk-2.0/gtkrc" ]]; 那么 gtkRcPath="$dir/gtk-2.0/gtkrc" 休息; 菲 完毕 如果 [[ "$gtkRcPath" == "" ]]; 然后 echo“未找到主题”> / dev / stderr ./$NETBEANS_PATH $@ 菲 cat $HOME/.netbeans/.gtkrc-2.0 包括“$gtkRcPath” 样式“用户字体”{ 字体名称 = “$font” } widget_class "*" 样式 "用户字体" gtk-font-name="$font" 末梢血 GTK2_RC_FILES =〜/ .netbeans / .gtkrc-2.0 $ NETBEANS_PATH $ @
这将读取您的主题设置并仅为 netbeans 创建虚假主题。您必须调整NETBEANS_PATH
变量USED_DE
以适应您的环境。
答案3
我自己构建了 Openjdk 8u40 并应用了 tuxjdk 补丁。此外,我必须创建一个名为的文件local.conf
来/etc/fonts/
覆盖 java 的字体映射,以获取其逻辑字体,如Dialog
、Monospaced
等。此后,基于 Swing 的应用程序得到了很大改进。看一看这里。
答案4
实际上,您无需费心修改idea.sh
,因为更新后它会发生变化。有一个用户特定的配置文件~/.IntelliJIdea2016.1/config/idea.jdk
(名称会相应更改),用于存储启动 JDK。
官方参考: