docs: 功能分級 + 垂懸字 + 標點懸掛(同步 main §6.5 落地)

changelog 增「功能分級 + 垂懸字 + 標點懸掛」條目(2026-06-09):功能分級
(文本/段落級)、垂懸字 orphan(方案 C,預設開)、標點懸掛 hanging(按類凸出量、
headless 校準、需 justifyAtoms:false)、行歸屬 bug 修正、兩階段防自我應驗、demo 增區。
index 功能表增 orphan/hanging/level 三列、選項示例與 md twin 同步、各功能標級別。
重建 index.html/changelog.html。
This commit is contained in:
2026-06-09 22:19:29 +08:00
parent 43ac591d6a
commit 38a1cbaace
4 changed files with 82 additions and 18 deletions
+16 -7
View File
@@ -1,4 +1,4 @@
<!-- built with theme=dracula, mode=report, at=2026-06-09T07:22:49Z -->
<!-- built with theme=dracula, mode=report, at=2026-06-09T14:19:17Z -->
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
@@ -2563,10 +2563,13 @@ createJuzhen({ lang: { default: "zh-Hant" } }).render(document.querySelector("ma
<tr><td>長英文詞 <code>longWord</code></td><td><code>[A-Za-z]{6,}</code> 包入 <code>&lt;span lang="en"&gt;</code>,配合消費端 CSS <code>hyphens:auto</code> 原生斷詞(DOM 無連字符 → 複製不污染)。</td></tr>
<tr><td>標點擠壓 <code>jiya</code></td><td>標點 charify 為 <code>jz-char</code> <code>bd-*</code> class。三機制:baseline 政策(全角式不擠/開明式擠句內點號+括號引號/半角式全擠)+行內連續擠壓+行端擠壓。半形預設以字型 OpenType <code>halt</code> 渲染;缺 <code>halt</code> 字型可切 <code>margin</code> 後備模式(見下)。</td></tr>
<tr><td>禁則 <code>jinze</code></td><td>行首行末避頭尾:閉類/點號綁前一字(不置行首)、開類綁後一字(不置行末);只隔離邊界詞元,長引文中段仍可斷。亦為 <code>justify</code> 綁定載體。</td></tr>
<tr><td>垂懸字避免 <code>orphan</code></td><td>段末行 CJK 實義字 ≥ N(預設 2;標點不計)。方案 C(斷行層無測量):段末末 N 實義字+尾隨標點包入 <code>jz-orphan</code><code>white-space:nowrap</code>),整體不可斷 → 末行恒含之 ⇒ 末行 ≥ N。<strong>預設開</strong>;段落級。</td></tr>
<tr><td>標點懸掛 <code>hanging</code></td><td>行尾點號/閉類右凸、行首開類左凸出版心,正文格線齊邊(自管負 margin,按類凸出量:點號 1em/括號 0.5em,CSS 變數可調)。<strong>預設關</strong>;繁體預設不掛(逐 lang 閘)。⚠ 需 <code>justifyAtoms:false</code>(與 inline-block 對齊原子互斥)。段落級。</td></tr>
<tr><td>功能分級 <code>level</code></td><td>文本級(間隙、擠壓——任意文本適用)vs 段落級(禁則、垂懸字、懸掛、長詞——需行/段布局)。塊級預設全功能;<code>data-jz-level="text"</code> 子樹或 <code>level:{text:"選擇器"}</code>(標題/按鈕)僅跑文本級。</td></tr>
<tr><td>justify 單份間距</td><td>每個 <code>jz-char</code><code>inline-block</code> 原子,句末標點只貢獻一份對齊伸縮量。</td></tr>
</tbody>
</table>
<p>後續(架構已預留,不返工):標點懸掛、標點修正(簡↔繁)、著重號、注音/Ruby。</p>
<p>後續(架構已預留,不返工):標點修正(簡↔繁)、著重號、注音/Ruby。</p>
<h2>選項</h2>
<pre><code>createJuzhen({
@@ -2580,7 +2583,10 @@ createJuzhen({ lang: { default: "zh-Hant" } }).render(document.querySelector("ma
longWord: { minLength: 6, lang: "en" },
jiya: true, // 或物件:{ halfWidth: "halt"|"margin", bias }
jinze: true,
justifyAtoms: true, // 分頁器下設 false 改 inline(見下)
orphan: true, // 垂懸字避免(預設開);或 { chars: 2 }false 關
hanging: false, // 標點懸掛(預設關);需 justifyAtoms:false
level: { text: "h1,h2,h3,button,.ui" }, // 此選擇器子樹僅跑文本級功能
justifyAtoms: true, // 分頁器或標點懸掛下設 false 改 inline(見下)
blocks: [ { selector: ".code-comment", features: [ "spacing" ] } ],
});</code></pre>
<p>擠壓政策優先序:<strong>逐 lang <code>policy</code> 全域 <code>style</code> 內建預設</strong>(繁→全角、簡→開明)。</p>
@@ -2722,10 +2728,13 @@ JS 只注入 `jz-*` 結構,所有視覺尺寸在 juzhen.css,缺一不可。
## 已實作功能
- spacing 中西間隙(margin 模型,copy-clean;含 pill 與作者空格正規化)
- longWord 長英文詞包裝(`<span lang>` + hyphens:auto
- jiya 標點擠壓(全角/開明/半角;半形 halt 預設、margin 後備)
- jinze 禁則(避頭尾、justify 綁定)
- spacing 中西間隙(margin 模型,copy-clean;含 pill 與作者空格正規化)【文本級】
- longWord 長英文詞包裝(`<span lang>` + hyphens:auto【段落級】
- jiya 標點擠壓(全角/開明/半角;半形 halt 預設、margin 後備)【文本級】
- jinze 禁則(避頭尾、justify 綁定)【段落級】
- orphan 垂懸字避免(方案 C,末行 CJK 實義字 ≥ N;預設開 chars=2)【段落級】
- hanging 標點懸掛(行端點號/括號凸出版心;預設關;需 justifyAtoms:false;逐 lang 閘繁體不掛)【段落級】
- level 功能分級(文本級 vs 段落級;data-jz-level="text"level:{text:選擇器} 標記標題等僅跑文本級)
- justify 句末標點單份間距(jz-char inline-block 原子)
## 標點半形:halt 預設與 margin 後備