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