Шрифты в Docker-образе consumer
Коротко
В оригинальном Dockerfile upstream нет явных строк вроде fonts-crosextra-carlito / fonts-noto-core, но шрифты в контейнере всё равно были. Они ставились неявно через Recommends пакета libreoffice.
Как было в upstream
FROM golang:1.24-bookworm
RUN apt-get update -qq && \
apt-get -y -q install \
libreoffice \
fonts-opensymbol \
# ... явный список шрифтов ...
ffmpeg \
imagemagick \
&& apt-get -y -q remove libreoffice-gnome && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*Важно:
- База — полный
golang:1.24-bookworm(не slim). - Установка без
--no-install-recommends.
В Debian у пакета libreoffice в Recommends входят, среди прочего:
fonts-crosextra-carlito— метрический аналог Calibrifonts-crosextra-caladea— аналог Cambriafonts-noto-core/fonts-noto-ui-corefonts-liberationи другие
apt ставит recommends по умолчанию. Поэтому Carlito/Noto есть в образе, хотя в Dockerfile их нет — счета из Битрикс24 (часто Calibri) рендерятся с правильными метриками.
Что ломает вёрстку
Если в Dockerfile появляется --no-install-recommends (и/или база debian:bookworm-slim без полного набора recommends), LibreOffice подменяет Calibri на DejaVu → в PDF «плывут» таблицы и цифры.
| Нормальный рендер | Сломанный | |
|---|---|---|
| Шрифты в PDF | Carlito, NotoSans | DejaVuSans |
| Внешний вид | Ровные колонки | Переносы в ячейках сумм |
Как должно быть
В dockerize/consumer/Dockerfile:
- не использовать
--no-install-recommendsпри установке LibreOffice или - явно ставить
fonts-crosextra-carlito,fonts-crosextra-caladea,fonts-noto-core,fonts-noto-ui-core
Корни Let's Encrypt Generation Y (isrg-root-ye / isrg-root-yr) к шрифтам не относятся — они нужны для TLS при скачивании файлов с порталов. См. также Эксплуатация.
Проверка после пересборки
docker compose exec consumer fc-list | grep -iE 'carlito|noto|caladea'В PDF счёта через pdffonts должны быть Carlito/Noto, а не только DejaVuSans.