Native rich-text run spacing
Rich appearances apply authored letter and word spacing during shaping, line fitting, physical-line reshaping, alignment and painting, using the supplied fonts and the existing bounded rich-text layout
<p style="letter-spacing:.12em;word-spacing:-1.25pt">A spaced paragraph</p>
The bounded inline CSS profile accepts normal, inherit, initial, unset, signed pt, px at 96 dpi, pc, in, cm, mm and em lengths, plus unitless zero; em computes from the final cascaded font size of its declaring element and children inherit that computed point length
Letter and word spacing have independent declaration order and important priority, and font shorthand preserves both components; unsupported or invalid declarations follow the decoder's existing ignore behavior
Explicit normal resets the corresponding global appearance spacing to zero; omitted native modes retain the existing global CharacterSpacing and WordSpacing behavior, including its trailing character advance
When explicit letter spacing activates a paragraph, visible typographic units receive half of the neighboring style values at each interior boundary after visual reordering, and physical line edges omit the outer halves; marks and invisible format controls do not consume separate spacing
SPACE and NBSP receive half of their word spacing on each side of their shaped cluster, including a separator followed by a combining mark; other Unicode word separators are outside this bounded profile
Nonzero explicit tracking disables optional liga, clig, dlig and hlig substitutions while retaining required ligatures and kerning; adjacent Arabic, Rohingya, Mandaic, Mongolian, N'Ko, Phags-pa and Syriac cursive units suppress tracking where this implementation cannot safely elongate the connection
Negative spacing participates in actual glyph ink bounds and prefix fitting without assuming that each longer prefix is wider; auto-fit scales absolute point spacing together with font size while authored em factors remain relative
Soft-wrapped line alignment uses the visible content advance separately from encoded advance; trailing-space fragments that fit remain present with their source offsets and ToUnicode mappings rather than being deleted to center or right-align a line
ASCII soft separators may span style boundaries or empty runs, while NBSP remains a nonbreaking cluster and explicit paragraph breaks retain their separate CRLF handling; see FreeText default appearances for transformed annotation layout
Typed runs preserve their original Double values, V retains authored plain text and RV writes computed point spacing with round-trip precision; native read-only updates compare the resulting rich value and appearance semantics
Spacing decimal conversion uses round-to-nearest, ties-to-even for finite Double values; canonical RV values normalize negative zero to zero and remain unchanged by a second decode and serialization
Within this bounded profile, explicit normal and explicit zero compute to the same point spacing and canonical RV, making actual equivalent read-only updates semantic no-ops; versioned JSON operations retain the original source bytes, and the omitted legacy mode remains distinct because it inherits the global appearance options
Since version 2.943.1, native SaveRichTextFieldUpdatesToFile also publishes the exact original bytes when all updates are unchanged and the loaded graph has no pending edits, including existing AES encryption and signed revisions; pending graph edits are preserved in the published candidate even when the field update count is zero
Rebuild Pascal and C++Builder consumers with matching rich-run and shaped-glyph records and generated headers; the versioned C callback structures and exported symbols are unchanged
This profile follows the spacing model in CSS 2.2 and the line-edge, typographic-unit and shaping rules in CSS Text letter spacing and CSS Text word spacing, with the bounded separator and cursive coverage stated above
Spacing modes · Typed JSON · Styled shaping span
Finite numeric math supports calc, min, max and clamp length expressions, q, rem and explicitly configured viewport units; signed computed lengths feed the same shaping, line fitting, painting and canonical rich-value behavior