analyzeAndMeasure()
Segment text and measure every resulting segment with a caller-owned synchronous adapter.
Import
Section titled “Import”import { analyzeAndMeasure } from "@graphrefly/ts/solutions/reactive-layout";Signature
Section titled “Signature”function analyzeAndMeasure( text: string, font: string, adapter: MeasurementAdapter, cache: Map<string, Map<string, number>>, stats?: SegmentMeasureStats, segmentAdapter?: SegmentAdapter,): PreparedSegment[]Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
text | string | Text to normalize, segment, and measure. |
font | string | Font descriptor passed through to the measurement adapter. |
adapter | MeasurementAdapter | Synchronous measurement adapter used for each segment or grapheme. |
cache | Map<string, Map<string, number>> | Caller-owned cache keyed by font and segment text. |
stats | SegmentMeasureStats | Optional cache hit/miss accounting object updated during measurement. |
segmentAdapter | SegmentAdapter | Optional segmentation adapter; defaults to the built-in adapter. |
Returns
Section titled “Returns”A prepared segment list with widths, break kinds, and optional grapheme widths for word-like segments.
Example
Section titled “Example”import { analyzeAndMeasure } from "@graphrefly/ts/solutions/reactive-layout";
const segments = analyzeAndMeasure( "Hello world", "16px system-ui", { measureSegment: (segment) => ({ width: segment.length * 8 }) }, new Map(),);Remarks
Section titled “Remarks”- Caller-owned adapter: Measurement stays synchronous and host-injected; browser Canvas, Skia, React Native, or test adapters live outside this helper.
Source
Section titled “Source”packages/ts/src/solutions/reactive-layout/line.ts