如何在Arch Linux中修复HarfBuzz和Infinality问题
修复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。