Коротко о главном
За отрисовку текста в Linux отвечают freetype, harfbuzz и fontconfig, а приложения обращаются к ним через системные настройки. От корректной конфигурации зависит читаемость интерфейса, вид документов и совместимость с веб-страницами. Проблемы чаще всего связаны не с отсутствием шрифта, а с неправильными подстановками или кэшем. Разберём инвентаризацию шрифтов, установку, правила fontconfig и проверку результата.
Правильно подобранные шрифты снижают усталость глаз при долгой работе. Корректные подстановки избавляют от квадратов вместо символов и неожиданной смены гарнитуры. Единые настройки помогают согласовать вид приложений GTK, Qt и браузера. Для дизайна и вёрстки важно понимать, как система выбирает шрифт и как это влияет на метрики.
Шрифты в Linux редко ломается сам по себе. Чаще проблема в неверной конфигурации, устаревшей версии или команде, скопированной без понимания. Разберём типичные сбои и способы их исправления.
Почему это происходит
Ошибки почти всегда связаны с контекстом: другая версия пакета, не тот пользователь, устаревший конфиг или команда из руководства для другой системы. Шрифты в Linux не исключение. Поэтому сначала фиксируем исходное состояние, затем меняем одну вещь за раз.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. Вместо символов отображаются квадраты
Установите шрифт с нужным диапазоном Unicode и обновите кэш. Проверьте подстановку через fc-match с указанием языка или символа.
2. Текст выглядит размытым
Настройте hinting и antialias для вашего типа экрана. На некоторых мониторах помогает отключение субпиксельного сглаживания.
3. В Java-приложениях другой шрифт
Java часто использует собственные настройки шрифтов. Проверьте файл jre/lib/fontconfig.properties или параметры запуска приложения.
4. Эмодзи отображаются чёрно-белыми
Установите цветной шрифт эмодзи и убедитесь, что он доступен через fontconfig. Некоторые приложения не поддерживают цветные шрифты вовсе.
Как настроить правильно
Правильная последовательность проста: проверить версию и зависимости, сделать резервную копию конфигурации, внести минимальное изменение, проверить логи и только потом двигаться дальше.
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install fonts-noto fonts-dejavu fontconfig
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install google-noto-sans-fonts dejavu-sans-fonts fontconfig
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S noto-fonts ttf-dejavu fontconfig
1. Инвентаризация установленных шрифтов
fc-list показывает все известные системе семейства, fc-match — какое семейство будет выбрано для запроса. Эти две команды решают большинство вопросов о том, почему приложение выглядит не так. Фильтруйте вывод по языку или стилю.
fc-list : family | sort -u | head -20
fc-match sans-serif
fc-match 'Noto Sans:lang=ru'
2. Установка семейств
Пакеты шрифтов ставятся через менеджер пакетов, а пользовательские файлы можно положить в ~/.local/share/fonts. После добавления нужно обновить кэш. Не копируйте шрифты с сомнительной лицензией в системные каталоги.
mkdir -p ~/.local/share/fonts
cp *.ttf ~/.local/share/fonts/
fc-cache -fv
3. Правила подстановки
Файл local.conf задаёт предпочтения для общих семейств вроде sans-serif и monospace. Это влияет на приложения, которые не выбирают шрифт явно. Пользовательские правила кладутся в ~/.config/fontconfig/fonts.conf.
mkdir -p ~/.config/fontconfig
cp local.conf ~/.config/fontconfig/fonts.conf
fc-cache -f
4. Сглаживание и хинтинг
Параметры antialias, hinting и rgba влияют на чёткость текста на разных экранах. На LCD-мониторах субпиксельное сглаживание может давать цветные каймы. На HiDPI-экранах чаще достаточно обычного сглаживания.
fc-match -v 'Noto Sans' | grep -E 'antialias|hinting|rgba'
xrdb -query | grep -i xft
Рабочий конфиг
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer><family>Noto Sans</family></prefer>
</alias>
<match target="font">
<edit name="hinting" mode="assign"><const>hintslight</const></edit>
</match>
</fontconfig>
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Используйте fc-match, а не догадки, чтобы понять, какой шрифт реально
Используйте fc-match, а не догадки, чтобы понять, какой шрифт реально выбран.
Совет 2. Храните пользовательские шрифты в ~/.local/share/fonts, а не в /usr/sh
Храните пользовательские шрифты в ~/.local/share/fonts, а не в /usr/share/fonts.
Совет 3. После копирования файлов всегда запускайте fc-cache -fv.
После копирования файлов всегда запускайте fc-cache -fv.
Совет 4. Не отключайте хинтинг полностью на малых размерах: текст может стать р
Не отключайте хинтинг полностью на малых размерах: текст может стать размытым.
Профилактика
Большинство повторяющихся сбоев с Шрифты в Linux связано не с ошибкой в самой программе, а с окружением: обновились зависимости, изменился путь, закончилось место или другой администратор поправил конфиг. Поэтому профилактика начинается с фиксации исходного состояния.
Сохраните рабочий конфиг в систему контроля версий, добавьте короткий комментарий о том, зачем нужен каждый нестандартный параметр, и запишите команду проверки. Через месяц вы скажете себе спасибо: восстановить логику по чужому файлу без пояснений почти невозможно.
Чек-лист
- Версия пакета и конфигурация зафиксированы и доступны для сравнения.
- Есть автоматическая проверка синтаксиса перед перезапуском службы.
- Журналы ротуются, а диск не заполняется ими за неделю.
- Изменения проходят через тестовый стенд, а не сразу на рабочий сервер.
Итог
Большинство ошибок с Шрифты в Linux лечится не переустановкой, а проверкой конфигурации, логов и прав доступа. Действуйте по одному изменению за раз — и причина быстро найдётся.