diff --git a/docs/changelog.html b/docs/changelog.html
index 5cb336b..cc4a455 100644
--- a/docs/changelog.html
+++ b/docs/changelog.html
@@ -1,4 +1,4 @@
-
+
@@ -2559,10 +2559,12 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
跨透明元素邊界避頭尾(修 #3):避頭類標點落於 <strong> 邊緣(你好<strong>。世界</strong> 之句末點號位於 strong 首位)時,forbiddenBreak 經 edgeCharEl 穿越透明元素下探定位、render 沿透明邊緣上攀處理外層 parent,不再漏綁、誤置行首。
avoid 排除歸一:isAvoided 改單一組合入口(自身或祖先),免除「avoidsSelf ‖ isAvoided」易漏一半之誤用(階段一 pill 漏檢即此類)。
小項:scope.include 型別去多餘 | null;gapTrim 補逐節點功能閘;PASSES 陣列補註執行序。
+元素分類單一入口 finder.category(收尾):散落各遍歷原語各自短路之分類優先序,收斂為單一分類器——一元素恰屬 avoid/pill/isolate/block/transparent/opaque 之一,優先序 avoid > pill > isolate > block > transparent > opaque(帶 data-jz-skip 之 pill → avoid;同命中 pill 與 isolate → pill)。isTransparent = category==="transparent";collectRuns/jiyaAdjacency 改 switch(category);canSplit = SPLITTABLE ∩ transparent。行為等價(121 全綠)。
復驗後重新定性(不照單全收)
- lineedge 攀穿 isolate——非缺陷:
edgeRect 為物理版面測量(getClientRects),isolate 斷的是邏輯 run/相鄰,物理行首行尾判定須跨 <mark> 找真實相鄰內容;初評誤判、已還原。
+- lineEdge/gapTrim 雙 ResizeObserver 派發序——確認非缺陷:Chrome headless 實測回調按 observer 創建順序派發(ResizeObserver 規範遍歷 observers 插入序,非 observe 序;實測 seq=12);
lineEdge(order 90)之 observer 先於 gapTrim(order 92)建、故 resize 時恆先派發,gapTrim 之行末去隙恆基於已套用之半形版面(非陳舊態)。以註解鎖為不變量、不需改碼。
- 五處幂等收斂——評估後不做:各檢查不同位置關係(祖先/父/子),無單一
isJz 形狀可全覆蓋,強行歸一徒增風險。
文檔(本次)
@@ -2773,9 +2775,11 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
- 跨透明元素邊界避頭尾(修 #3):句末點號落於 首位(你好。世界)時 forbiddenBreak 經 edgeCharEl 下探、render 沿透明邊緣上攀處理外層 parent,不再漏綁。
- avoid 排除歸一:isAvoided 改組合入口(自身或祖先),免「avoidsSelf ‖ isAvoided」漏一半。
- 小項:scope.include 去多餘 |null;gapTrim 補功能閘;PASSES 補註執行序。
+- 元素分類單一入口 finder.category(收尾):分類優先序收斂為單一分類器(avoid>pill>isolate>block>transparent>opaque);isTransparent=category==="transparent"、collectRuns/jiyaAdjacency switch(category)、canSplit=SPLITTABLE∩transparent。行為等價。
### 復驗後重新定性(不照單全收)
- lineedge 攀穿 isolate——非缺陷:edgeRect 為物理測量,須跨 mark 找真實相鄰;初評誤判、已還原。
+- lineEdge/gapTrim 雙 ResizeObserver 派發序——確認非缺陷:Chrome 實測按 observer 創建序派發(規範插入序,非 observe 序);lineEdge(order 90)先於 gapTrim(order 92)建、resize 恆先派發、不會用陳舊半形態;註解鎖不變量、不改碼。
- 五處幂等收斂——不做:各檢查不同位置關係,無單一 isJz 形狀可全覆蓋,強行歸一徒增風險。
### 文檔
diff --git a/docs/changelog.src.html b/docs/changelog.src.html
index 8281da3..94b2970 100644
--- a/docs/changelog.src.html
+++ b/docs/changelog.src.html
@@ -39,10 +39,12 @@
跨透明元素邊界避頭尾(修 #3):避頭類標點落於 <strong> 邊緣(你好<strong>。世界</strong> 之句末點號位於 strong 首位)時,forbiddenBreak 經 edgeCharEl 穿越透明元素下探定位、render 沿透明邊緣上攀處理外層 parent,不再漏綁、誤置行首。
avoid 排除歸一:isAvoided 改單一組合入口(自身或祖先),免除「avoidsSelf ‖ isAvoided」易漏一半之誤用(階段一 pill 漏檢即此類)。
小項:scope.include 型別去多餘 | null;gapTrim 補逐節點功能閘;PASSES 陣列補註執行序。
+元素分類單一入口 finder.category(收尾):散落各遍歷原語各自短路之分類優先序,收斂為單一分類器——一元素恰屬 avoid/pill/isolate/block/transparent/opaque 之一,優先序 avoid > pill > isolate > block > transparent > opaque(帶 data-jz-skip 之 pill → avoid;同命中 pill 與 isolate → pill)。isTransparent = category==="transparent";collectRuns/jiyaAdjacency 改 switch(category);canSplit = SPLITTABLE ∩ transparent。行為等價(121 全綠)。
復驗後重新定性(不照單全收)
- lineedge 攀穿 isolate——非缺陷:
edgeRect 為物理版面測量(getClientRects),isolate 斷的是邏輯 run/相鄰,物理行首行尾判定須跨 <mark> 找真實相鄰內容;初評誤判、已還原。
+- lineEdge/gapTrim 雙 ResizeObserver 派發序——確認非缺陷:Chrome headless 實測回調按 observer 創建順序派發(ResizeObserver 規範遍歷 observers 插入序,非 observe 序;實測 seq=12);
lineEdge(order 90)之 observer 先於 gapTrim(order 92)建、故 resize 時恆先派發,gapTrim 之行末去隙恆基於已套用之半形版面(非陳舊態)。以註解鎖為不變量、不需改碼。
- 五處幂等收斂——評估後不做:各檢查不同位置關係(祖先/父/子),無單一
isJz 形狀可全覆蓋,強行歸一徒增風險。
文檔(本次)
@@ -237,9 +239,11 @@
- 跨透明元素邊界避頭尾(修 #3):句末點號落於 首位(你好。世界)時 forbiddenBreak 經 edgeCharEl 下探、render 沿透明邊緣上攀處理外層 parent,不再漏綁。
- avoid 排除歸一:isAvoided 改組合入口(自身或祖先),免「avoidsSelf ‖ isAvoided」漏一半。
- 小項:scope.include 去多餘 |null;gapTrim 補功能閘;PASSES 補註執行序。
+- 元素分類單一入口 finder.category(收尾):分類優先序收斂為單一分類器(avoid>pill>isolate>block>transparent>opaque);isTransparent=category==="transparent"、collectRuns/jiyaAdjacency switch(category)、canSplit=SPLITTABLE∩transparent。行為等價。
### 復驗後重新定性(不照單全收)
- lineedge 攀穿 isolate——非缺陷:edgeRect 為物理測量,須跨 mark 找真實相鄰;初評誤判、已還原。
+- lineEdge/gapTrim 雙 ResizeObserver 派發序——確認非缺陷:Chrome 實測按 observer 創建序派發(規範插入序,非 observe 序);lineEdge(order 90)先於 gapTrim(order 92)建、resize 恆先派發、不會用陳舊半形態;註解鎖不變量、不改碼。
- 五處幂等收斂——不做:各檢查不同位置關係,無單一 isJz 形狀可全覆蓋,強行歸一徒增風險。
### 文檔
diff --git a/docs/index.html b/docs/index.html
index 6da7e3e..ae68d39 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,4 +1,4 @@
-
+
@@ -2673,7 +2673,7 @@ createJuzhen({ lang: { default: "zh-Hant" } }).render(document.querySelector("ma
行內元素三分類:透明/隔離/整體
-行內元素對排版有且僅有三種口徑。邏輯文本流之遍歷原語共用單一判定 isTransparent(中西間隙、擠壓相鄰、禁則綁定、垂懸字);未在 styleInlines 之未知行內標籤(自訂元素等)採嚴格白名單、一律當邊界,透明須顯式登記。判定以元素為準、非標籤名——KaTeX 全樹皆 <span>,但 .katex 命中 pillSelector 即為整體邊界。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層(邊界各異,見架構)。
+行內元素對排版有且僅有三種口徑。邏輯文本流之遍歷原語共用單一判定 isTransparent(中西間隙、擠壓相鄰、禁則綁定、垂懸字);未在 styleInlines 之未知行內標籤(自訂元素等)採嚴格白名單、一律當邊界,透明須顯式登記。多選擇器同命中時依單一分類器 finder.category 之優先序 avoid > pill > isolate > block > transparent > opaque 定案(如 data-jz-skip 之 pill → avoid;pill+isolate → pill)。判定以元素為準、非標籤名——KaTeX 全樹皆 <span>,但 .katex 命中 pillSelector 即為整體邊界。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層(邊界各異,見架構)。
| 分類 | 選擇器 | 邊界 | 內部 | 典型 |
@@ -2783,7 +2783,7 @@ JS 只注入 `jz-*` 結構,所有視覺尺寸在 juzhen.css,缺一不可。
## 行內元素三分類
-行內元素對排版三種口徑,邏輯文本流之遍歷原語共用單一判定 isTransparent(以元素為準、非標籤名);未在 styleInlines 之未知行內標籤採嚴格白名單、一律當邊界(透明須顯式登記):透明(styleInlines——穿越、run 延續、可克隆切分);隔離(isolateSelector,預設 "mark"——邊界斷 run/斷相鄰/不可切分、兩端補隙,內部照常處理);整體(pillSelector——內部對一切 pass 不可見,禁則時作為原子鄰字單位整體綁入 jz-jinze)。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層。avoid 七源(isSkipped/skipTags/SVG/contentEditable/data-jz-skip/skipAttribute/scope.avoid)以自身判定、命中即邊界(一次性用組合 isAvoided);skipTags 預設不含 code/kbd(由 pill 涵蓋、三分類互斥)。行內公式/夾注引用宜列為 pill:`pillSelector: "code, kbd, .katex, .cite-ref"`。
+行內元素對排版三種口徑,邏輯文本流之遍歷原語共用單一判定 isTransparent(以元素為準、非標籤名);未在 styleInlines 之未知行內標籤採嚴格白名單、一律當邊界(透明須顯式登記):透明(styleInlines——穿越、run 延續、可克隆切分);隔離(isolateSelector,預設 "mark"——邊界斷 run/斷相鄰/不可切分、兩端補隙,內部照常處理);整體(pillSelector——內部對一切 pass 不可見,禁則時作為原子鄰字單位整體綁入 jz-jinze)。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層。多命中依單一分類器 finder.category 之優先序 avoid>pill>isolate>block>transparent>opaque 定案(data-jz-skip 之 pill→avoid;pill+isolate→pill)。avoid 七源(isSkipped/skipTags/SVG/contentEditable/data-jz-skip/skipAttribute/scope.avoid)以自身判定、命中即邊界(一次性用組合 isAvoided);skipTags 預設不含 code/kbd(由 pill 涵蓋、三分類互斥)。行內公式/夾注引用宜列為 pill:`pillSelector: "code, kbd, .katex, .cite-ref"`。
## 分頁器相容
diff --git a/docs/index.src.html b/docs/index.src.html
index 583734e..67c97ea 100644
--- a/docs/index.src.html
+++ b/docs/index.src.html
@@ -153,7 +153,7 @@ createJuzhen({ lang: { default: "zh-Hant" } }).render(document.querySelector("ma
行內元素三分類:透明/隔離/整體
-行內元素對排版有且僅有三種口徑。邏輯文本流之遍歷原語共用單一判定 isTransparent(中西間隙、擠壓相鄰、禁則綁定、垂懸字);未在 styleInlines 之未知行內標籤(自訂元素等)採嚴格白名單、一律當邊界,透明須顯式登記。判定以元素為準、非標籤名——KaTeX 全樹皆 <span>,但 .katex 命中 pillSelector 即為整體邊界。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層(邊界各異,見架構)。
+行內元素對排版有且僅有三種口徑。邏輯文本流之遍歷原語共用單一判定 isTransparent(中西間隙、擠壓相鄰、禁則綁定、垂懸字);未在 styleInlines 之未知行內標籤(自訂元素等)採嚴格白名單、一律當邊界,透明須顯式登記。多選擇器同命中時依單一分類器 finder.category 之優先序 avoid > pill > isolate > block > transparent > opaque 定案(如 data-jz-skip 之 pill → avoid;pill+isolate → pill)。判定以元素為準、非標籤名——KaTeX 全樹皆 <span>,但 .katex 命中 pillSelector 即為整體邊界。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層(邊界各異,見架構)。
| 分類 | 選擇器 | 邊界 | 內部 | 典型 |
@@ -247,7 +247,7 @@ JS 只注入 `jz-*` 結構,所有視覺尺寸在 juzhen.css,缺一不可。
## 行內元素三分類
-行內元素對排版三種口徑,邏輯文本流之遍歷原語共用單一判定 isTransparent(以元素為準、非標籤名);未在 styleInlines 之未知行內標籤採嚴格白名單、一律當邊界(透明須顯式登記):透明(styleInlines——穿越、run 延續、可克隆切分);隔離(isolateSelector,預設 "mark"——邊界斷 run/斷相鄰/不可切分、兩端補隙,內部照常處理);整體(pillSelector——內部對一切 pass 不可見,禁則時作為原子鄰字單位整體綁入 jz-jinze)。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層。avoid 七源(isSkipped/skipTags/SVG/contentEditable/data-jz-skip/skipAttribute/scope.avoid)以自身判定、命中即邊界(一次性用組合 isAvoided);skipTags 預設不含 code/kbd(由 pill 涵蓋、三分類互斥)。行內公式/夾注引用宜列為 pill:`pillSelector: "code, kbd, .katex, .cite-ref"`。
+行內元素對排版三種口徑,邏輯文本流之遍歷原語共用單一判定 isTransparent(以元素為準、非標籤名);未在 styleInlines 之未知行內標籤採嚴格白名單、一律當邊界(透明須顯式登記):透明(styleInlines——穿越、run 延續、可克隆切分);隔離(isolateSelector,預設 "mark"——邊界斷 run/斷相鄰/不可切分、兩端補隙,內部照常處理);整體(pillSelector——內部對一切 pass 不可見,禁則時作為原子鄰字單位整體綁入 jz-jinze)。結構克隆切分 canSplit、行端物理版面 lineedge 為正當之獨立層。多命中依單一分類器 finder.category 之優先序 avoid>pill>isolate>block>transparent>opaque 定案(data-jz-skip 之 pill→avoid;pill+isolate→pill)。avoid 七源(isSkipped/skipTags/SVG/contentEditable/data-jz-skip/skipAttribute/scope.avoid)以自身判定、命中即邊界(一次性用組合 isAvoided);skipTags 預設不含 code/kbd(由 pill 涵蓋、三分類互斥)。行內公式/夾注引用宜列為 pill:`pillSelector: "code, kbd, .katex, .cite-ref"`。
## 分頁器相容