Apparences OpenType CFF2 d'instance par défaut
Les builders natifs d'apparences plain, rich, shaped et family acceptent une police OpenType OTTO complète contenant des outlines CFF2 à ses coordonnées de variation par défaut
La police d'origine reste la source du mapping de caractères Unicode, des indices de glyphes, des advances horizontales et du shaping ; HarfBuzz résout ses outlines d'instance par défaut, y compris celles sélectionnées via plusieurs dictionnaires de police
Le builder convertit chaque glyphe en un programme CFF 1 statique CID-keyed et l'embarque en FontFile3 avec le Subtype CIDFontType0C, une collection Adobe Identity et des CIDs égaux aux indices de glyphes d'origine
L'encoding généré, les widths et le mapping ToUnicode conservent l'identité de glyphe d'origine et les séquences Unicode logiques, caractères supplémentaires, ligatures et marques combinantes comprises
On obtient un programme de police PDF 1.7 utilisant les structures CFF 1 décrites par l'ISO 32000-1:2008 9.7 et 9.9 ; CFF2 n'est pas embarqué directement dans un flux de police PDF
Une bibliothèque HarfBuzz d'architecture correspondante exposant hb_font_draw_glyph et des callbacks de dessin immuables est requise, y compris pour le texte non shapé ; ces API existent depuis HarfBuzz 7, et HOTPDF_HARFBUZZ_LIBRARY sélectionne une bibliothèque explicite
Le shaping complexe exploite aussi la dépendance FriBidi existante et le contrat existant d'advances entières à l'échelle 1000 ; les advances idéales non quantifiées à l'unitsPerEm d'origine restent une limitation de précision distincte
Les apparences éditables exigent une permission d'embarquement installable ou editable ; la génération d'apparences en lecture seule tolère la permission preview-and-print, tandis que les permissions restricted et bitmap-only restent refusées
Le no-subsetting conserve chaque glyphe d'origine dans le programme converti, glyphes inutilisés compris ; la conversion change le format du programme de police et ne garantit pas une conservation octet par octet du conteneur OpenType d'origine
Le programme converti utilise un nom primaire distinct et conserve des mentions de copyright et de licence lisibles ainsi que les octets de la table de noms d'origine
Les bornes de police source, de buffer de travail, de layout de police complète, de taille d'objet, d'agrégat de police riche, d'annulation et de rendu natif sont contrôlées avant publication ; les programmes de glyphe manquant mal formés restent des erreurs tandis que les glyphes vides valides sont conservés
La sortie Type 2 offre une précision de coordonnées 16.16 et des deltas d'opérandes bornés, au plus 65 535 glyphes et au plus 65 535 octets par programme de glyphe
Les tables CFF2 brutes autonomes, les flux de police CFF2 directs dans des ressources d'apparence par défaut PDF existantes, la sélection d'axes de variation non par défaut et un layout de texte complexe plus large sont hors de ce backend
Les entrées OpenType CFF 1 existantes continuent d'utiliser le backend d'apparences compact, tandis que les ressources d'annotation Type1, Type1C et CIDFontType0C embarquées utilisent le repli raw-font d'origine
TryGetCFF2FontTable est une requête de capacité de format bornée, plutôt qu'une validation complète des outlines ou des permissions