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
+30 -2
View File
@@ -115,13 +115,14 @@ createJuzhen({
`pillSelector``isolateSelector``scope.*`**CSS 選擇器**,可用 class/屬性)**不同機制**,
勿混。斜體「詳見」指向本文檔展開該項之小節。
**語言與擠壓政策**(優先序:`policy` `style` 逐語言內建)
**語言與擠壓政策**(優先序:**逐元素** `data-jz-style``stylePolicy` `policy` `style` 逐語言內建)
| 選項 | 型別 | 預設 | 作用 |
|---|---|---|---|
| `lang.default` | string | `"zh-Hant"` | 無 `lang` 祖先時之預設語言標籤 |
| `lang.style` | `quanjiaokaimingbanjiao` | 逐語言內建(繁→全角、簡→開明) | **全域政策一鍵覆寫** |
| `lang.policy` | `Record<lang, style>` | `{}` | 逐 lang 政策(最高優先) |
| `lang.policy` | `Record<lang, style>` | `{}` | 逐 lang 政策 |
| `lang.stylePolicy` | `{selector,style}[]` | `[]` | **逐元素樣式覆寫**(選擇器命中之子樹用指定樣式;如 `[{selector:"h1,button,.ui",style:"banjiao"}]`);配合 `data-jz-style` 屬性,優先於 lang |
**作用域**
@@ -162,6 +163,7 @@ createJuzhen({
| 屬性 | 值 | 作用 |
|---|---|---|
| `data-jz-level` | `textparagraph` | 逐子樹功能分級 |
| `data-jz-style` | `quanjiaokaimingbanjiao` | 逐子樹標點樣式覆寫(近祖先勝、優先於選擇器與 lang) |
| `data-juzhen` | 功能名(空格分隔) | 白名單:僅列出之功能生效 |
| `data-juzhen-off` | 功能名 | 黑名單:停用列出之功能 |
| `data-jz-skip` | (存在即可) | 標記元素為 avoid(內外皆不處理) |
@@ -170,6 +172,32 @@ createJuzhen({
**預留、當前無效果**`hanging`(已移除,見下);`biaodian``emphasis``ruby`(架構預留切片
#7#8)。注意頂層 `biaodian`(功能開關)與 `charClass.biaodian`(標點子類擴充表)**同名異義**。
### 逐元素標點樣式(`data-jz-style``stylePolicy`
標點樣式(`quanjiao` 全角式/`kaiming` 開明式/`banjiao` 半角式)預設由 `lang` 決定,但可
**逐元素/逐範圍覆寫**——典型:**非段落/UI 元素(標題、按鈕)用半角式,段落用全角/開明**。
```ts
// 選擇器批量:h1/h2/button 及 .ui 子樹用半角式,其餘(段落)走 lang
createJuzhen({
lang: {
default: "zh-Hant", // 段落 → 全角式(繁)
stylePolicy: [ { selector: "h1, h2, button, .ui", style: "banjiao" } ],
},
});
```
```html
<!-- 或以 HTML 屬性逐元素/逐範圍標記(標於元素或任一祖先,該子樹生效) -->
<h1 data-jz-style="banjiao">標題:半角標點更緊湊</h1>
<p>段落沿用 lang 之全角/開明式。</p>
```
優先序:**逐元素覆寫**`data-jz-style` 屬性/`stylePolicy` 選擇器,**近祖先勝、同層屬性優先於
選擇器**)> `lang.policy` `lang.style` > 內建逐語言預設。屬性值非法(拼錯)則忽略、回退
lang。半角式渲染沿用既有 `halt``margin` 機制(見下節),本功能只做「按元素選樣式」、無新增
渲染邏輯。
### 行內元素三分類:透明/隔離/整體
行內元素對排版有且僅有三種口徑。**邏輯文本流之遍歷原語**(中西間隙、擠壓相鄰、禁則綁定、