Polices OpenType variables et couleur

HotPDF peut inspecter les axes fvar et les instances nommées, valider les coordonnées sélectionnées et produire une instance statique avant l’installation normale de la police, son sous-ensemble et sa mise en cache persistante

Flux de travail des polices variables

PDF.InspectVariableFont(FontPath, Axes, Instances);
PDF.SetVariableFontAxis('wght', 650);
PDF.RegisterUnicodeTTF(FontPath);

Les polices OpenType CFF2 sont instanciées en interne aux coordonnées par défaut ou sélectionnées, y compris le mappage fvar, avar 1.0 et 2.0, l’état vsindex par dictionnaire de polices, l’évaluation blend, les sous-routines locales et globales récursives, ainsi que les deltas métriques HVAR, VVAR et MVAR

Les polices variables TrueType avec contours glyf sont instanciées en interne pour les coordonnées non par défaut. Le pipeline évalue les tuples gvar partagés et privés, applique l’interpolation IUP, actualise les contours simples et les décalages composites, résout les métriques de points fantômes horizontaux et verticaux, intègre MVAR, reconstruit les données compactes de glyphes et loca, puis retire les tables de variations du sfnt statique dont la somme de contrôle est correcte

OnVariableFontInstance est facultatif pour les polices variables CFF2 et TrueType. Il peut remplacer une instance interne non par défaut en renvoyant un sfnt statique valide sans table fvar

Les coordonnées résolues restent disponibles via GetRegisteredVariableFontAxes et font partie du contenu de police installé et mis en cache

Instanciation, sous-ensemble et sûreté de bas niveau

HPDFIsCFF2Font, HPDFInstantiateCFF2Font, HPDFSubsetCFF2Font, HPDFIsTrueTypeVariableFont et HPDFInstantiateTrueTypeVariableFont exposent des flux de travail sur tableaux d’octets pour les appelants qui gèrent déjà les conteneurs de polices

La sortie statique préserve les identifiants de glyphes et les programmes d’indication tout en reconstruisant les tables et sommes de contrôle sfnt. Le chemin CFF2 préserve également les données privées par dictionnaire de polices et les matrices de polices

Les décalages mal formés, les structures de variation non valides, les profondeurs excessives de sous-routines, les limites d’opérations et les limites CharString étendues échouent de manière sûre au lieu de renvoyer une police partiellement instanciée

Flux de travail des glyphes couleur

GetRegisteredColorGlyphInfo détecte les couches COLR et CPAL, les documents de glyphes SVG, les tailles CBDT/CBLC et les tailles sbix d’une police enregistrée

DrawRegisteredColorGlyph dessine nativement les couches COLR v0, les graphes de peinture COLR v1 limités, les documents SVG sûrs restreints, les images PNG CBDT et les images PNG ou JPEG sbix

COLR v1 prend en charge les clips de glyphes en couches, les remplissages linéaires pleins et à plusieurs arrêts, les remplissages radiaux et coniques, les transformations affines, les glyphes couleur réutilisables, l’ordre source et destination ainsi que les composites de fusion PDF

Le profil SVG natif prend en charge les chemins, rectangles, cercles, ellipses, lignes, polygones, polylignes, remplissages et contours pleins hérités, transformations affines et documents SVG compressés par gzip

THPDFColorGlyphRasterizeEvent reste la solution de repli pour les fonctions SVG non prises en charge, les modes Porter-Duff non pris en charge, l’opacité, les dégradés et une sortie raster spécifique à l’application

THPDFOpenTypeColorGlyphInfo.COLRv1Paints expose le DAG plat validé via les enregistrements THPDFCOLRv1Paint, THPDFCOLRv1ColorStop et THPDFCOLRv1Transform afin de l’inspecter sans analyser à nouveau les octets de la police

Les appelants choisissent la palette et la taille de pixel cible afin que la sélection de taille et la sortie raster restent déterministes