Rich-Text-Marken über Stile hinweg
Typisierter Rich Text behält das ursprüngliche logische V und das kanonische RV bei und positioniert eine führende kombinierende Marke an der echten vorher gerenderten Glyphe derselben physischen Zeile aus
Base und Marke können unterschiedliche gelieferte Regular-, Bold-, Italic- oder Bold-Italic-Font-Programme, unterschiedliche Punktgrößen und unterschiedliche Farben verwenden
Die Positionierung liest echte GPOS mark-to-base-, mark-to-ligature- und mark-to-mark-Attachments, einschließlich Extension-Positionierungs-Lookups; der Base-Anker nutzt seine eigene Schrift und Skalierung, der Marken-Anker seine eigene Schrift und Skalierung
Kontextuelles arabisches Verbinden bleibt über Stilgrenzen hinweg aktiv, und eine angehängte Marke nutzt die resultierende verbundene Base-Glyphe statt einer isolierten nominalen Glyphe
Führende Marken erhalten unabhängige Child-Transforms, sodass das Anhängen einer Marke weder nachfolgenden gewöhnlichen Text verschiebt noch das logische Zeichenabstand-Advance ändert
Rich-Child-Forms behalten Glyphen-Überhänge, einschließlich kombinierender Marken mit negativem Ursprung und kursiven Konturen; die besitzende Appearance liefert Widget-Clip, Rotation und Absatzausrichtung
Angehängte Tusche fließt in die Passung der Zeilenausmaße ein, sodass gestapelte Marken am oberen Feldrand sichtbar bleiben können; ein unteilbarer Cluster, der höher als das Widget ist, behält sein bestehendes begrenztes Clipping-Verhalten
Fehlt eine passende Attachment-Abdeckung, liefern echte Grenzen der ausgewählten TrueType-Glyphen-Header einen Platzierungs-Fallback mit unabhängigen Punktgrößen-Skalen und der nativen Unicode-Combining-Class
Der Fallback-Platzierung unterscheidet Marken darüber, darunter, angehängt, links/rechts und doppelt; Marken derselben Seite stapeln sich, Marken auf der Gegenseite kehren zur Base-Kontur zurück, und passende GPOS-Anker haben stets Vorrang
Doppelte kombinierende Marken bleiben Attachments-Kandidaten, selbst wenn ihre Unicode-Line-Break-Class nonbreaking ist; logischer Text, ursprüngliche Stile und das folgende Zeichenabstand-Advance bleiben unangetastet
Die Fallback-Kante einer doppelten Marke folgt dem tatsächlich aufgelösten bidi-Level ihres Textitems, einschließlich eines gegenläufigen Items innerhalb des Absatzes
Fallback-Grenzen beschreiben den deklarierten Kontur-Header der echten Schrift; die automatische Rekonstruktion beliebiger Schriftfamilien bleibt außerhalb dieses Supplied-Font-Vertrags
Lesezugriffe auf Font-Tabellen bleiben an ihre echte GPOS-Tabelle gebunden, beachten Abbruch und teilen sich ein Traversierungs-Budget über alle gelieferten Stil-Schriften; ungültige Tabellen-Offsets schlagen fehl, bevor das Dokumentfeld verändert wird
Nicht gehintete PDF-Konturen nutzen Design-Koordinaten-Anker, ohne gerätespezifische Pixelanpassungen
Abnahme
HotPDFHeadlessRichMarkTests.pas speichert und lädt echte lateinische, arabische und hebräische Marken-Appearances neu, gestapelte Marken, eine echte arabische Ligatur, gemischte Größen und Farben, Wrapping, Abstände, Ausrichtung und Rotation
Verify-HeadlessRichMarks.py liest die echten eingebetteten Font-Programme über fontTools, berechnet GPOS-Anker unabhängig nach, verifiziert Quellwerte und Stile und bestätigt, dass jede Marke sichtbare MuPDF-Pixel beiträgt, indem dieselbe echte Appearance ohne diese Marke gerendert wird
HotPDFHeadlessRichMarkFallbackTests.pas und Verify-HeadlessRichMarkFallback.py prüfen echte Fehlen-GPOS-Schriften, sichtbare gespeicherte Appearances, rohe Combining-Classes, ausgewählte Glyphen-Grenzen und Abbruch; passende Anker werden zudem darauf verifiziert, Vorrang vor der Fallback-Platzierung zu behalten
Selected TrueType glyph bounds · Raw canonical combining classes
Appearance builder · Native rich-text fields · Grapheme fitting across styles