Bitmap strikes цветных глифов

GetRegisteredColorGlyphInfo и DrawRegisteredColorGlyph поддерживают bitmap цветные глифы, хранящиеся в таблицах CBDT/CBLC или sbix

Выбор strike

TargetPixelsPerEm выбирает strike с наименьшим абсолютным расстоянием ppem, а ноль берёт самый крупный доступный strike для максимума сохранённых деталей

Выбор CBDT/CBLC поддерживает форматы индексных подтаблиц 1, 2, 3 и 5 плюс PNG-форматы изображений 17, 18 и 19

Выбор sbix валидирует каждое strike-окно против maxp.numGlyphs, принимает графические записи PNG, JPEG и TIFF и разрешает записи dupe через ограниченную цепочку глубиной 16 с отвержением циклов

Размещение и декодирование

THPDFOpenTypeColorGlyphInfo.PixelsPerEmX и PixelsPerEmY сообщают размер выбранного strike, а OriginOffsetX и OriginOffsetY — смещение левого нижнего угла bitmap от базовой линии глифа в пикселях strike

Нативное декодирование PNG сохраняет alpha-канал и выдаёт image soft mask, а нативное декодирование JPEG выдаёт непрозрачные RGB-данные

Размещение масштабирует декодированные пиксели на FontSize / PixelsPerEmY и применяет сохранённое смещение базовой линии, чтобы смешанные векторные и bitmap глифы выравнивались согласованно

Записи TIFF и любой неподдерживаемый или недекодируемый payload идут дальше через OnColorGlyphRasterize со своим исходным MIME-типом и байтами

Ограничения ресурсов

Парсер принимает максимум 4,096 strikes sbix, 16 уровней переадресации дубликатов и 64 MiB на извлекаемый bitmap-актив, а усечённые, перекрывающиеся, выходящие за диапазон или с несовпадающей сигнатурой записи отвергает до вывода страницы