Нативные декорации аннотаций

HPDFRenderHeadlessPagePNG генерирует рельефные рамки и подписи линий для отсутствующих appearance через свой обычный ограниченный рендерер аннотационных Forms

Явно заданный normal appearance имеет приоритет над сгенерированными декорациями

Прямоугольные рельефные рамки

Рамки Square, Link, FreeText и Stamp поддерживают стили BS B и I с противоположными затенёнными полосами; для вдавленного вида направление света меняется на обратное

Для каждого компонента цвета рамки c светлая полоса использует 1 − (1 − c) × 0.35, а тёмная — c × 0.5

Ширина полосы ограничивается половиной меньшего измерения рамки; разности прямоугольника, нулевая ширина, пустые цвета и отдельные прозрачности CA/ca остаются в силе

Неизвестные именованные стили BS используют стандартное сплошное значение по умолчанию; стиль неверного типа остаётся некорректной записью словаря

Раскладка подписи линии

Cap включает подпись из Contents или XHTML RC со стилизацией DS; CP выбирает размещение Inline или Top, а CO задаёт смещения вдоль направления исходной конечной точки и его левой нормали

Inline-подписи оставляют измеренный зазор в самой линии; Top-подписи и подписи шире линии размещаются над линией

Обратное направление конечных точек сохраняет прямой текст, при этом окончания стрелок и выносные линии сохраняют свою независимую геометрию

Плоский вариант по умолчанию — детерминированное имя ресурса Helvetica на 12 пунктов с цветом аннотации, разрешаемое через существующие ресурсы шрифтов документа и страницы

Unicode, стилизация rich text и явные разрывы абзацев используют существующий построитель read-only текстовых appearance; пустой текст оставляет обычную линию нетронутой

Отсечение, время жизни и лимиты

Размещение подписи использует измеренные размеры временной Form и сохраняет её клипы BBox и прямоугольника аннотации

Внутренний клип padding построителя полей убирается только в этой сгенерированной раскладке подписи; обычные PDF-операторы W и W* не меняются

Сгенерированные текстовые ресурсы разделяют неизменяемые байты TrueType-программ в пределах одной аннотации, с независимыми позициями потоков и очисткой после освобождения всех временных представлений ресурсов

Декодированные байты, рабочая память, токены, операции, размер вывода и отмена остаются ограниченными, включая длинные многоязычные подписи и восстановление после неудачного рендера

Приёмка и оставшаяся работа

Не-GUI раннеры в Tests/Linux/HeadlessAnnotationDecorations.en-us.md сравнивают спутники обычной геометрии содержимого страницы в двух масштабах в режимах просмотра и печати, сохраняя раздельные наблюдения MuPDF и Poppler

Фикстуры покрывают прозрачность, transparency, опциональную видимость, зашифрованные документы, короткий и длинный Unicode, границы подписи, сохранение исходного графа и восстановление после отмены

Облачные контуры, shaping шрифтов CFF или Type1 по умолчанию, дополнительные DA-операторы FreeText и независимо отслеживаемая общая проблема дробного клипа глифов остаются отдельной работой

См. аннотационный fallback для более широкого набора поддерживаемой геометрии и форматов