Нативный клипинг глифов

HPDFRenderHeadlessPagePNG растеризует заполненное покрытие глифов до применения активного PDF-клипа

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

Это избавляет от потерянных строк глифов на дробных границах клипа, сохраняя W/W*, дыры even-odd, криволинейные пути, трансформированный текст, альфу, soft mask и узорные цвета

Отрисовка сохраняет PDF-путь вызывающего кода и состояние графики, включая вложенные состояния текста и Form rendering

Учёт ресурсов

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

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

Оценка байтов проверяет оставшуюся ёмкость Int64 перед умножением сырого числа пикселей глифа, в том числе когда вызывающий код поднимает настраиваемые лимиты пикселей и памяти

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

Точность и проверка

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

Тесты многоугольников и кривых сравнивают композицию глифов с отдельным компаньоном сплошной заливки как клипа при том же лимите

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

Отдельные изображения MuPDF и Poppler фиксируют собственные растеризации шрифтов и клипов, а не задают нативную формулу

Приёмочные раннеры и область доказательств