Native Linux typed rich-text line height
The versioned Linux JSON forms.fill operation binds original richTextRuns to the native line-box profile with supplied Fontconfig programs and unchanged callback layouts
{"schemaVersion":1,"type":"forms.fill","fields":[{"name":"Input","fontFamily":"Sans","richTextRuns":[{"text":"First\rSecond","fontSize":10,"lineHeightKind":"number","lineHeight":2}]}]}
richTextRuns requires a Tx text field; scalar choice and button operations retain their existing behaviour, and incompatible typed field edits fail before changing the graph
lineHeightKind accepts legacy, normal, number, points, percent or em; a numeric lineHeight alone implies number, whilst a numeric kind requires a finite value from zero through one million
Legacy and normal accept an absent or zero value; percentages and em compute to points using the actual authored run fontSize, and computed heights have the same one-million-point bound
Metric-only parent runs participate in font admission and line-box unions even when they paint no text; the planner keeps a separate prepared array and preserves original authored colour, size and height precision
The 4096-run field limit includes inserted paragraph struts, and formDataLimits.maxObjects bounds the aggregate prepared count across the operation
All-rich batches return the actual updated count and preserve exact committed PDF bytes for no-ops; mixed scalar and rich batches retain their requested-edit count and publish the complete final PDF and source snapshot
Strict member errors return status 1, malformed JSON tokens return parse status 6, and cancellation or failed callback publication leaves the committed graph intact
The real Linux capability callback advertises the accepted kinds, zero heights, metric paragraph struts and byte-identical rich no-ops under formData.typedRichFill