Convert a (font, byte_range, parent-relative glyphs) triple into
a fully-baked WordSubRun: slices parent_text to the sub-run’s
local string, rebases glyph clusters to that local string, sums
the advance.
Walk a rustybuzz-ordered LTR glyph stream and group consecutive
glyphs sharing the same cluster value. Each group’s byte range is
[c..c_next) where c_next is the next cluster’s start (or
text_len for the last cluster). The shaper currently forces LTR;
RTL support must revisit this monotonic-cluster assumption.
Single-sub-run packaging when no fallback retry was needed. Skips
the rebasing branch: the input glyphs already have cluster offsets
relative to local_text (which is the full parent text).