Champs de texte rich natifs
SetRichTextFieldValueWithAppearance écrit un V en texte simple synchronisé, un RV XHTML canonique, le drapeau de champ RichText et de vraies apparences pour chaque widget existant
Chaque run fournit un texte Unicode, un style de police, une taille positive en points, une couleur RGB, un soulignement ou un barré optionnel, des sauts de paragraphe et un alignement left, center ou right ; les quatre polices de styles sont des programmes TrueType Unicode fournis par l’appelant avec les vérifications existantes d’édition et d’embarquement
Les runs utilisent un style regular noir de 12pt par défaut ; l’alignement de paragraphe provient de son premier run et vaut left par défaut
L’apparence utilise de vraies polices de style embarquées, des mappings de glyphes et des fragments de mots mesurés avec des lignes de base partagées ; les fragments répétés partagent le programme de chaque police de style au sein d’un widget
Les sauts explicites CR, LF, CRLF, NEL, LINE SEPARATOR et PARAGRAPH SEPARATOR et les transitions de paragraphes exigent un champ multiligne ; le wrap mesuré, les rotations de widgets et le clipping utilisent le vrai rectangle du widget
La mise à jour typée peut activer le texte rich sur un champ de texte simple, tandis que les combinaisons password, file-select et comb sont rejetées avant mutation
Les champs lecture seule, MaxLen, les politiques authentifiées de documents signés, les permissions de remplissage chiffrées, l’annulation et les budgets d’objets, de polices, de glyphes et de sortie s’appliquent toujours
Toutes les mises à jour rich préparent les overrides V, RV, Ff et AP avant de modifier le document ; les chaînes et flux sauvegardés conservent la politique AES-256 R5 ou R6 originale
Les tableaux de styles, les lignes de layout et les fragments peints ont chacun un plafond de 4096 éléments en plus des limites de document configurées ; les octets des polices de styles sont facturés de façon agrégée
Des appels SetTextFieldValueWithAppearance ordinaires sur un champ rich existant remplacent son contenu par le style simple fourni et synchronisent RV ; les appels SetTextFieldValue à valeur seule synchronisent aussi RV et conservent NeedAppearances=true
GetRichTextFieldValue lit la vraie chaîne de texte XHTML stockée ou le flux de texte UTF-8, valeurs héritées comprises
Le premier run de chaque paragraphe sélectionne son alignement même quand ce run a un texte vide ; les changements de style inline et les sauts de ligne explicites conservent cet alignement de paragraphe
Les mots trop larges dans les champs multiligne wrappés sont coupés aux frontières de graphèmes étendus Unicode 17, en préservant les séquences combinantes, les scalaires supplémentaires, les séquences emoji et le texte V/RV original ; un cluster indivisible plus large que le champ reste intact et clippé
Les bordures de rectangles et de cercles sont peintes avant le clip du contenu, et les rangées multiligne sélectionnées reçoivent de vrais fonds bleus en utilisant l’ascendante, la descendante et l’espacement mesurés de chaque ligne rich
ABI JSON native
{"schemaVersion":1,"type":"forms.fill","fields":[
{"name":"Input","fontFamily":"DejaVu Sans Mono","richTextRuns":[
{"text":"Regular Unicode text "},
{"text":"Bold red text","fontStyle":"bold","fontSize":20,"color":[1,0,0]},
{"text":"Next paragraph","fontStyle":"italic","paragraphBreakBefore":true,
"alignment":"center","underline":true}
]}
]}
richTextRuns est un tableau d’objets avec text requis et fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore et alignment optionnels ; fontStyle accepte regular, bold, italic ou boldItalic
Les tableaux fontFamilies optionnels sélectionnent de vrais programmes nommés par run via fontFamily, un tableau au niveau de l’édition remplaçant celui au niveau de l’opération et les libellés de runs omis sélectionnant la première famille
Un fontSize de run omis utilise le fontSize de l’opération du champ quand il est positif, sinon 12 ; une value optionnelle doit correspondre exactement au texte simple dérivé des runs, avec un retour chariot entre paragraphes explicites
Les runs stylés exigent appearance=true ; forms.read renvoie le vrai XHTML stocké dans richText pour un champ rich
L’ABI conserve sa disposition d’opérations existante et prépare la sortie binaire et de résultat complète avant de committer le nouveau contexte chargé ; des écritures échouées ou une annulation préservent le champ antérieur
Acceptation et travail restant
Tests/Linux/Run-HeadlessRichTextAcceptance.sh et Tests/Linux/HotPDFHeadlessRichTextTests.pas exercent de vrais PDF sauvegardés ; Verify-HeadlessRichText.py vérifie indépendamment le XHTML, les valeurs, quatre vrais programmes de polices, les tables de glyphes, les chemins de décoration et les pixels visibles des widgets
Cette API accepte des runs typés et consomme les opportunités par défaut d’Unicode 17 sur des paragraphes complets, en préservant les groupes de mots, d’espaces insécables, de ponctuation et de nombres à travers les changements de style ; les groupes qui tiennent sur une ligne fraîche se déplacent ensemble en utilisant leurs avances réelles de polices stylées
Le wrap des groupes de styles conserve aussi des lignes de base partagées pour les tailles en points mixtes et fusionne les CRLF à travers les coutures de styles dans le layout réel comme dans le XHTML canonique
Le fitting de graphèmes entre styles affecte les clusters logiques trop larges complets à une seule ligne physique, en conservant les fragments réels de police, de couleur et de taille et le comportement de clipping existant pour un cluster indivisible plus large que le rectangle
La jointure contextuelle utilise le texte Unicode environnant et chaque vraie ligne physique conserve la direction du paragraphe tout en ordonnant les items bidi et de scripts mixtes à travers les styles typés
Les marques entre styles utilisent de vrais attachements GPOS pour les vrais glyphes de base, de ligatures et de marques précédentes, en préservant la police, la taille en points et la couleur de chaque style et les débordements visibles de glyphes
L’échange FDF et XFDF rich décode le profil de styles XHTML borné pris en charge en vraies polices embarquées et apparences sauvegardées
Les embeddings, overrides, isolates directionnels explicites et le contexte de crochets appariés survivent au wrap automatique à travers les styles typés ; un ordre de paragraphe logique partagé fournit un réordonnancement indépendant des lignes physiques et un shaping contextuel natif des glyphes
Les clusters ne contenant que des contrôles directionnels Unicode préservent la valeur logique originale et le texte de sélection sans consommer d’espacement de caractères ; les clusters visibles et les espaces ordinaires conservent leurs avances configurées
L’ordre des lignes dérivé des paragraphes et le réordonnancement de lignes en cache préservent les frontières complètes de scalaires UTF-16 et réinitialisent les espaces de fin de lignes physiques sans muter le record de paragraphe partagé
Les familles de polices nommées fournissent une sélection explicite de runs typés et de XHTML borné avec de vraies polices de familles, des avances indépendantes et un import de formulaires conscient des familles
Les feuilles de style internes appliquent la cascade de sélecteurs bornée partagée aux valeurs riches natives et aux imports FDF/XFDF ; le XHTML/CSS plus large, les feuilles de style externes et le layout général restent des travaux actifs
Le XHTML et le CSS arbitraires, le fallback par glyphe, les feuilles de style et le layout général restent des travaux actifs
Comportement des champs de texte rich natifs · API documentaire