Mark del rich text tra stili
Il rich text tipizzato conserva la V logica originale e la RV canonica mentre posiziona una combining mark iniziale rispetto al vero glyph renderizzato precedente sulla stessa riga fisica
Base e mark possono usare diversi programmi font forniti regular, bold, italic o bold-italic, dimensioni in punti diverse e colori diversi
Il posizionamento legge i veri attaccamenti GPOS mark-to-base, mark-to-ligature e mark-to-mark, incluse le lookup extension positioning; l'ancoraggio della base usa il suo font e la sua scala, e l'ancoraggio del mark usa il suo font e la sua scala
La giunzione contestuale araba resta attiva oltre i confini di stile, e un mark attaccato usa il glyph base unito risultante anziché un glyph nominale isolato
I mark iniziali ricevono trasformazioni figlio indipendenti, così attaccare un mark non sposta il testo ordinario successivo né cambia l'avanzamento logico della spaziatura caratteri
I form figlio rich conservano le sporgenze dei glyph, incluse combining mark con origine negativa e outline corsivi; l'appearance proprietaria fornisce clip, rotazione e allineamento paragrafo del widget
L'inchiostro attaccato contribuisce al fitting delle estensioni di riga, così i mark impilati possono restare visibili in cima a un campo; un cluster indivisibile più alto del widget conserva il consueto comportamento di clipping limitato
Quando manca una copertura di attaccamento corrispondente, i veri bounds glyph-header TrueType selezionati forniscono un fallback di posizionamento con scale di point size indipendenti e la combining class Unicode nativa
Il posizionamento di fallback distingue mark above, below, attached, left/right e doppi; i mark sullo stesso lato si impilano mentre i mark sul lato opposto tornano all'outline della base, e gli ancoraggi GPOS corrispondenti hanno sempre priorità
Le combining mark doppie restano candidate all'attaccamento anche quando la loro classe line-break Unicode è nonbreaking; testo logico, stili originali e successivo avanzamento di spaziatura caratteri restano intatti
Il bordo di fallback per un mark doppio segue il vero livello bidi risolto del suo text item, incluso un item di direzione opposta incorporato nel paragrafo
I bounds di fallback descrivono l'header outline dichiarato del vero font; la ricostruzione automatica di family arbitrarie resta fuori da questo contratto di font forniti
Le letture delle tabelle font restano limitate alla loro vera tabella GPOS, osservano la cancellazione e condividono un budget di traversata tra tutti i font di stile forniti; offset di tabella non validi falliscono prima che il campo documento venga mutato
Gli outline PDF unhinted usano ancoraggi in coordinate di design, senza aggiustamenti pixel specifici per device
Validazione
HotPDFHeadlessRichMarkTests.pas salva e ricarica vere appearance di mark latini, arabi ed ebraici, mark impilati, una legatura araba autentica, dimensioni e colori misti, wrapping, spaziatura, allineamento e rotazione
Verify-HeadlessRichMarks.py legge i veri programmi font incorporati tramite fontTools, calcola in modo indipendente gli ancoraggi GPOS, verifica valori e stili sorgente e conferma che ogni mark contribuisce con pixel MuPDF visibili renderizzando la stessa appearance reale con quel mark omesso
HotPDFHeadlessRichMarkFallbackTests.pas e Verify-HeadlessRichMarkFallback.py controllano veri font senza GPOS, appearance salvate visibili, combining class raw, bounds dei glyph selezionati e cancellazione; si verifica anche che gli ancoraggi corrispondenti conservino la priorità sul posizionamento di fallback
Bounds dei glyph TrueType selezionati · Combining class canoniche raw
Appearance builder · Campi rich-text nativi · Fitting dei grapheme tra stili