Scaffolds for the Apple AAT tables (RM06). The modules decode the
envelopes (header, version, count, offsets) and, where the format
allows it, the AAT lookup tables themselves; the state-machine
bodies (morx subtable actions, kerx formats 1/2/4/6) are kept as
raw bytes and are not decoded.
The stub-ness signal is not uniform across the six modules — verify against the live code rather than assuming a shared contract:
prop.jsandmorx.js/kerx.js(non-format-0kerxsubtables) returnparsed: false(prop.jsalso addsreason: 'aat-state-machine-deferred');kerx.jsformat 0 subtables and any fully-decoded record returnparsed: true.ankr.jsandlcar.jsgive no runtime signal at all — theirparseAnkr/parseLcarreturn an AAT lookup-tablelookupFormat+ rawlookupBytes, but neither module decodes the AAT lookup formats (0/2/4/6/8/10) needed to resolve a glyph ID to its anchor/caret block offset. There is no marker orparsedfield to detect this in either file — a consumer must not callreadAnchorBlock/readCaretBlockwith an offset derived from the lookup table, since the table is not decoded.feat.jshas no stub signal because it has no state-machine body to defer —parseFeatfully decodes every feature/setting record.
| Module | Returns | Deps | Description |
|---|---|---|---|
| morx | { parseMorx } |
fontErrors, fontReader |
Extended metamorphosis. |
| kerx | { parseKerx } |
fontErrors, fontReader |
Extended kerning. |
| ankr | { parseAnkr, readAnchorBlock } |
fontErrors, fontReader |
Anchor points. |
| prop | { parseProp, PROP_BITS } |
fontErrors, fontReader |
Glyph properties. |
| lcar | { parseLcar, readCaretBlock } |
fontErrors, fontReader |
Ligature carets. |
| feat | { parseFeat, FEAT_FLAGS } |
fontErrors, fontReader |
Feature names. |
| index | { aatFactories } |
the 6 modules above | Barrel (module aatBarrel, not aatIndex). |