Нативный клипинг глифов
HPDFRenderHeadlessPagePNG растеризует заполненное покрытие глифов до применения активного PDF-клипа
Отдельная альфа-поверхность захватывает существующий клип внутри целочисленных границ глифов в пространстве устройства и умножает это покрытие на маску глифов до применения исходного источника и оператора наложения
Это избавляет от потерянных строк глифов на дробных границах клипа, сохраняя W/W*, дыры even-odd, криволинейные пути, трансформированный текст, альфу, soft mask и узорные цвета
Отрисовка сохраняет PDF-путь вызывающего кода и состояние графики, включая вложенные состояния текста и Form rendering
Учёт ресурсов
Оба альфа-буфера и оценка растра глифов входят в бюджет рабочей памяти до выделения, а сырой растр глифов входит в бюджет пикселей, даже если на странице видна лишь малая часть
Сырое число пикселей глифа безопасно умножается как Int64 и точно сравнивается с настроенным лимитом пикселей до выделения любой альфа-поверхности
Оценка байтов проверяет оставшуюся ёмкость Int64 перед умножением сырого числа пикселей глифа, в том числе когда вызывающий код поднимает настраиваемые лимиты пикселей и памяти
Отмена опрашивается вокруг генерации покрытия и финальной композиции, а сбои не меняют байты назначения, пока rendering не завершится успешно
Точность и проверка
Прямоугольные клипы сверяются с точными независимыми площадями пикселей при максимальной разнице каналов в два
Тесты многоугольников и кривых сравнивают композицию глифов с отдельным компаньоном сплошной заливки как клипа при том же лимите
Растеризация клипа в Cairo может отличаться от точной площади многоугольника, включая сохранённый случай с треугольником и максимальной разницей шесть на четырёх пикселях при масштабе два
Отдельные изображения MuPDF и Poppler фиксируют собственные растеризации шрифтов и клипов, а не задают нативную формулу