charEdgePoints
text.length + 1 user-space baseline points: entry i is where char i starts, the last entry where the run ends. A multi-char glyph (ligature) splits its advance evenly across its chars. Null when the producer didn't record geometry (the KiteTextAdapter falls back to an even split of bounds).