docs: changelog 2026-07-07 專案整理(階段一/二)+ index 三分類分層/avoid 七源/demo/19.7em

新增 changelog 2026-07-07「專案整理」條目(架構一致性:透明判定單一真相源+跨透明邊界避頭尾
+avoid 排除歸一;確認缺陷修復+清理;復驗後 lineedge 非缺陷/五處幂等不做之定性;文檔重整)
+md-twin 同步。

index 同步:三分類「共用同一判定」改分層表述(isTransparent 為邏輯流單一真相源+未知行內採
嚴格白名單邊界;canSplit/lineedge 為獨立層)、透明列標「未列=邊界」、avoid 改七源+isAvoided
組合入口+skipTags 不含 code/kbd;修 19.5em→19.7em(與 main 一致);目視驗證補 demo/resize-check
與 demo/showcase 引用。changelog/index HTML 經 build.sh 重建。
This commit is contained in:
2026-07-07 21:21:52 +08:00
parent f75382c9b5
commit 648605ac53
4 changed files with 370 additions and 106 deletions
+51 -2
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>變更紀錄(Changelog</title>
<meta name="generated-at" content="2026-06-13">
<meta name="generated-at" content="2026-07-07">
<meta name="source" content="cjk-autospace · 變更紀錄">
<!-- RUNTIME_CSS -->
</head>
@@ -14,7 +14,7 @@
<div class="meta">
<h1>變更紀錄(Changelog</h1>
<p class="subtitle">聚珍(Juzhen)/cjk-autospace 之版本變更紀錄。</p>
<p class="timestamp"><time>2026-06-13</time> · <span>cjk-autospace · 變更紀錄</span></p>
<p class="timestamp"><time>2026-07-07</time> · <span>cjk-autospace · 變更紀錄</span></p>
</div>
<div class="actions">
<!-- ACTIONS -->
@@ -25,6 +25,32 @@
<!-- BODY -->
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
<h2>專案整理:架構一致性 + 確認缺陷修復 + 文檔重整 <span class="badge accent">2026-07-07</span></h2>
<p>四路並行審計(coretypeset+CSS/設置 API/文檔)後之兩階段整理。核心:消除「透明穿越」判定之兩套口徑分裂,並修四個審計缺陷中之確認項(另一證偽、一延後)。單元測試 116→121 全綠。</p>
<h3>階段一 · 確認缺陷修復 清理</h3>
<ul>
<li><strong>jinze 冪等</strong>:二次 render(未 revert)曾產生巢狀 <code>jz-jinze</code>(違反 I6,實測 3→6)——守衛改判 <code>isJz(parent, PASS)</code></li>
<li><strong>pill 自身 avoid 漏檢</strong><code>processPills</code><code>avoidsSelf</code>——自身命中 avoid(如 <code>&lt;code data-jz-skip&gt;</code>)之 pill 曾仍被補間隙。連帶:<strong><code>CODE</code><code>KBD</code><code>skipTags</code> 預設移除</strong>(已由 <code>pillSelector</code> 以 pill 涵蓋;再列 skipTags 違反三分類互斥、且會抹掉普通 <code>code</code> 之 pill 兩端間隙)。若把 <code>code</code> 移出 <code>pillSelector</code>,須自行加入 <code>skipTags</code><code>scope.avoid</code></li>
<li>刪零引用死代碼(<code>createMarker</code><code>ANY_CJK</code><code>BD_ALL</code><code>BD_CLASS_NAMES</code><code>CreateOptions.attrs</code>);死旗標 <code>biaodian</code><code>emphasis</code><code>ruby</code><code>@reserved</code> 註記。</li>
</ul>
<h3>階段二 · 架構一致性</h3>
<ul>
<li><strong>透明判定單一真相源</strong><code>transparentInline</code> 提升為公開 <code>isTransparent</code>,邏輯文本流之遍歷原語(<code>collectRuns</code><code>adjacentLogicalChar</code><code>jiyaAdjacency</code>)共用之。<strong>未在 <code>styleInlines</code> 之未知行內標籤(如 <code>&lt;button&gt;</code>)採嚴格白名單、一律當邊界</strong>(用戶抉擇;透明須顯式登記)。分層澄清:結構切分安全 <code>canSplit</code>、行端物理版面 <code>lineedge</code> 各有正當之不同邊界、刻意不併入。</li>
<li><strong>跨透明元素邊界避頭尾</strong>(修 #3):避頭類標點落於 <code>&lt;strong&gt;</code> 邊緣(<code>你好&lt;strong&gt;。世界&lt;/strong&gt;</code> 之句末點號位於 strong 首位)時,<code>forbiddenBreak</code><code>edgeCharEl</code> 穿越透明元素下探定位、render 沿透明邊緣上攀處理外層 parent,不再漏綁、誤置行首。</li>
<li><strong>avoid 排除歸一</strong><code>isAvoided</code> 改單一組合入口(自身或祖先),免除「<code>avoidsSelf ‖ isAvoided</code>」易漏一半之誤用(階段一 pill 漏檢即此類)。</li>
<li>小項:<code>scope.include</code> 型別去多餘 <code>| null</code><code>gapTrim</code> 補逐節點功能閘;<code>PASSES</code> 陣列補註執行序。</li>
</ul>
<h3>復驗後重新定性(不照單全收)</h3>
<ul>
<li><strong>lineedge 攀穿 isolate——非缺陷</strong><code>edgeRect</code> 為物理版面測量(<code>getClientRects</code>),isolate 斷的是邏輯 run/相鄰,物理行首行尾判定須跨 <code>&lt;mark&gt;</code> 找真實相鄰內容;初評誤判、已還原。</li>
<li><strong>五處幂等收斂——評估後不做</strong>:各檢查不同位置關係(祖先/父/子),無單一 <code>isJz</code> 形狀可全覆蓋,強行歸一徒增風險。</li>
</ul>
<h3>文檔(本次)</h3>
<ul>
<li>README 新增「全部選項速查」表——突出被埋沒之 <code>lang.style</code><code>styleInlines</code><code>blockTags</code><code>skipTags</code>(標籤名陣列)/<code>skipAttribute</code><code>isSkipped</code>;三分類改分層表述、avoid 改七源+組合入口。</li>
<li>ARCHITECTURE §3.1 <code>scope.avoid</code> 過時示例、§4.1 透明分層與 avoid 七源、§4.2 標點六子類(舊列 <code>bd-cop</code><code>bd-sep</code><code>quote</code> 與實作不符)修正。</li>
</ul>
<h2>標點擠壓句界例外(句末點號接開類保留右空白) <span class="badge accent">2026-06-13</span></h2>
<p>行內連續擠壓(機制 A)新增<strong>句界例外</strong>:句末點號(<code>。.!?</code>)後接開類引號/括號(<code>。「</code><code>?「</code>)時保留句末點號右側空白、僅收開類左側,全角式與開明式皆合占 <strong>1.5em</strong>(對稱於 <code>。」</code>)——下游回饋之語感修正。單元測試 113→116 全綠。</p>
<h3>變更</h3>
@@ -197,6 +223,29 @@
<script type="text/markdown" id="md-source">
# 變更紀錄Changelog 聚珍Juzhencjk-autospace
## 專案整理架構一致性 確認缺陷修復 文檔重整2026-07-07
四路並行審計後之兩階段整理核心消除透明穿越判定之兩套口徑分裂測試 116121 全綠
### 階段一 · 確認缺陷 清理
- jinze 冪等二次 render 曾巢狀 jz-jinze違反 I636守衛改判 isJz(parent, PASS)
- pill 自身 avoid 漏檢processPills avoidsSelf連帶 CODE/KBD skipTags 預設移除已由 pillSelector pill 涵蓋再列 skipTags 違反三分類互斥會抹掉普通 code pill 間隙若把 code 移出 pillSelector 須自行加入 skipTags/scope.avoid
- 刪死代碼 createMarker/ANY_CJK/BD_ALL/BD_CLASS_NAMES/CreateOptions.attrs死旗標 biaodian/emphasis/ruby @reserved
### 階段二 · 架構一致性
- 透明判定單一真相源transparentInline 提升為公開 isTransparent邏輯文本流三原語collectRuns/adjacentLogicalChar/jiyaAdjacency共用之未在 styleInlines 之未知行內標籤採嚴格白名單一律當邊界用戶抉擇分層canSplit切分安全lineedge物理版面各有正當之不同邊界不併入
- 跨透明元素邊界避頭尾 #3句末點號落於 <strong> 首位你好<strong>世界</strong> forbiddenBreak edgeCharEl render 沿 parent
- avoid 排除歸一isAvoided 改組合入口自身或祖先avoidsSelf isAvoided漏一半
- 小項scope.include 去多餘 |nullgapTrim 補功能閘PASSES 補註執行序
### 復驗後重新定性不照單全收
- lineedge 攀穿 isolate非缺陷edgeRect 為物理測量須跨 mark 找真實相鄰初評誤判已還原
- 五處幂等收斂不做各檢查不同位置關係無單一 isJz 形狀可全覆蓋強行歸一徒增風險
### 文檔
- README 新增全部選項速查突出 lang.style/styleInlines/skipTags/skipAttribute/isSkipped三分類改分層avoid 改七源
- ARCHITECTURE §3.1 scope.avoid 過時示例§4.1 透明分層§4.2 標點六子類修正
## 標點擠壓句界例外句末點號接開類保留右空白2026-06-13
### 變更