Нативные облачные рамки аннотаций

HPDFRenderHeadlessPagePNG синтезирует временную облачную рамку для аннотаций Square, Circle, Polygon и FreeText без normal appearance

Переданный normal appearance сохраняет приоритет, и никакие сгенерированные AP, шрифты или ресурсы graphics state не добавляются в исходный PDF

Непрерывные контуры

Словарь BE выбирает S=C и интенсивность I от 0 до 2 со стандартным значением по умолчанию 0; ширина BS и пунктирные шаблоны остаются действенными, как того требует ISO 32000-1, Таблица 167

Облака строятся из одного замкнутого кубического контура из «чешуек» с учётом направления обхода при вычислении внешних нормалей, с ограниченным спрямлением кривых путей и детерминированным шагом по периметру

Прямоугольники и эллипсы сохраняют геометрию RD; многоугольники используют Vertices или операции Path с линиями и кубическими кривыми, включая фигуры по часовой стрелке, против часовой стрелки и невыпуклые

Цвета обводки и заливки, прозрачность CA/ca, поворот страницы, UserUnit и Form BBox аннотации остаются действенными; нулевая интенсивность, нулевая ширина и отсутствующий цвет обводки оставляют обычный путь appearance

FreeText использует существующий построитель раскладки Unicode с отступом границ содержимого от внутренней границы облачной обводки, не меняя исходный RD

Ограничения и приёмка

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

Обычные не-GUI точки входа и фиксированные формулы геометрической приёмки описаны в Tests/Linux/HeadlessCairoCloudAnnotations.en-us.md

Независимые аналитические компаньоны покрывают ширину, интенсивность, пунктир, прозрачность, поворот и UserUnit на нескольких масштабах; фактические снимки MuPDF и Poppler остаются отдельными, потому что стандарт не предписывает точный стиль «чешуек»

Обычные фикстуры без appearance — это PDF 1.7, а фикстуры Path в PDF 2.0 явно проверяют восстановление при отсутствии appearance

Встроенные CFF-шрифты по умолчанию, дополнительные операторы DA у FreeText и точное дробное покрытие текста треугольниками остаются отдельной работой

Сопутствующее поведение rendering см. в annotation fallback и подписях линий и рельефных рамках

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