Почему при печати из 1С на Linux «сползает» шляпка у буквы «Й» и появляются квадраты вместо цифр

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обновлении платформы 1С:Предприятие до ветки 8.3.16 (в частности, релизов 8.3.16.1148 и выше) многие пользователи столкнулись с неприятным визуальным дефектом в печатных формах. Проблема проявляется специфическим образом: надстрочный символ (бреве) у буквы Й смещается влево, оказываясь над предыдущей буквой. Кроме того, в табличных документах могут появляться «квадраты» вместо цифр или знаков валют, хотя на экране монитора документ выглядит безупречно. Рассмотрим подробнее причины этого явления и разберем по шагам методы исправления ситуации.

Анализируем причину возникновения ошибки

Для начала выясним причину такой странной «дислексии» программы. Начиная с версии 8.3.16, разработчики 1С внесли существенные изменения в графическую подсистему платформы, особенно для версии под Linux. Произошел переход на обновленные алгоритмы работы с библиотеками отрисовки шрифтов, такими как FreeType и HarfBuzz.

В типовых шрифтах (например, Arial или Times New Roman) буква Й может быть представлена двумя способами: как единый готовый глиф или как комбинация базового символа И и комбинируемого диакритического знака «кратка». В проблемных релизах платформы механизм расчета кернинга (межсимвольного интервала) и позиционирования комбинируемых знаков в среде Linux начал работать некорректно. Платформа ошибочно вычисляет координаты для вывода «шляпки», из-за чего она «улетает» на соседний символ. Квадраты же вместо цифр свидетельствуют о том, что платформа не может корректно сопоставить кодировку символа в шрифте при передаче задания на печать в CUPS (систему печати Linux).

Решение 1: Откат версии платформы (Downgrade)

Проанализируем ситуацию: если ваша конфигурация (например, УТ 11.2 или ЗУП 3.1 старых редакций) не требует жестко платформу версии 8.3.16, самым быстрым и эффективным решением будет возврат на стабильную ветку 8.3.15.

Как показывает практика эксплуатации, ветка 8.3.15 (например, релиз 8.3.15.1830) лишена данных проблем с отрисовкой шрифтов в Linux. Посмотрим, как правильно выполнить переход:

  1. Удалим текущую версию платформы 8.3.16 с сервера и клиентских машин.
  2. Установим стабильный релиз из ветки 8.3.15.
  3. Убедимся, что в настройках запуска базы (в окне выбора баз) жестко прописан номер версии 8.3.15, чтобы исключить случайный запуск под более новой версией, если она осталась в системе.

Важно помнить, что конфигурации, требующие режим совместимости 8.3.16 и выше, на этой платформе не запустятся, однако для большинства систем на базе УТ 11.2 или БП 3.0 это не является препятствием.

Решение 2: Обновление до исправленных релизов

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

Рекомендуется рассмотреть переход на следующие ветки (в зависимости от ваших потребностей):

Решение 3: Работа со шрифтами в операционной системе

Иногда проблема усугубляется отсутствием в Linux стандартных шрифтов Microsoft, которые 1С использует по умолчанию в макетах. Если платформа не находит Arial, она подменяет его похожим шрифтом из системы (например, Liberation Sans), метрики которого отличаются, что усиливает эффект «сползания» шляпок.

Выполним следующие шаги для нормализации шрифтового окружения:

  1. Установим пакет основных шрифтов Microsoft (msttcorefonts). В Ubuntu/Debian это делается командой: sudo apt-get install ttf-mscorefonts-installer
  2. Обновим кэш шрифтов в системе, чтобы 1С увидела новые начертания: fc-cache -fv
  3. В некоторых случаях помогает принудительная установка пути к шрифтам в файле conf.cfg платформы 1С, чтобы программа гарантированно использовала системные библиотеки.

Решение 4: Печать через промежуточный PDF

Если оперативно изменить версию платформы невозможно, рассмотрим обходной путь (Workaround). Внутренний движок формирования PDF в 1С часто работает точнее, чем прямой вывод на печать через драйвер принтера в Linux.

Проанализируем алгоритм действий:

  1. Вместо нажатия кнопки «Печать» выберите команду «Сохранить как...» и выберите формат PDF.
  2. Откройте полученный файл стандартным просмотрщиком PDF вашей ОС (например, Evince или Okular).
  3. Отправьте документ на печать из просмотрщика.

Этот метод часто позволяет получить идеально ровные буквы даже на проблемных версиях платформы, так как при генерации PDF 1С встраивает шрифты иначе, чем при формировании задания для CUPS.

Дополнительные рекомендации по настройке макетов

Если проблема сохраняется в конкретных формах (например, ТОРГ-12), попробуйте отредактировать макет печатной формы. Замечено, что использование моноширинных шрифтов (например, Courier New) практически полностью нивелирует проблему смещения «шляпок», так как у таких шрифтов каждый символ занимает строго определенное пространство, и алгоритму сложнее ошибиться в расчетах.

Подведем итог: мы выяснили, что корень проблемы лежит в дефекте рендеринга шрифтов платформой 1С 8.3.16 под управлением Linux. Для исправления ситуации необходимо либо откатиться на проверенную версию 8.3.15, либо обновиться до последних релизов современных веток платформы, где данные ошибки были исправлены разработчиками.

← На главную