Rich Text Marks Across Styles
Getypeerde rich text behoudt de originele logische V en canonieke RV terwijl een voorafgaande combining mark tegen de echte voorafgaande gerenderde glyph op dezelfde fysieke regel wordt gepositioneerd
De base en mark kunnen verschillende supplied regular-, bold-, italic- of bold-italic-fontprogramma's, verschillende puntgroottes en verschillende kleuren gebruiken
Positionering leest echte GPOS mark-to-base-, mark-to-ligature- en mark-to-mark-attachments, inclusief extension positioning lookups; het base-anker gebruikt diens eigen font en schaal, en het mark-anker gebruikt diens eigen font en schaal
Contextuele Arabische joining blijft actief over stijlgrenzen heen, en een gekoppelde mark gebruikt de resulterende joined base-glyph in plaats van een geïsoleerde nominale glyph
Voorafgaande marks ontvangen onafhankelijke child-transforms zodat het koppelen van een mark geen daaropvolgende gewone tekst verplaatst of de logische character-spacing-advance verandert
Rich child-forms behouden glyph-overhangs, inclusief negative-origin combining marks en italic-outlines; de owning appearance levert de widget-clip, rotatie en paragraafuitlijning
Gekoppelde inkt draagt bij aan het fitten van regel-omvangen zodat gestapelde marks zichtbaar kunnen blijven aan de bovenkant van een veld; een ondeelbare cluster hoger dan de widget behoudt diens bestaande begrensde clipping-gedrag
Wanneer matchende attachment-dekking ontbreekt, leveren echte geselecteerde TrueType glyph-header-bounds een plaatsingsfallback met onafhankelijke puntgrootte-schalen en de native Unicode combining class
Fallback-plaatsing onderscheidt boven, onder, gekoppelde, linker/rechter en dubbele marks; same-side-marks stapelen terwijl opposite-side-marks terugkeren naar de base-outline, en matchende GPOS-anchors hebben altijd prioriteit
Dubbele combining marks blijven attachment-candidates zelfs wanneer diens Unicode line-break class nonbreaking is; logische tekst, originele stijlen en daaropvolgende character-spacing-advance blijven intact
De fallback-rand voor een dubbele mark volgt het echt opgeloste bidi-niveau van diens tekstitem, inclusief een item in tegengestelde richting ingebed in de paragraaf
Fallback-bounds beschrijven de gedeclareerde outline-header van het echte font; automatische reconstructie van willekeurige fontfamilies valt buiten dit supplied-font-contract
Fonttabel-reads blijven begrensd op diens echte GPOS-tabel, observeren annulering en delen een traversal-budget over alle supplied stijlfonts; ongeldige tabel-offsets falen vóór het muteren van het documentveld
Ongehintte PDF-outlines gebruiken design-coördinaat-anchors, zonder apparaatspecifieke pixel-aanpassingen
Acceptatie
HotPDFHeadlessRichMarkTests.pas slaat echte Latijnse, Arabische en Hebreeuwse mark-appearances op en herlaadt ze, samen met gestapelde marks, een echte Arabische ligature, gemengde groottes en kleuren, wrapping, spacing, uitlijning en rotatie
Verify-HeadlessRichMarks.py leest de echte embedded fontprogramma's via fontTools, berekent onafhankelijk GPOS-anchors, verifieert bronwaarden en -stijlen en bevestigt dat elke mark zichtbare MuPDF-pixels bijdraagt door dezelfde echte appearance te renderen met die mark weggelaten
HotPDFHeadlessRichMarkFallbackTests.pas en Verify-HeadlessRichMarkFallback.py checken echte missing-GPOS-fonts, zichtbare opgeslagen appearances, raw combining classes, geselecteerde glyph-bounds en annulering; matchende anchors worden ook geverifieerd als behoud van prioriteit boven fallback-plaatsing
Geselecteerde TrueType glyph-bounds · Raw canonical combining classes
Appearance builder · Native rich-text fields · Grapheme fitting across styles