如何在Arch Linux中修复HarfBuzz和Infinality问题

时间:2020-03-21 11:43:51  来源:igfitidea点击:

修复Arch Linux中的HarfBuzz和Infinality问题

如果我们已安装Infinality-Bundle,我们可能最近可能会遇到此错误。

failed: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Var_Blend_Coordinates

在本教程中,我会向我们展示我如何修复它。

首轮:

$sudo fc-presets set

输入选项编号4并输入5号以退出。

1) combi
2) free
3) ms
4) reset
5) quit
Enter your choice... 4
Removing current preset...
Done. Now select a new preset...
Enter your choice... 5
No preset chosen. Aborting.

接下来,安装以下包。

sudo pacman -S freetype2 lib32-freetype2 fontconfig lib32-fontconfig cairo lib32-cairo jdk8-openjdk jre8-openjdk jre8-openjdk-headless

它会要求我们删除现有的Infinality包。
只需键入y即可删除并安装上述软件包。

示例输出:

resolving dependencies...
looking for conflicting packages...
:: cairo and cairo-infinality-ultimate are in conflict. Remove cairo-infinality-ultimate? [y/N] y
:: fontconfig and fontconfig-infinality-ultimate are in conflict. Remove fontconfig-infinality-ultimate? [y/N] y
:: freetype2 and freetype2-infinality-ultimate are in conflict. Remove freetype2-infinality-ultimate? [y/N] y
:: lib32-cairo and lib32-cairo-infinality-ultimate are in conflict. Remove lib32-cairo-infinality-ultimate? [y/N] y
:: lib32-fontconfig and lib32-fontconfig-infinality-ultimate are in conflict. Remove lib32-fontconfig-infinality-ultimate? [y/N] y
:: lib32-freetype2 and lib32-freetype2-infinality-ultimate are in conflict. Remove lib32-freetype2-infinality-ultimate? [y/N] y
Packages (17) cairo-infinality-ultimate-1.14.6-2 [removal]
 fontconfig-infinality-ultimate-2.11.95-4 [removal]
 freetype2-infinality-ultimate-2.6.3-4 [removal]
 java-environment-common-2-2 java-runtime-common-2-2
 lib32-cairo-infinality-ultimate-1.14.6-2 [removal]
 lib32-fontconfig-infinality-ultimate-2.11.95-1 [removal]
 lib32-freetype2-infinality-ultimate-2.6.3-3 [removal]
 cairo-1.14.8-1 fontconfig-2.12.1-4 freetype2-2.7.1-1
 jdk8-openjdk-8.u112-1 jre8-openjdk-8.u112-1
 jre8-openjdk-headless-8.u112-1 lib32-cairo-1.14.6-2
 lib32-fontconfig-2.12.1-4 lib32-freetype2-2.7.1-1
Total Download Size: 39.09 MiB
Total Installed Size: 146.73 MiB
Net Upgrade Size: 136.01 MiB
:: Proceed with installation? [Y/n] y

如果已安装IBFONTS-Meta-Base和IBFONTS-META-EXPENT或者类似的字体组,则需要删除它们。

为此,运行:

sudo pacman -Rns ibfonts-meta-base
sudo pacman -Rns ibfonts-meta-extended

仍然可以剩下一些包,标记为依赖项。
发现和删除它们可能会困难。
所以,我们需要使用PKBrowser轻松找到它们。
运行以下命令以安装pkgbrowser如果未安装它。

yaourt -S pkgbrowser

安装后,从终端或者菜单打开它。
pkgbrowser应该看起来像。

之后我们需要安装以下字体类型:

sudo pacman -S gsfonts

如果T1-URW-FONTS-IB与GSFONTS冲突,则回答是以删除T1-URW-FONTS-IB。

sudo pacman -S ttf-dejavu

如果TTF-Dejavu-IB与TTF-dejavu冲突,则回答是以删除TTF-Dejavu-IB。

sudo pacman -S noto-fonts

如果TTF-NOTO-FONTS-IB与NOTO-FONTS冲突,则回答是要删除。
TTF-NOTO-FONTS-IB。

然后,最终确保使用命令删除所有Infinality-Bundle:

sudo pacman -Rns infinality-bundle infinality-bundle-multilib infinality-bundle-fonts

示例输出将是:

error: target not found: infinality-bundle
error: target not found: infinality-bundle-multilib
error: target not found: infinality-bundle-fonts

如果输出如上所述,恭喜!我们已从Arch系统中删除了Infinality-Bundle。

接下来,创建以下符号链接以指示FreeType2使用良好的渲染默认值:

sudo ln -s /etc/fonts/conf.avail/11-lcdfilter-default.conf /etc/fonts/conf.d
sudo ln -s /etc/fonts/conf.avail/10-sub-pixel-rgb.conf /etc/fonts/conf.d

然后,修改(或者创建)/etc/fonts/local.conf文件。

sudo nano /etc/fonts/local.conf

在此链接中添加内容。

保存并关闭文件。

接下来,安装Fonts-Meta-Extended-LT程序包以确保已安装所有必要的字体。

yaourt -S fonts-meta-extended-lt

这将安装必要和丢失的字体。
它需要一段时间。

然后我们需要查找是否有任何缺少的可选依赖项。
为此,请运行以下命令:

sudo pacman -Qi fonts-meta-base fonts-meta-extended-lt

并记下"可选DEPS"下列出的软件包并安装它们。
我必须安装以下可选依赖项。

sudo pacman -S t1-cursor-ib ttf-gelasio-ib

一旦安装了所有可选依赖项,编辑/etc/profile.d/jre.sh文件:

sudo nano /etc/profile.d/jre.sh

并添加以下行以启用用于Java应用程序的字体抗锯齿。

# https://wiki.archlinux.org/index.php/java#Better_font_rendering
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'

保存并关闭文件。

最后,运行以下命令以更新所有更改。

sudo gdk-pixbuf-query-loaders --update-cache

现在,从Pacman.conf文件中删除所有Infinality-Bundle存储库并重新启动Arch Linux。