test+docs: 逐元素標點樣式覆寫——回歸測試(6 例)+ README/ARCHITECTURE 說明

承 c00fb3e(data-jz-style/lang.stylePolicy 之設置格式已推送)。補 e2e 回歸與文檔。

測試(6 例,127 全綠):屬性 banjiao/選擇器 banjiao/屬性優先於選擇器/最近祖先勝/非法值
回退 lang/revert 還原(作者屬性保留)。

文檔:README 設置速查補 lang.stylePolicy + data-jz-style 兩行、新增「逐元素標點樣式」小節
(非段落用半角之選擇器與屬性兩範式);ARCHITECTURE §4.3 補 resolveStyle 優先序(逐元素覆寫
> policy > style > 內建)。
This commit is contained in:
2026-07-11 01:46:43 +08:00
parent c00fb3e482
commit efad638a04
3 changed files with 106 additions and 6 deletions
+8 -4
View File
@@ -326,11 +326,15 @@ avoid」用組合入口 `isAvoided`(=自身或祖先,階段二歸一,免
- `effectiveLang(node)`:最近祖先 `lang`(小寫),無則回退 `options.lang.default`
- `classify(lang)`:歸為 `zh-Hans` / `zh-Hant`(含 `zh-TW`/`zh-HK`/ `ja` / 其他;
BCP-47 前綴邊界比對(`zh` 命中 `zh-Hant`,不命中 `zhx`)。
- `style(lang)`:回傳該語言之標點寬度政策——`quanjiao`(全角式)|`kaiming`
(開明式)|`banjiao`(半角式)。預設:`zh-Hant`/`zh-HK` → 全角式;`zh-Hans`
→ 開明式;可由 `options.lang.policy` 覆寫(即你要的「依 lang 自由選擇」)。
- `resolveStyle(node)`:回傳節點之有效標點寬度政策——`quanjiao`(全角式)|`kaiming`
(開明式)|`banjiao`(半角式)。**優先序****逐元素覆寫**`resolveStyleOverride`:自身及
祖先鏈掃 `data-jz-style` 屬性/`stylePolicy` 選擇器命中,近祖先勝、同層屬性優先於選擇器)
逐 lang `policy` 全域 `style` 內建逐語言預設(`zh-Hant`/`zh-HK` → 全角、`zh-Hans`
開明)。逐元素覆寫供「非段落/UI 元素用半角、段落用全角/開明」等需求(`data-jz-style` 屬性
值非法則忽略、回退 lang)。此純為「按元素選樣式」之路由,`banjiao` 半形渲染沿用 `halt`
`margin`(§6.3),無新增壓縮邏輯。
CSS 端對應以 `:lang()` 選擇器落實同一政策(I2I3)。
CSS 端對應以 `:lang()` 選擇器落實 lang 層政策(I2I3;逐元素覆寫屬 JS 端 baseline 判定
### 4.4 `dom.ts`——`jz-*` 元素工廠與還原