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