Paint-графы COLR v1

GetRegisteredColorGlyphInfo валидирует выбранный базовый глиф и возвращает плоский направленный ациклический граф в THPDFOpenTypeColorGlyphInfo.COLRv1Paints

COLRv1RootPaintIndex указывает корень, а UnitsPerEm даёт масштаб, который использует DrawRegisteredColorGlyph

Записи графа

THPDFCOLRv1PaintKind различает слои, сплошные заливки, линейные, радиальные и sweep-градиенты, отсечение глифов, повторно используемые цветные глифы, transform и композиты

THPDFCOLRv1Paint хранит индексы потомков, ID глифов, геометрию градиента, данные transform, режим композита и разрешённые цвета

THPDFCOLRv1ColorStop хранит упорядоченное смещение stop, разрешённый цвет CPAL, alpha и индекс записи палитры

THPDFCOLRv1Transform хранит шесть значений аффинного paint-преобразования

THPDFCOLRv1PaintArray, THPDFCOLRv1PaintIndexArray и THPDFCOLRv1ColorStopArray открывают граф и его потомков и stop переменной длины для Delphi и C++Builder

Безопасность и fallback

Смещения paint проверяются относительно правильных баз таблицы до построения графа

Графы ограничены 4096 узлами paint и 64 уровнями, а циклы приводят к отказу до эмиссии каких-либо page-операторов

Нативный вывод покрывает обычное упорядочение source и destination плюс семейство blend-mode PDF, а остальные операции Porter-Duff вызывают OnColorGlyphRasterize, если он назначен