Tailles de glyphes couleur bitmap

GetRegisteredColorGlyphInfo et DrawRegisteredColorGlyph prennent en charge les glyphes couleur bitmap stockés dans les tables CBDT/CBLC ou sbix

Sélection de la taille

TargetPixelsPerEm sélectionne la taille dont la distance ppem absolue est la plus petite, tandis que zéro sélectionne la plus grande taille disponible pour conserver un maximum de détails

La sélection CBDT/CBLC prend en charge les formats de sous-table d’index 1, 2, 3 et 5 ainsi que les formats d’image PNG 17, 18 et 19

La sélection sbix valide chaque fenêtre de taille par rapport à maxp.numGlyphs, accepte les enregistrements graphiques PNG, JPEG et TIFF, et résout les enregistrements dupe à l’aide d’une chaîne limitée à 16 niveaux avec rejet des cycles

Placement et décodage

THPDFOpenTypeColorGlyphInfo.PixelsPerEmX et PixelsPerEmY indiquent la taille sélectionnée, tandis que OriginOffsetX et OriginOffsetY indiquent le décalage inférieur gauche du bitmap par rapport à la ligne de base du glyphe en pixels de taille

Le décodage PNG natif conserve son canal alpha et produit un masque doux d’image, tandis que le décodage JPEG natif produit des données RGB opaques

Le placement met les pixels décodés à l’échelle de FontSize / PixelsPerEmY et applique l’origine de ligne de base enregistrée afin que les glyphes vectoriels et bitmap mixtes restent alignés

Les enregistrements TIFF et toute charge utile non prise en charge ou indécodable restent traités par OnColorGlyphRasterize avec leur type MIME et leurs octets d’origine

Limites de ressources

L’analyseur accepte au plus 4 096 tailles sbix, 16 indirections dupliquées et 64 Mio par ressource bitmap extraite, et rejette les enregistrements tronqués, chevauchants, hors limites ou dont la signature ne correspond pas avant la sortie de page