One page, two views of the same bytes: the glyphs your browser renders for a human, and the codepoints a fetcher actually gets. Toggle below.
The compose segments the text into script runs; Khmer runs go to the km word tier (then km parts for residue), English runs to the en word tier (then en chars). One call handles the whole sentence.
-- the exact mixed-script sentence from docs/examples/editor-and-i18n.mjs. Its Khmer OOV name (unkeyable by the word tier) encodes through the parts tier — see the tier pills below.
— !
U+10349D U+F0236U+F028AU+F1604U+10E894U+F01C3U+F4924U+F3335U+F0EE9 U+10E880U+10E879 — U+10E5F8!
Whole prose regions wrapped at build time. Khmer gets full coverage from the parts tier (2,809 corpus-attested clusters); English from the word tier plus the 52-letter char tier.
U+F0236U+F0289U+F3A98U+F3635U+F4924U+F3335U+10E894U+F01C3U+F4924U+F2FBCU+F256DU+F0EE9U+10E890 U+F256DU+F2B0FU+F5CAEU+F227FU+F2E4BU+F4081U+F5CF4U+F474BU+F0FE0 U+F3252U+F4497U+F4B2DU+F0EC3U+10E9C4U+F4240U+F5867U+10E8EBU+F2E5AU+10E890
. , , . , .
U+10F377U+10F38DU+10F389 U+10F368U+10F37FU+10F390U+10F37F U+10E505 U+10DD47 U+10E57C U+10B4ED U+10E709 U+10BF77 U+10DAE6 U+10DC68 U+10AE12 U+104500. U+103585 U+10A1D9 U+10B54B U+10AE12 U+10F36FU+10F380U+10F37FU+10F38A U+10F377U+10F38EU+10F383U+10F37FU+10F38C U+10E447, U+1084A5 U+10DD47 U+10BD42 U+109E7E U+10C168 U+10DD47 U+10BA7D, U+108249 U+10A010 U+10AC60 U+10BE93 U+10AB7B U+10B525 U+10BD86 U+10AA1C U+107EDA U+10C0CD U+10A4E7 U+108249 U+107EDA U+109B9C U+10DE73 U+1090B9 U+10DE73. U+10340C U+10B146 U+10DD47 U+109129 U+10B477 U+10A49A U+10DDA9 U+10C365, U+108249 U+107EDA U+10D8E2 U+10E674 U+1093D8 U+10DDA9 U+10C06F U+10A720 U+10BD26 U+10BE49 U+10AB7B U+10DF52.
, . ; . - , , — - .
U+1071BF U+10CC81 U+10BE93 U+10DD7E U+10C071 U+108395 U+10C80D U+10BE93 U+10C873, U+108B48 U+10DD47 U+10C23B U+10AE12 U+10DD52 U+10995E U+10BD53 U+108E97 U+10DE73 U+1086F3 U+10C127 U+10BE49 U+107EDA U+1096AD. U+10F377U+10F381U+10F390U+10F37FU+10F38EU+10F383U+10F390U+10F391 U+109B3B U+10BD53 U+1089F1 U+10AE12; U+10DD82 U+10C9E9 U+10E624 U+10B146 U+10C80D U+108249 U+10D889 U+107EDA U+10DF52 U+10DE83 U+10A5B7 U+10B72B U+10D3FB. U+1065FF-U+10E7A2 U+10C071 U+108395 U+10DD47 U+10CFB6 U+10908F, U+10DD47 U+10CFB6 U+10D252, U+10DD47 U+10CFB6 U+10E756 U+10DE73 U+107EDA U+10AC93 U+10C9EB — U+108249 U+10BC3A-U+10E790 U+108B71 U+10DE73 U+107EDA U+10B657.
The authoring pattern from docs/examples: you write normal markdown, mark the private region (<!-- ss:begin --> / <!-- ss:end --> or <span class="ss-shield">), and the build script wraps ONLY that region. Everything around it stays plaintext by design — searchable, indexable, yours.
I registered the household on Tuesday and the form went to the district office. The next steps were documented the following week.
I registered the household on Tuesday and the form went to the district office. U+F0236U+F028AU+F1604U+10E894U+F01C3U+F4924U+F3335U+F0EE9U+10E890 The next steps were documented the following week.
The per-site PII pattern from docs/examples/partial-shielding.mjs: wrap exactly the name, leave the sentence plaintext. The English name encodes through the en chars tier (52 letter aliases); through the km char tier, a dictionary-OOV Khmer name whose clusters all map. Everything else stays readable and searchable.
The community liaison on this pilot is , and the district office keeps every roster in a paper binder.
The community liaison on this pilot is U+10F377U+10F38DU+10F389 U+10F368U+10F37FU+10F390U+10F37F, and the district office keeps every roster in a paper binder.
ុំ បានទៅសាលារៀន។
U+FFD0EុំU+FFD0D បានទៅសាលារៀន។
The keep-plain spans (pink underline) ship plaintext by explicit decision: emails, form IDs, prices, code. Survey form IDs and phone numbers contain digits, and the shipped English tiers cover letters, not digits — those regions are carved out, never half-shielded.
: water.pilot@example.org — . FORM-2026-0041 .
U+104E8C U+10930E U+10A49A U+10DD47 U+10C365: water.pilot@example.org — U+109DD6 U+10B146 U+10B040 U+10C3C6. U+106EE9 U+10A4E7 U+103781 U+10B4CC FORM-2026-0041 U+109314 U+10998B U+108249 U+108395 U+108CAD U+10BF7C U+108B67 U+109721.