# grapheme-segmentation(子模块规范) ## 子模块名称 grapheme-segmentation(TC 字符簇分割) ## 目标描述 在 TC(中文/繁中)场景下,统一“按 grapheme cluster(字符簇)切分”的实现口径,确保: - 不拆分 surrogate pair(代理对) - 不拆分 ZWJ 序列(家庭 emoji 等) - 不拆分 variation selector(VS16 等) - 不拆分 skin tone modifier(肤色修饰符) - 不拆分 regional indicator flags(国旗) - 覆盖组合字符(如 `é`) 优先使用平台级 segmentation(如 ICU / 系统 API / `Intl.Segmenter`),无库时提供最低可用兜底。 ## 输入/输出定义 ### 输入 - `text: string`(已完成空白归一化的文本,或原始文本) - `mode: 'PREFERRED' | 'FALLBACK'` ### 输出 - `clusters: string[]` - 每个元素为一个 grapheme cluster(用于 TC tokens) - `meta?: { strategy: 'PLATFORM' | 'INTL_SEGMENTER' | 'FALLBACK'; hadFallback: boolean }` ## 验收标准(可验证) 至少通过以下回归样例(每个样例都必须“单 token 不拆”): - `👨‍👩‍👧‍👦` - `🇸🇬` - `👍🏽` - `😮‍💨` - `é` 并满足: - **确定性**:同输入同输出(clusters 顺序与内容完全一致) - **边界一致**:任意换行断点只允许发生在 `clusters` 边界 ## 依赖与关联 - **被依赖**:`core-contract`(TC token 生成)、`breakpoint-candidates` - **不依赖其他模块**