Skip to content

feat(certificates): шрифты Mont, PT Serif и Lobster для элементов шаблона - #825

Merged
TThanos3000 merged 1 commit into
devfrom
feat/dev-certificate-fonts-20261025
Oct 25, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
feat/dev-certificate-fonts-20261025

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Что изменено

Добавлен выбор шрифта для каждого текстового элемента сертификата: Mont, PT Serif или Lobster. PDF рассчитывает переносы по метрикам выбранного шрифта и встраивает его в документ; например, имя можно оформить Lobster, а директора — PT Serif.

  • layout.<element>.font_family принимает только фиксированный список ключей. Произвольные URL и CSS отклоняются.
  • Старые шаблоны и снимки используют Mont. Сохранение старым клиентом без нового поля сохраняет уже выбранный шрифт каждого элемента.
  • TTF включены в репозиторий вместе с лицензиями OFL и зафиксированными источниками. Сетевые загрузки при генерации PDF не нужны. Lobster использует настоящий вес 400 без искусственного полужирного начертания.

Проверка

  • 35 тестов сертификатов: 33 прошли, 2 теста блокировок PostgreSQL пропущены на локальной SQLite. Проверены контракт, обратная совместимость, отклонение неизвестных шрифтов, длинное кириллическое имя и реальные встроенные ресурсы нативного WeasyPrint PDF.
  • Шесть PDF с длинным именем: три шрифта × две ориентации A4. Проверены одна страница, размеры A4, встроенный шрифт, сохранение кириллицы при извлечении и визуальная отрисовка Poppler.
  • В локальном браузере с настоящим API проверены сохранение/перезагрузка и PDF с разными шрифтами имени и директора. Использована отдельная тестовая программа; реальные dev-данные и рассылки не затрагивались.
  • Black, flake8 и git diff --check для измененных файлов.

Риски и ограничения

Развернуть API перед парным frontend PR с веткой feat/dev-certificate-fonts-20261025. Миграции и новые переменные окружения не нужны. Ранее выданные PDF сохраняются без изменений. Загрузка произвольных файлов шрифтов не входит в эту правку.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants