Шрифт не виден в 1С или печать «поехала»: куда его ставить и как проверить

· 10 мин

Содержание

В 1С нет своего хранилища шрифтов: платформа 8.3 берёт их из операционной системы. Чтобы добавить шрифт в 1С, его устанавливают в Windows или Linux на тот компьютер, где документ рисуется, а затем перезапускают клиент 1С. Если печатную форму или PDF формирует сервер 1С, шрифт нужен ещё и на сервере, после чего его службу перезапускают.

Выбор места установки зависит от сценария. Обычная печать из толстого или тонкого клиента — шрифт ставят на рабочее место пользователя. Терминальный сервер — на сам терминальный сервер, для всех пользователей. Фоновые задания, рассылка счетов в PDF, веб-клиент с выгрузкой в PDF — на каждый рабочий сервер кластера 1С.

Какие файлы шрифтов подходят и что проверить до установки

Шрифт приходит в одном из форматов. От формата зависит, как он поведёт себя в печатной форме.

ФорматЧто этоКак ведёт себя в 1С
.ttfTrueType, одно начертание в файлеСамый предсказуемый вариант для печатных форм и PDF
.ttcКоллекция TrueType, несколько начертанийУстанавливается целиком, работает как обычный TrueType
.otfOpenTypeНа экране обычно в порядке, но PDF и печать проверьте на тестовом документе
.otcКоллекция OpenTypeНужна современная ОС; перед массовым внедрением проверьте на одном компьютере
.fon, .pfbРастровые и Type 1Для печатных форм 1С не годятся

Перед установкой сделайте три проверки:

  1. 🔤 Есть ли кириллица. Откройте файл двойным щелчком: в окне просмотра Windows видно, какие символы есть в шрифте. Многие бесплатные шрифты содержат только латиницу, и 1С подставит вместо них другой шрифт.
  2. 🔣 Есть ли нужные знаки. Для счетов важны ₽, №, «», длинное тире. Их удобно проверить в стандартной программе «Таблица символов» (charmap).
  3. 🏷️ Как шрифт называется внутри. Имя файла и имя шрифта — разные вещи. Файл PTS55F.ttf в системе называется «PT Sans». Макет 1С ссылается именно на внутреннее имя, поэтому сверяйте его.

Отдельный вопрос — лицензия. Шрифты Windows (Arial, Times New Roman, Calibri) лицензированы вместе с системой. Копировать их на Linux-сервер без разрешения правообладателя нельзя, для Linux есть легальные пакеты, о них ниже.

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

Установка шрифта в Windows, чтобы 1С его увидела

В Windows 10 и 11 есть два способа установки, и для 1С разница между ними принципиальная.

Порядок действий:

  1. Закройте 1С на этом компьютере.
  2. Щёлкните правой кнопкой по файлу .ttf или .otf.
  3. Выберите «Установить для всех пользователей». Для этого нужны права администратора.
  4. Дождитесь, пока файл появится в папке C:\Windows\Fonts.
  5. Запустите 1С и откройте печатную форму или настройку шрифта, чтобы убедиться, что новое имя есть в списке.

Пункт «Установить» без уточнения ставит шрифт только текущему пользователю. Файл ложится в профиль, в %LOCALAPPDATA%\Microsoft\Windows\Fonts, и его не видят другие учётные записи.

Шрифт, установленный только для себя, не увидят служба сервера 1С и другие пользователи терминального сервера. Это самая частая причина ситуации «у меня печатается правильно, а у бухгалтера — нет».

Третий способ — через параметры системы: Параметры → Персонализация → Шрифты. Туда можно перетащить файл мышью. Он тоже по умолчанию ставит шрифт для текущего пользователя, поэтому для 1С удобнее контекстное меню.

Проверить, где шрифт установлен, можно в PowerShell:

# Шрифты для всех пользователей
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" | Format-List

# Шрифты только текущего пользователя
Get-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" | Format-List

Если нужный шрифт есть только во втором списке, удалите его и поставьте заново с выбором «для всех пользователей».

Терминальный сервер и RDP

На терминальном сервере шрифт ставят на сам сервер, а не на компьютер, с которого подключаются. Перед установкой переведите сервер в режим установки командой change user /install, после установки верните обратно: change user /execute. Пользователям, которые уже работают, понадобится закрыть 1С и открыть её снова.

Шрифты для 1С на Linux и в тонком клиенте

Клиент и сервер 1С на Linux ищут шрифты через библиотеку fontconfig. Если подходящего шрифта нет, текст рисуется заменой, а ширина символов меняется. В итоге строки обрезаются, а печатная форма вылезает на вторую страницу.

Базовый набор: шрифты Microsoft

Типовые макеты 1С свёрстаны в основном шрифтом Arial, реже Times New Roman и Courier New. На Linux их ставят из пакета, который скачивает оригинальные файлы с принятием лицензии Microsoft.

# Debian, Ubuntu, Astra Linux (нужен компонент contrib / multiverse)
sudo apt install ttf-mscorefonts-installer fontconfig

# Проверка, что Arial появился
fc-list | grep -i arial
fc-match "Arial"

fc-match показывает, какой файл реально подставится по запросу. Если в ответ на «Arial» приходит DejaVuSans.ttf или LiberationSans, значит, Arial в системе нет и работает замена.

В дистрибутивах семейства Red Hat (РЕД ОС, AlmaLinux) пакета с таким именем в стандартных репозиториях нет. Шрифты Microsoft там ставят из пакета, собранного по инструкции дистрибутива, либо вручную копируют файлы, если на это есть лицензия.

Свой шрифт вручную

Для фирменного или нестандартного шрифта:

  1. Скопируйте файлы в общую папку: /usr/local/share/fonts/ (или подпапку в ней).
  2. Выставьте права на чтение для всех: sudo chmod 644 /usr/local/share/fonts/*.ttf.
  3. Обновите кэш: sudo fc-cache -f -v.
  4. Проверьте: fc-list | grep -i "имя шрифта".
  5. Закройте и снова запустите клиент 1С.

Папка ~/.local/share/fonts тоже работает, но только для одного пользователя. Сервер 1С работает под своей учётной записью (обычно usr1cv8) и шрифтов из чужого домашнего каталога не увидит.

Тонкий клиент и веб-клиент

Тонкий клиент рисует формы и печать на компьютере пользователя, поэтому шрифт нужен там, где запущен 1cv8c. Под Windows — как в разделе выше, под Linux — через fontconfig.

С веб-клиентом сложнее. Экранные формы отображает браузер со своими шрифтами. А вот PDF и картинки, которые 1С формирует на сервере, зависят от шрифтов сервера.

Шрифты на сервере 1С: печатные формы, PDF и рассылки

Когда печатную форму формирует сервер, клиентские шрифты не участвуют. Типичные случаи:

  • 📧 рассылка счетов и актов в PDF по расписанию;
  • 📎 вложения в электронные письма, которые создаются регламентным заданием;
  • 🌐 сохранение табличного документа в PDF из веб-клиента;
  • 🔁 печать в фоне при обмене с ЭДО или сайтом.

Шрифт ставят на каждый рабочий сервер кластера, где могут работать рабочие процессы rphost. Если серверов два, а шрифт есть на одном, PDF будет то правильным, то «кривым» — в зависимости от того, какой процесс обработал вызов.

Порядок для Windows-сервера:

  1. Установите шрифт «для всех пользователей».
  2. Проверьте, что он появился в C:\Windows\Fonts и в ветке реестра HKLM, как показано выше.
  3. Перезапустите службу «Агент сервера 1С:Предприятия 8.3» в оснастке services.msc.

Порядок для Linux-сервера:

  1. Установите шрифт в /usr/share/fonts или /usr/local/share/fonts, выполните fc-cache -f -v.
  2. Проверьте под учётной записью сервера: sudo -u usr1cv8 fc-match "Arial".
  3. Найдите имя службы: systemctl list-units --type=service | grep -i 1c — оно зависит от версии платформы.
  4. Перезапустите её: sudo systemctl restart <имя службы>.

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

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

Квадраты, «кракозябры» и подмена шрифта: как найти причину

Проблемы со шрифтами выглядят по-разному. Узнайте свой симптом и начните с соответствующей проверки.

Диагностика: выберите симптом

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

Подмена шрифта в макете без правки типовой конфигурации

Если шрифт нельзя поставить на все компьютеры, проще поменять шрифт в макете. Для типовой конфигурации на поддержке правьте не саму конфигурацию, а внешнюю печатную форму или расширение. Тогда обновления не сотрут изменения и не потребуют снимать конфигурацию с поддержки.

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

Массовая установка шрифтов: GPO, PowerShell и Linux

Ставить шрифт руками на 40 рабочих мест долго, и легко пропустить один компьютер. Для домена Windows удобнее групповая политика.

Через групповые политики (GPO)

В шрифте два элемента: сам файл в C:\Windows\Fonts и запись в реестре. Без записи в реестре Windows файл не подхватит. В объекте групповой политики для компьютеров используйте настройки (Preferences):

  1. Файлы. Конфигурация компьютера → Настройка → Конфигурация Windows → Файлы. Источник — файл шрифта в сетевой папке, доступной компьютерам домена на чтение. Назначение — %WindowsDir%\Fonts\PTSans-Regular.ttf.
  2. Реестр. Там же, раздел Реестр. Куст HKEY_LOCAL_MACHINE, ключ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. Имя параметра — внутреннее имя шрифта с пометкой формата, например PT Sans (TrueType), значение — имя файла PTSans-Regular.ttf.
  3. Привяжите политику к подразделению с компьютерами бухгалтерии и перезагрузите один компьютер для проверки.

Скрипт PowerShell

Для серверов вне домена и для разовых задач хватит скрипта, запущенного от администратора:

$src = "\\fileserver\soft\fonts"
Get-ChildItem $src -Include *.ttf, *.otf -Recurse | ForEach-Object {
    $dest = Join-Path "$env:WINDIR\Fonts" $_.Name
    if (-not (Test-Path $dest)) {
        Copy-Item $_.FullName $dest
        $shell = New-Object -ComObject Shell.Application
        $name  = $shell.Namespace($_.DirectoryName).ParseName($_.Name).ExtendedProperty("System.Title")
        $kind  = if ($_.Extension -eq ".otf") { "OpenType" } else { "TrueType" }
        New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" `
            -Name "$name ($kind)" -Value $_.Name -PropertyType String -Force | Out-Null
    }
}

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

Linux: один шаг в общем сценарии

На Linux достаточно положить файлы в /usr/local/share/fonts и выполнить fc-cache -f. Если машины разворачивают Ansible или Salt, добавьте эти два шага в роль, которая ставит клиент 1С. Пакет ttf-mscorefonts-installer тоже ставьте в той же роли: тогда новое рабочее место сразу печатает так же, как остальные.

Перед тем как внедрять новый шрифт в печатные формы
Выполнено: 0 / 6

Частые вопросы

Можно ли загрузить шрифт прямо в базу 1С, чтобы он работал у всех?
Нет. Платформа не хранит файлы шрифтов в базе и не устанавливает их на компьютеры. В макете хранится только имя шрифта, а сам шрифт должен быть в операционной системе.
Нужно ли перезапускать компьютер после установки шрифта?
Обычно нет. Достаточно закрыть и снова открыть клиент 1С. На сервере перезапускают службу 1С, а не весь сервер.
Почему в Linux-клиенте шрифт выглядит тоньше, чем в Windows?
Системы по-разному сглаживают текст на экране. На печать и PDF это не влияет, если установлен тот же шрифт. Сравнивайте именно бумажный вариант или PDF.
Подойдёт ли бесплатный шрифт вместо Arial?
Подойдёт, если он совпадает с Arial по ширине символов. Таким свойством обладает Liberation Sans, поэтому формы не «поедут». Шрифты с другой метрикой сдвинут переносы строк.
Влияет ли шрифт на размер PDF, который отправляется контрагенту?
Да. При сохранении в PDF используемые символы шрифта встраиваются в файл. Нестандартный шрифт с большим набором символов заметно увеличивает размер вложения.