Bitmap-Strikes farbiger Glyphen
GetRegisteredColorGlyphInfo und DrawRegisteredColorGlyph unterstützen farbige Bitmap-Glyphen, die in CBDT/CBLC- oder sbix-Tabellen gespeichert sind
Strike-Auswahl
TargetPixelsPerEm wählt den Strike mit der geringsten absoluten ppem-Abweichung, während null für die größtmögliche Detailerhaltung den größten verfügbaren Strike auswählt
Die CBDT/CBLC-Auswahl unterstützt Index-Untertabellen der Formate 1, 2, 3 und 5 sowie PNG-Bildformate 17, 18 und 19
Die sbix-Auswahl validiert jedes Strike-Fenster gegen maxp.numGlyphs, akzeptiert PNG-, JPEG- und TIFF-Grafikdatensätze und löst dupe-Datensätze über eine begrenzte Kette von 16 Ebenen mit Zyklusverwerfung auf
Platzierung und Dekodierung
THPDFOpenTypeColorGlyphInfo.PixelsPerEmX und PixelsPerEmY melden die Größe des gewählten Strikes, während OriginOffsetX und OriginOffsetY den Bitmap-Versatz von der Glyphenbasislinie links unten in Strike-Pixeln angeben
Die native PNG-Dekodierung bewahrt den Alphakanal und erzeugt eine Bildweichmaske, während die native JPEG-Dekodierung deckende RGB-Daten ausgibt
Die Platzierung skaliert dekodierte Pixel mit FontSize / PixelsPerEmY und wendet den gespeicherten Basislinienursprung an, sodass gemischte Vektor- und Bitmap-Glyphen einheitlich ausgerichtet werden
TIFF-Datensätze und jede nicht unterstützte oder nicht dekodierbare Nutzlast werden mit ihrem ursprünglichen MIME-Typ und ihren Bytes an OnColorGlyphRasterize weitergegeben
Ressourcengrenzen
Der Parser akzeptiert höchstens 4.096 sbix-Strikes, 16 doppelte Umleitungen und 64 MiB je extrahiertem Bitmap-Asset und verwirft abgeschnittene, überlappende, außerhalb des Bereichs liegende oder signaturwidrige Datensätze vor der Seitenausgabe