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