适用于 Ubuntu 的 OpenJDK-8/Oracle JDK 8 字体补丁

适用于 Ubuntu 的 OpenJDK-8/Oracle JDK 8 字体补丁

是否有适用于 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 StudioPyCharm

这些说明假设 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 的字体映射,以获取其逻辑字体,如DialogMonospaced等。此后,基于 Swing 的应用程序得到了很大改进。看一看这里

答案4

实际上,您无需费心修改idea.sh,因为更新后它会发生变化。有一个用户特定的配置文件~/.IntelliJIdea2016.1/config/idea.jdk(名称会相应更改),用于存储启动 JDK。

官方参考:

相关内容