Все статьи
24 сентября 2026 г.10 мин чтения

Как проверить, что Linux использует именно экспортированный шрифт, а не похожий системный

Как проверить, что Linux использует именно экспортированный шрифт, а не похожий системный

После экспорта рукописного шрифта в Linux может возникнуть обманчивая ситуация: файл установлен, название семейства видно в списке, а текст в редакторе всё равно выглядит как раньше. Часто проблема не в испорченном экспорте: Fontconfig подбирает к запросу ближайший доступный шрифт, и установленная ранее копия с тем же именем может выиграть выбор. Проверьте сам файл, путь, который выбрал Fontconfig, и форму контрольной строки в целевом приложении.

Почему приложение может показать не ту сборку

Приложения Linux обычно просят не «открой именно файл new.ttf», а «найди семейство с таким именем, стилем и набором знаков». Fontconfig сопоставляет запрос с установленными шрифтами; при отсутствии точного совпадения он возвращает наиболее близкое. Это полезное поведение для обычного текста, но оно усложняет проверку собственного экспорта: похожий системный шрифт может тихо подменить ваш, и текст всё равно останется читаемым.

Особенно легко спутать версии, если вы несколько раз экспортировали семейство под одним внутренним именем. Менялся файл на диске, но в пользовательской и системной папках остались две копии; приложение уже было открыто; или в тесте набрана строка, состоящая только из знаков, которые совпадают у обоих шрифтов. В результате визуальный осмотр не отвечает на главный вопрос: какой файл действительно выбрала система.

Проверка ниже относится к Linux-системам, в которых установлен Fontconfig. Команды fc-query, fc-list и fc-match читают информацию о файлах и доступных шрифтах; это диагностика выбора, а не конвертация и не исправление контуров. Имена параметров могут отличаться в старых версиях утилит, поэтому при неизвестном ключе сначала посмотрите справку man fc-query или fc-query --help.

Шаг 1. Зафиксируйте экспорт, который хотите проверить

Создайте отдельную папку для итоговой сборки и положите туда именно тот TTF, который собираетесь использовать. Например, назовите файл eskiz-final-03.ttf, а не просто font.ttf: осмысленное имя помогает человеку, хотя само по себе не меняет внутреннее имя семейства. Запишите точный путь к файлу и дату экспорта. Не переименовывайте несколько разных версий в одинаковое внутреннее семейное имя без необходимости — по одному имени приложениям сложнее различать варианты.

Составьте короткую контрольную строку с заметными формами вашего проекта. Для кириллицы подойдут, например, «Живая щука ждёт Ёжика», сочетание «ЛГД», цифры 0123456789 и знаки № — ₽. Выберите именно те буквы или цифры, которые вы дорабатывали. Строка должна выявлять характерную правку: если вы изменили форму «Ж», но проверяете только мама, тест не заметит устаревшую копию.

Сохраните рядом снимок или небольшой PDF с этой строкой в обычном шрифте. Он станет базой для сравнения после выбора экспортированной сборки. Не делайте вывод по одной только общей «похожести»: сопоставьте конкретные отличия — например, угол диагоналей «Ж», хвост «ц», ширину «Ш» или очертание цифры 4.

Шаг 2. Прочитайте данные непосредственно из файла

Сначала спросите fc-query о файле по полному пути:

fc-query --format="%{family} | %{style} | %{file}\n" ./eskiz-final-03.ttf

Команда запрашивает семейство, стиль и путь из самого файла. Если семейство или стиль пустые, отображаются неожиданно или файл нельзя прочитать, это отдельный сигнал проверить экспорт. Успешный вывод ещё не означает, что приложение выберет эту версию: fc-query отвечает на вопрос «что находится в этом файле», а не «какой файл выбран для запроса по имени».

Для первичной проверки можно вывести все сведения командой fc-query ./eskiz-final-03.ttf. Посмотрите, читается ли файл и какие имена семейства и стиля он содержит. Сверьте их с тем именем, которое вы вводите в редакторе. Имя файла eskiz-final-03.ttf может не совпадать с семейным именем внутри TTF — это нормально. Переименование расширения или самого файла не исправляет внутренние данные.

Если в выводе перечислено несколько лиц или экземпляров, не предполагайте, что перед вами один стиль. Зафиксируйте индекс, если инструмент его показывает, и сравните нужное лицо. В этой статье речь идёт о проверке конкретной сборки; если экспортируемый файл является коллекцией, диагностику каждого лица стоит проводить отдельно.

Шаг 3. Найдите все копии семейства

Теперь проверьте, какие совпадения зарегистрированы для нужного имени:

fc-list --format="%{family} | %{style} | %{file}\n" | sort

Команда выведет список доступных шрифтов и путь каждого файла; просмотр может быть длинным. Чтобы отфильтровать семейство, добавьте после конвейера grep -i "Eskiz", заменив Eskiz на ваше семейное имя. Не делайте вывод только по названию: две разные копии могут сообщать одно и то же семейство. Сравните именно пути, а затем при необходимости снова прочитайте каждую копию через fc-query.

Полезно искать не только полное семейное имя, но и прежние варианты написания. Например, до правки семейство могло называться Eskiz Hand, а новая сборка — EskizHand. Если программа при запросе семейства показывает несколько лиц, перечислите их отдельно и отметьте, какое ожидаете увидеть. Это небольшая инвентаризация, которая часто сразу объясняет «почему буквы не изменились».

Системные папки шрифтов могут принадлежать администратору, а пользовательская установка обычно не требует менять их. Пути различаются между дистрибутивами и конфигурациями Fontconfig; не копируйте файлы в произвольные каталоги от имени root. Сначала выясните, где именно Fontconfig уже увидел файл. Если нужно установить его для своего пользователя, следуйте документации вашего дистрибутива, а после установки обновите список шрифтов тем способом, который он поддерживает.

Шаг 4. Уточните, какой путь выберет система

Самая важная команда в диагностике — fc-match:

fc-match --format="%{family} | %{style} | %{file}\n" "Eskiz Hand"

Подставьте точное имя семейства из TTF. В выводе смотрите прежде всего на file: этот путь показывает, какой файл Fontconfig выбрал для данного запроса. Если там путь к системной гарнитуре, а не к вашему экспорту, проблема локализована: приложение запросило семейство, но система сопоставила его с другим файлом. Если выбран верный путь, переходите к проверке содержимого и поведения приложения.

Сравните путь из fc-match с путём, полученным на шаге 2. Если они совпали, у вас есть хорошее подтверждение, что запрос по имени разрешился в ожидаемую копию. Если совпало только семейство, но путь отличается, в системе есть дубль или правило сопоставления, которое влияет на выбор. Не удаляйте случайные системные файлы: сначала найдите дубликаты, затем временно отключите только тестовую старую копию, если вы знаете, как её вернуть.

fc-match всегда стремится вернуть лучший доступный вариант, поэтому сам факт наличия строки в выводе не доказывает точное совпадение. Важен путь, а также семейство и стиль, которые вы ожидаете. Это свойство объясняет, почему команда полезна для выявления подмены даже тогда, когда никакой ошибки или предупреждения нет.

Шаг 5. Перезапустите приложение и проверьте контрастный текст

Если система выбирает правильный файл, но открытая программа не меняет вид строки, закройте её полностью и запустите снова. Приложение могло загрузить список шрифтов при старте и продолжает использовать прежнее состояние. Не редактируйте глобальную конфигурацию Fontconfig первым действием: сначала исключите простой устаревший список внутри приложения.

В новом документе выберите точное семейное имя и вставьте свою контрольную строку. Проверьте несколько визуально отличительных символов, а не только заглавные буквы. Для рукописного шрифта хорошо работают смешанные фразы, где форма одной буквы повторяется в разных позициях, например «Жора ждёт щуку» или «Цифра 4 выше 1». Сравнивайте одинаковый кегль и масштаб: маленький текст и сглаживание на экране способны скрыть разницу контуров.

Если редактор показывает настройки используемого шрифта, проверьте там семейство и начертание. Если приложение умеет выводить сведения о реально применённой гарнитуре, сопоставьте их с результатом fc-match. Возможности редакторов различаются, поэтому не рассчитывайте на один универсальный экран или меню. Важна согласованность трёх проверок: файл читается, сопоставление указывает на ожидаемый путь, а контрольная строка показывает ваши правки.

Наконец, сохраните документ и откройте его после перезапуска приложения. Это помогает отличить текущий выбор семейства от случая, когда программа подставила другой шрифт при повторном открытии. Если файл предназначен только для экспорта в другой формат, проверьте уже конечный результат отдельно: приложение может встроить или подставить шрифт при сохранении документа, и экранный тест сам по себе этого не подтверждает.

Как читать результат диагностики

  • fc-query не читает файл или не показывает ожидаемые сведения — перепроверьте путь, целостность TTF и сам экспорт.
  • fc-query верен, но fc-list показывает несколько путей с тем же семейством — разберите дубликаты и старые версии.
  • fc-match возвращает системный файл — проверьте внутреннее имя, установку новой версии и совпадающие копии.
  • fc-match возвращает нужный файл, но приложение показывает прежний вид — перезапустите приложение и проверьте, что выбрано верное семейство и стиль.
  • Командная проверка и редактор подтверждают нужный TTF, но экспортированный PDF или изображение отличается — проверяйте настройки и результат конечного формата отдельно.

Такой разбор не пытается «починить шрифт» вслепую. Он разделяет четыре слоя: содержимое файла, набор шрифтов, сопоставление по имени и выбор внутри приложения. Когда известен слой, повторный экспорт становится осмысленным: пересобирайте TTF, если его содержимое неверно; устраняйте только подтверждённый дубль, если выбор указывает на другой путь; возвращайтесь к настройкам редактора, если системный матч уже правильный.

Чек-лист перед тем, как считать экспорт проверенным

  • Записать полный путь и дату нужной версии TTF.
  • Выбрать контрольную строку, в которой видны последние правки.
  • Прочитать семейство, стиль и путь из самого файла через fc-query.
  • Просмотреть дубликаты по семейству и записать их пути.
  • Проверить ответ fc-match и убедиться, что он указывает на нужный TTF.
  • Перезапустить приложение, открыть контрольный текст и сохранить результат проверки.
  • Отдельно проверить PDF, веб-файл или иной конечный формат, если выпускаете его из приложения.

Ошибки, которые маскируют подмену

Считать, что найдено имя — значит найден нужный файл. Имя может совпадать у нескольких копий; сверяйте путь fc-match с путём конкретного экспорта.

Проверять только случайную фразу. Если в ней нет букв, изменённых при последней сборке, старая и новая версии могут выглядеть одинаково. Контрольный набор должен намеренно включать эти формы.

Удалять кэш или менять системную конфигурацию до проверки пути. Это может добавить новые проблемы и затруднить возврат к прежнему состоянию. Сначала используйте чтение метаданных и сопоставление; системное вмешательство требуется только при подтверждённой причине.

Считать fc-match доказательством того, что приложение обязано использовать этот файл. Fontconfig отвечает на общий запрос; программа может иметь собственный механизм загрузки, кэшировать выбранные шрифты или использовать другую среду. Поэтому подтверждайте системное сопоставление внутри целевого приложения.

Путать визуальное сходство с идентичностью. Две версии одного почерка могут быть очень похожи, а растеризация — смягчить различие. Путь файла и несколько намеренно изменённых знаков дают более надёжное подтверждение, чем беглый взгляд на одну строку.

FAQ

Что именно показывает fc-match?

fc-match выдаёт лучший шрифт Fontconfig для заданного запроса, а не гарантирует, что пользователь ввёл точное имя установленного файла. Формат вывода с %{file} помогает увидеть путь выбранного файла. Сравните его с путём своего экспорта.

Почему Fontconfig выбрал похожий системный шрифт?

При поиске по семейству система сопоставляет запрошенные свойства с доступными шрифтами и может вернуть ближайший вариант. Это штатное поведение. Проверьте точность внутреннего имени, стиль и наличие дубликатов, затем сравните фактический путь в ответе fc-match.

Нужен ли sudo для установки TTF?

Для диагностики (fc-query, fc-list, fc-match) права администратора не нужны. Установка для одного пользователя и установка для всей системы — разные задачи; используйте путь и способ, рекомендованные документацией вашего дистрибутива. Не запускайте диагностические команды через sudo без конкретной причины.

Нужно ли запускать fc-cache после каждого экспорта?

Не автоматически. Fontconfig обычно управляет своей базой шрифтов и кэшем сам, но после изменения установленного набора документация конкретной системы может рекомендовать обновление. Сначала повторите fc-list и fc-match. Если они всё ещё не видят файл, следуйте инструкции дистрибутива, а не удаляйте кэш вручную.

Что делать, если fc-match показывает правильный путь, но приложение — старый шрифт?

Полностью перезапустите приложение, создайте новый документ и повторно выберите семейство. Проверьте начертание и параметры импорта: программа может хранить прежний выбор в файле или пользоваться собственной базой. Если остальные приложения видят новую версию, а одно — нет, исследуйте именно это приложение.

Можно ли по этой проверке доказать, что шрифт выглядит одинаково везде?

Нет. Она подтверждает, какой файл Fontconfig выбрал в данной системе, и помогает проверить изменённые буквы. Растеризация и настройки конкретного приложения могут менять экранное впечатление. Для печати, PDF или сайта проверяйте конечный файл отдельно на целевой стороне.

Команды работают в любой Linux-системе?

Они предназначены для окружений, где установлен Fontconfig; набор пакетов и способы установки отличаются между дистрибутивами. Если команды отсутствуют, выясните, какой механизм шрифтов используется в вашей среде, и воспользуйтесь документацией дистрибутива. Не устанавливайте системные компоненты на рабочем компьютере только ради одной проверки без необходимости.

Вывод

Чтобы подтвердить конкретный экспорт в Linux, мало увидеть шрифт в списке или узнать знакомое семейное имя. Прочитайте сам TTF через fc-query, найдите копии через fc-list, проверьте выбранный путь через fc-match и сравните характерные символы в перезапущенном приложении. Такой порядок быстро отделяет ошибку сборки от дубликата или подмены. Для собственного рукописного набора можно подготовить шаблон на Fontgenerator, собрать шрифт и применить этот чек-лист к результату.