更新换行算法和APP-PUSH
This commit is contained in:
52
spec_kit/Text Wrap/modules/grapheme-segmentation/spec.md
Normal file
52
spec_kit/Text Wrap/modules/grapheme-segmentation/spec.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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`
|
||||
- **不依赖其他模块**
|
||||
|
||||
Reference in New Issue
Block a user