Signes rich text à travers les styles
Le rich text typé conserve le V logique d'origine et le RV canonique tout en positionnant un caractère combinant de tête par rapport au glyphe rendu précédent réel sur la même ligne physique
La base et le signe peuvent utiliser des programmes de polices fournis différents regular, bold, italic ou bold-italic, des tailles en points différentes et des couleurs différentes
Le positionnement lit les attachements GPOS réels mark-to-base, mark-to-ligature et mark-to-mark, y compris les lookups de positionnement d'extension ; l'ancre de base utilise sa propre police et sa propre échelle, et l'ancre du signe utilise sa propre police et sa propre échelle
La jointure arabe contextuelle reste active à travers les frontières de styles, et un signe attaché utilise le glyphe de base joint résultant plutôt qu'un glyphe nominal isolé
Les signes de tête reçoivent des transforms enfants indépendants, de sorte qu'attacher un signe ne déplace pas le texte ordinaire suivant et ne change pas l'advance logique d'espacement de caractères
Les formulaires enfants rich conservent les débordements de glyphes, y compris les caractères combinants à origine négative et les contours italiques ; l'apparence propriétaire fournit le clip du widget, la rotation et l'alignement de paragraphe
L'encre attachée contribue à l'ajustement des étendues de ligne, de sorte que les signes empilés restent visibles en haut d'un champ ; un cluster indivisible plus haut que le widget conserve son comportement de clipping borné existant
Quand la couverture d'attachement correspondante est absente, les bounds réels du glyph-header TrueType sélectionné fournissent un fallback de placement avec des échelles de taille en points indépendantes et la classe combinante Unicode native
Le placement de fallback distingue les signes au-dessus, en dessous, attachés, gauche/droite et doubles ; les signes du même côté s'empilent tandis que les signes du côté opposé reviennent au contour de la base, et les ancres GPOS correspondantes ont toujours la priorité
Les caractères combinants doubles restent candidats à l'attachement même quand leur classe de saut de ligne Unicode est nonbreaking ; le texte logique, les styles d'origine et l'advance d'espacement de caractères suivant restent intacts
Le bord de fallback d'un signe double suit le niveau bidi réellement résolu de son item de texte, y compris un item de direction opposée embarqué dans le paragraphe
Les bounds de fallback décrivent le header de contour déclaré de la police réelle ; la reconstruction automatique de familles de polices arbitraires reste hors de ce contrat de polices fournies
Les lectures de tables de polices restent bornées à leur table GPOS réelle, observent l'annulation et partagent un budget de parcours entre toutes les polices de style fournies ; des offsets de table invalides échouent avant que le champ du document ne soit modifié
Les contours PDF non hintés utilisent des ancres en coordonnées de design, sans ajustements de pixels spécifiques au device
Acceptation
HotPDFHeadlessRichMarkTests.pas sauvegarde et recharge de vraies apparences de signes latins, arabes et hébraïques, des signes empilés, une véritable ligature arabe, des tailles et couleurs mixtes, du wrapping, de l'espacement, de l'alignement et de la rotation
Verify-HeadlessRichMarks.py lit les programmes de polices embarqués réels via fontTools, calcule indépendamment les ancres GPOS, vérifie les valeurs et styles sources et confirme que chaque signe contribue des pixels MuPDF visibles en rendant la même apparence réelle sans ce signe
HotPDFHeadlessRichMarkFallbackTests.pas et Verify-HeadlessRichMarkFallback.py vérifient les polices réellement sans GPOS, les apparences sauvegardées visibles, les classes combinantes brutes, les bounds de glyphes sélectionnés et l'annulation ; on vérifie aussi que les ancres correspondantes conservent la priorité sur le placement de fallback
Bounds de glyphes TrueType sélectionnés · Classes combinantes canoniques brutes
Builder d'apparence · Champs rich text natifs · Ajustement de graphèmes à travers les styles