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-актив, а усечённые, перекрывающиеся, выходящие за диапазон или с несовпадающей сигнатурой записи отвергает до вывода страницы