Property

Property :: # (opaque)

A bounded, fused view of Unicode scalar properties commonly needed before font-specific shaping. Row is sealed and allocation-free: construction performs one dense composite index lookup, while optional sparse mappings are resolved only if their typed accessors are called. These are immutable Unicode facts and do not select, substitute, or position glyphs.

of_scalar : Scalar -> Row

Construct an opaque row with exactly one dense composite lookup.

is_default_ignorable : Scalar -> Bool

Query Default_Ignorable_Code_Point from DerivedCoreProperties.txt through its independent narrow binary view.

is_variation_selector : Scalar -> Bool

Query Variation_Selector from PropList.txt through its independent narrow binary view.

fold : Str, state, (state, Entry -> state) -> state

Decode a complete valid string once and fold scalar entries in source order. No per-scalar string, list, or retained analysis is created.

iter : Str -> Iter(Entry)

Lazily scan a complete Str. The iterator retains the source and may stop early without decoding its suffix.

Row

:= { scalar : Scalar, row_id : RowId }
bidi_mirroring_glyph : Row -> [Some(Scalar), None]

Sparse and genuinely optional; evaluated only when requested.

bidi_paired_bracket : Row -> [Some(PairedBracket), None]

Sparse and genuinely optional; evaluated only when requested.

emoji : Row -> Properties
Entry : { located : LocatedScalar, row : Row }