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 首位)時,forbiddenBreakedgeCharEl 穿越透明元素下探定位、render 沿透明邊緣上攀處理外層 parent,不再漏綁、誤置行首。
  • avoid 排除歸一isAvoided 改單一組合入口(自身或祖先),免除「avoidsSelf ‖ isAvoided」易漏一半之誤用(階段一 pill 漏檢即此類)。
  • 小項:scope.include 型別去多餘 | nullgapTrim 補逐節點功能閘;PASSES 陣列補註執行序。
  • +
  • 元素分類單一入口 finder.category(收尾):散落各遍歷原語各自短路之分類優先序,收斂為單一分類器——一元素恰屬 avoid/pill/isolate/block/transparent/opaque 之一,優先序 avoid > pill > isolate > block > transparent > opaque(帶 data-jz-skip 之 pill → avoid;同命中 pill 與 isolate → pill)。isTransparentcategory==="transparent"collectRunsjiyaAdjacencyswitch(category)canSplitSPLITTABLE ∩ transparent。行為等價(121 全綠)。
  • 復驗後重新定性(不照單全收)

    文檔(本次)

    @@ -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 首位)時,forbiddenBreakedgeCharEl 穿越透明元素下探定位、render 沿透明邊緣上攀處理外層 parent,不再漏綁、誤置行首。
  • avoid 排除歸一isAvoided 改單一組合入口(自身或祖先),免除「avoidsSelf ‖ isAvoided」易漏一半之誤用(階段一 pill 漏檢即此類)。
  • 小項:scope.include 型別去多餘 | nullgapTrim 補逐節點功能閘;PASSES 陣列補註執行序。
  • +
  • 元素分類單一入口 finder.category(收尾):散落各遍歷原語各自短路之分類優先序,收斂為單一分類器——一元素恰屬 avoid/pill/isolate/block/transparent/opaque 之一,優先序 avoid > pill > isolate > block > transparent > opaque(帶 data-jz-skip 之 pill → avoid;同命中 pill 與 isolate → pill)。isTransparentcategory==="transparent"collectRunsjiyaAdjacencyswitch(category)canSplitSPLITTABLE ∩ transparent。行為等價(121 全綠)。
  • 復驗後重新定性(不照單全收)

    文檔(本次)

    @@ -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"`。 ## 分頁器相容
    分類選擇器邊界內部典型