Поиск по сайту:

Как исправить проблему 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

Статьи по данной тематике