docs: 字符分類規則集 charClass(同步 main b821cd1)

使用文檔增「自定義字符分類:charClass」節(規則集擴充、英文全角句號 . 用例、向下兼容
與追加語義要點);changelog 增「字符分類規則集(2026-06-04)」。HTML 與 Markdown 孿生
同步、manifest 重建。
This commit is contained in:
2026-06-04 16:24:40 +08:00
parent 0f49ba8ecc
commit 309bc358a8
4 changed files with 70 additions and 76 deletions
+19
View File
@@ -149,6 +149,21 @@ createJuzhen({ lang: { default: "zh-Hant" } }).render(document.querySelector("ma
<p>預設 <code>jz-char</code><code>jz-jinze</code><code>inline-block</code>,作 <code>justify</code> 之單一對齊原子。但<strong>分頁器</strong>(如 Paged.js)之對齊引擎會把每個 inline-block 邊界當伸縮點、與 CJK inter-ideograph 疊加,於窄欄混排時字距失控、整段散架。此時設 <code>justifyAtoms: false</code>——<code>jz-char</code><code>jz-jinze</code><code>display:inline</code>(半形 <code>halt</code> 與禁則 <code>nowrap</code> 綁定均保留)。常規流式版面無需設定。</p>
<div class="callout warn"><span class="label">注意</span> <code>margin</code> 後備半形依賴 <code>inline-block</code><code>width:0.5em</code>),故 <code>justifyAtoms:false</code><code>margin</code> 模式不可兼得——分頁器場景請用含 <code>halt</code> 之字型。</div>
<h2>自定義字符分類:<code>charClass</code></h2>
<p>每個字符之分類(中文/西文、全寬標點各子類)抽象為<strong>規則集</strong>:內置默認即聚珍分類表,消費端經 <code>options.charClass</code> <strong>擴充</strong>,以覆寫 <code>spacing</code><code>jiya</code><code>jinze</code> 對特定字符之判定。語義為<strong>追加</strong>——把當前未分類字符或新符號歸入對應類。</p>
<pre><code>createJuzhen({
charClass: {
cjk: "", // 追加為中文:與西文邊界補間隙、禁則/justify 視為單字
western: "★☆", // 追加為西文(半寬標點亦歸此):與 CJK 邊界補間隙
biaodian: { // 追加為全寬標點,按子類:jiya charify/擠壓、禁則避頭尾
stop: "", // 句末(。!?類) pause 句內(,、;:類)
open: "", close: "", middle: "", liga: "",
},
},
});</code></pre>
<p><strong>典型用例</strong>:英文全角句號 <code></code>U+FF0E,異於中文句號 <code></code> U+3002)預設<strong>未分類</strong>——不 charify、不挤壓、與 CJK 間不補隙。以 <code>charClass:{ biaodian:{ stop:"" } }</code> 歸為全寬句末標點,即比照 <code></code> 處理(開明式挤半形、全角式佔全形、行首避頭尾)。</p>
<div class="callout"><span class="label">要點</span> <strong>向下兼容</strong>:不傳 <code>charClass</code> 時分類與行為與內置完全一致、且各實例隔離(覆寫不污染默認)。<strong>追加語義(v1</strong>:擴充內置類,不支援重分類/移除內置字符。結構性 ASCII(字母數字/運算符)為固定集、不開放。<code>margin</code> 模式下新增開/閉括號之墨色偏側可一併以 <code>jiya.bias</code> 指定。</div>
<h2>v1 向下相容</h2>
<pre><code>const cjk = createCjkAutospace({ pillSelector: "code, kbd" });
cjk.apply(document.body); // → render</code></pre>
@@ -211,6 +226,10 @@ JS 只注入 `jz-*` 結構,所有視覺尺寸在 juzhen.css,缺一不可。
`justifyAtoms: false` → jz-char/jz-jinze 改 display:inline,相容 Paged.js。margin 後備與 justifyAtoms:false 不可兼得。
## 自定義字符分類 charClass
字符分類(中/西文、全寬標點各子類)抽象為規則集,內置默認,消費端經 options.charClass 追加擴充,覆寫 spacingjiyajinze 之判定。`charClass: { cjk?, western?, biaodian?:{stop,pause,open,close,middle,liga} }`。例:英文全角句號 .(U+FF0E)預設未分類,以 biaodian.stop:"" 歸為全寬句末標點即比照 。處理。向下兼容(不傳則行為不變、實例隔離);v1 為追加語義,不重分類內置;結構性 ASCII 不開放。
## v1 相容
`createCjkAutospace(opts).apply(root)` 經相容層映射至 createJuzhen,零改動可跑。