Как исправить проблему Harfbuzz и бесконечности в Arch Linux
Несколько дней назад я опубликовал руководство — VirtualBox не открывается после обновления Harfbuzz в Arch Linux. Я исправил эту ошибку, понизив Harfbuzz до более низкой версии. Это сработало для меня, и до сих пор у меня нет проблем. Кроме того, некоторое время назад я уже написал еще одно руководство, в котором описывалось, как Установить шрифты и улучшить качество рендеринга шрифтов в Arch Linux. Мы сделали это с помощью infinality-bundle, созданного и разработанного bohoomil, который пропал без вести и не отвечает на запросы уже несколько месяцев. В поисках альтернативного метода я наткнулся на многообещающее руководство, опубликованное на GitHub другим пользователем Linux cryzed. Я попробовал его, и оно действительно помогло мне исправить ошибку Harfbuzz. и проблема Infinality в моем Arch Linux. Итак, я сделал это руководство для тех, кто сталкивается с той же проблемой. Следующее руководство полностью основано на статье, написанной cryzed. Вся заслуга принадлежит первоначальному автору.
Исправьте проблему Harfbuzz и бесконечности в Arch Linux
Если вы установили 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
Он попросит вас удалить существующие пакеты бесконечности. Просто введите 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-extended или аналогичные группы шрифтов, вам также необходимо удалить их.
Для этого запустите:
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.
Затем, наконец, убедитесь, что вы удалили все пакеты бесконечности с помощью команды:
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.
Затем создайте следующие символические ссылки, чтобы указать 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
Запишите пакеты, перечисленные в разделе "Дополнительные настройки", и установите их. Мне пришлось установить следующие дополнительные зависимости.
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
Теперь удалите все репозитории infinality-bundle из файла pacman.conf и перезапустите Arch Linux.
Это действительно помогло обнаружить проблему со шрифтами harfbuzz и infinality на моем рабочем столе Arch Linux. Я бы не сказал, что это полностью обеспечило качество рендеринга шрифтов, как это сделал Infinality-bundle. Но Это было так близко. Сейчас меня устраивает результат.
Вот результат после следования этому руководству.
В ближайшие дни я буду обновлять это руководство, добавляя более подробную информацию.
Надеюсь, поможет. Для получения более подробной информации обратитесь к оригинальному руководству, указанному ниже.
Источник и ссылка:
- Набор инструкций по устранению проблемы с harfbuzz + Infinality