GraphReFlyTS

API Reference

analyzeAndMeasure()

Segment text and measure every resulting segment with a caller-owned synchronous adapter.

Import

import { analyzeAndMeasure } from "@graphrefly/ts/solutions/reactive-layout";

Signature

function analyzeAndMeasure(
	text: string,
	font: string,
	adapter: MeasurementAdapter,
	cache: Map<string, Map<string, number>>,
	stats?: SegmentMeasureStats,
	segmentAdapter?: SegmentAdapter,
): PreparedSegment[]

Parameters

ParameterTypeDescription
textstringText to normalize, segment, and measure.
fontstringFont descriptor passed through to the measurement adapter.
adapterMeasurementAdapterSynchronous measurement adapter used for each segment or grapheme.
cacheMap<string, Map<string, number>>Caller-owned cache keyed by font and segment text.
statsSegmentMeasureStatsOptional cache hit/miss accounting object updated during measurement.
segmentAdapterSegmentAdapterOptional segmentation adapter; defaults to the built-in adapter.

Returns

A prepared segment list with widths, break kinds, and optional grapheme widths for word-like segments.

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

  • Caller-owned adapter: Measurement stays synchronous and host-injected; browser Canvas, Skia, React Native, or test adapters live outside this helper.

Source

packages/ts/src/solutions/reactive-layout/line.ts