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
+16 -38
View File
@@ -1,4 +1,4 @@
<!-- built with theme=dracula, mode=report, at=2026-06-02T18:02:11Z -->
<!-- built with theme=dracula, mode=report, at=2026-06-04T08:24:26Z -->
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
@@ -876,39 +876,6 @@ jz-jinze {
text-decoration: inherit;
}
/* src/css/_lang.css */
:where(.juzhen:lang(zh-Hans)),
:where(.juzhen [lang]:lang(zh-Hans)) {
font-family:
"Noto Serif SC",
"Noto Serif CJK SC",
"Source Han Serif SC",
serif;
}
:where(.juzhen:lang(zh-Hant)),
:where(.juzhen [lang]:lang(zh-Hant)) {
font-family:
"Noto Serif TC",
"Noto Serif CJK TC",
"Source Han Serif TC",
serif;
}
:where(.juzhen:lang(zh-HK)),
:where(.juzhen [lang]:lang(zh-HK)) {
font-family:
"Noto Serif HK",
"Noto Serif CJK HK",
"Noto Serif TC",
serif;
}
:where(.juzhen:lang(ja)),
:where(.juzhen [lang]:lang(ja)) {
font-family:
"Noto Serif JP",
"Noto Serif CJK JP",
serif;
}
/* src/css/_spacing.css */
jz-hws {
margin-right: 0.25em;
@@ -930,8 +897,8 @@ jz-inner {
}
jz-char.jz-half jz-inner,
jz-char.jz-half-le jz-inner {
font-feature-settings: "halt" 1;
-webkit-font-feature-settings: "halt" 1;
font-feature-settings: "locl" 1, "halt" 1;
-webkit-font-feature-settings: "locl" 1, "halt" 1;
}
[data-jz-halfwidth=margin] jz-char.jz-half jz-inner,
[data-jz-halfwidth=margin] jz-char.jz-half-le jz-inner {
@@ -966,8 +933,8 @@ jz-char.jz-half-le jz-inner {
}
[data-jz-halfwidth=halt] jz-char.jz-half jz-inner,
[data-jz-halfwidth=halt] jz-char.jz-half-le jz-inner {
font-feature-settings: "halt" 1;
-webkit-font-feature-settings: "halt" 1;
font-feature-settings: "locl" 1, "halt" 1;
-webkit-font-feature-settings: "locl" 1, "halt" 1;
margin-left: 0;
}
[data-jz-halfwidth=halt] jz-char.jz-half,
@@ -2542,6 +2509,12 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
<!-- BODY -->
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
<h2>字符分類規則集 <span class="badge accent">2026-06-04</span></h2>
<h3>新增</h3>
<ul>
<li><strong>可配置字符分類(<code>charClass</code></strong>:把散落各 pass 之硬編碼分類(中文 CJK/西文 ANS/全寬標點 BD_* 子類)統一抽象為<strong>規則集</strong>,內置默認即現狀值,消費端經 <code>options.charClass</code><code>{ cjk?, western?, biaodian?:{stop,pause,open,close,middle,liga} }</code><strong>追加擴充</strong>,覆寫 <code>spacing</code><code>jiya</code><code>jinze</code> 之分類判定。動機:英文全角句號 <code></code>U+FF0E,異於中文句號 <code></code>)實證為未分類——不 charify/不挤/不補隙;以 <code>charClass:{biaodian:{stop:""}}</code> 即比照 <code></code><strong>向下兼容</strong>:不傳則行為與內置完全一致、各實例隔離(覆寫不污染默認)。v1 為追加語義(不重分類/移除內置);結構性 ASCII 不開放。<code>spacing</code> 之間隙正則改由規則集 per-instance 編譯。測試 66 通過(含 9 條 charClass)。</li>
</ul>
<h2>下游回饋修復批次 <span class="badge accent">2026-06-03</span></h2>
<p>聚焦 Peek.nvim 等下游回饋之原子透明與中西間隙正確性,皆以真實 Chromium 量測驗證(jsdom 之 TreeWalkeroffset 失真,不可信)。</p>
@@ -2645,6 +2618,11 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
<script type="text/markdown" id="md-source">
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
## 字符分類規則集(2026-06-04
### 新增
- 可配置字符分類 charClass:硬編碼分類(中文/西文/全寬標點子類)統一抽象為規則集,內置默認,消費端經 options.charClasscjkwesternbiaodian{stop,pause,open,close,middle,liga})追加擴充,覆寫 spacingjiya/jinze 判定。例:英文全角句號 .(U+FF0E)預設未分類,以 biaodian.stop 歸全寬句末標點即比照 。。向下兼容(不傳則行為不變、實例隔離);v1 追加語義、不重分類內置;結構性 ASCII 不開放。spacing 間隙正則改由規則集 per-instance 編譯。測試 66 通過。
## 下游回饋修復批次(2026-06-03)
皆以真實 Chromium 量測驗證(jsdom 不可信)。