docs: 聚珍 HTML 文檔(使用文檔+變更紀錄)
docs 分支僅含文檔,與程式碼歷史脫鉤(orphan,無 src/dist 等舊實現之提交)。 以 HTML manifest 模板(report 模式)構建為自含單檔,無外部依賴。 - docs/index.html 使用文檔:安裝/用法/功能/選項/halt 與 margin 後備/ 字型偏側與配字工作流/CSS 基礎設定/分頁器相容/v1 相容。 - docs/changelog.html 變更紀錄。 - *.src.html 為可編輯之文檔源。 程式碼正本與其歷史在 main;本分支不記錄任何實現。
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-Hant">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>變更紀錄(Changelog)</title>
|
||||
<meta name="generated-at" content="2026-06-02">
|
||||
<meta name="source" content="cjk-autospace · 變更紀錄">
|
||||
<!-- RUNTIME_CSS -->
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="page">
|
||||
<div class="meta">
|
||||
<h1>變更紀錄(Changelog)</h1>
|
||||
<p class="subtitle">聚珍(Juzhen)/cjk-autospace 之版本變更紀錄。</p>
|
||||
<p class="timestamp"><time>2026-06-02</time> · <span>cjk-autospace · 變更紀錄</span></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<!-- ACTIONS -->
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<!-- BODY -->
|
||||
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
|
||||
|
||||
<h2>v2 切片 1 · 增補 <span class="badge accent">2026-06</span></h2>
|
||||
<p>切片 1 之上的修補與強化,聚焦標點半形對缺 <code>halt</code> 字型之支援,及下游回饋之邊界/分頁器修復。</p>
|
||||
|
||||
<h3>新增</h3>
|
||||
<ul>
|
||||
<li><strong>標點半形 <code>margin</code> 後備模式</strong>(缺 OpenType <code>halt</code> 之字型):<code>jiya.halfWidth: "halt"</code>(預設)|<code>"margin"</code>。<code>margin</code> 以 <code>width:0.5em</code> +字身依墨色偏側溢出定位,於 CSS 盒模型重現 <code>halt</code> 之半形 advance(真 0.5em;相鄰標點各 0.5em、合佔 1em,無負 margin 之鄰接疊加/單側重疊)。模式由 <code>data-jz-halfwidth</code> 子樹屬性決定,可逐區塊/逐 <code>lang</code>(含 halt-island 反置)。</li>
|
||||
<li><strong>字形偏側表 <code>inkBias</code></strong>:依字身墨色中心給 <code>left/center/right/full</code>;彎引號/角括號/尖括號偏一側、圓方括號近中。參考表據方正書宋 GBK 實測,可經 <code>jiya.bias</code> 逐 <code>lang</code> 逐字覆寫。</li>
|
||||
<li><strong>字型適配工具與工作流</strong>:<code>tools/measure-bias.py</code>(量 glyph ink 中心、產偏側建議表)+文檔之「字型適配工作流」。<code>demo/fallback.html</code>:方正書宋 GBK 對照 halt 失效 vs margin 生效。</li>
|
||||
<li><strong><code>justifyAtoms</code> 選項</strong>:預設 <code>true</code>;設 <code>false</code> 時 <code>jz-char</code>/<code>jz-jinze</code> 改 <code>display:inline</code>,相容分頁器(Paged.js)之對齊引擎(<code>halt</code> 半形與禁則 <code>nowrap</code> 保留)。</li>
|
||||
</ul>
|
||||
|
||||
<h3>修復</h3>
|
||||
<ul>
|
||||
<li><strong>字型不覆寫消費端</strong>:<code>_lang.css</code> 之 Noto 字型堆疊改為純後備——全包 <code>:where()</code> 零特異度、只命中帶 <code>lang</code> 屬性之元素、不直接覆寫標點字面容器 <code>jz-inner</code>。消費端 <code>font-family</code> 恆優先,標點隨之以消費端字型渲染(修正先前標點被強制換成 Noto 之缺陷)。</li>
|
||||
<li><strong>pill 緊鄰標點之左緣間隙</strong>:<code>adjacentLogicalChar</code> 透明穿越 <code>jz-jinze</code>(同 <code>jz-hws</code>/樣式行內)→ pill 後接 CJK 標點時,左緣 <code>jz-hws</code> 與作者空格剝除復原。</li>
|
||||
<li><strong>CJK↔CJK 贅餘作者空格</strong>:含跨 inline 標籤者一律剝除、不留隙,與 CJK↔西文之邊界正規化一致(全形空格 U+3000 不動)。</li>
|
||||
</ul>
|
||||
|
||||
<h3>已知限制</h3>
|
||||
<ul>
|
||||
<li><code>margin</code> 後備半形依賴 <code>inline-block</code>(<code>width:0.5em</code>),與 <code>justifyAtoms:false</code> 不可兼得——分頁器場景請用含 <code>halt</code> 之字型。</li>
|
||||
<li><code>margin</code> 偏側為三檔量化(0/0.25/0.5em)之近似;字形極端者須以 <code>jiya.bias</code> 逐字微調。</li>
|
||||
</ul>
|
||||
|
||||
<h2>v2.0.0 <span class="badge accent">切片 1</span> · 從零重寫</h2>
|
||||
<p>依 <code>ARCHITECTURE.md</code> 契約,從零重寫為「現代簡/繁中文網頁排版套件」。倉庫名 <code>cjk-autospace</code> 不變;公開 API 為 <code>createJuzhen</code> /全域 <code>Juzhen</code>;自訂元素前綴 <code>jz-</code>。v1 完整保留於 <code>v1-autospace</code> 分支。</p>
|
||||
|
||||
<h3>新增</h3>
|
||||
<ul>
|
||||
<li><strong>核心引擎</strong>:<code>finder</code>(遍歷/avoid/<code>scope.include</code>/邏輯 run/pill 鄰字/分塊閘 <code>featureEnabledFor</code>)、<code>unicode</code>(字元表+標點子類+字形側位)、<code>locale</code>(語言分類+全角/開明政策)、<code>dom</code>(<code>jz-*</code> 工廠+可還原標記)、<code>pass</code> 聚合管線。</li>
|
||||
<li><strong>中西間隙</strong>(margin 模型):包裹邊界左側字、以 <code>margin-right</code> 留隙,<strong>不注入空白字元</strong> → <code>textContent</code> 完全不變、複製緊湊、<code>justify</code> 不暴增、不撐框、行首乾淨。<code>gapTrim</code> layout pass 行末去隙以齊右。</li>
|
||||
<li><strong>標點擠壓</strong>:全角式/開明式/半角式,三機制(baseline 政策+行內連續擠壓+行端擠壓)。半形以字型 OpenType <code>halt</code> 渲染。全域 <code>lang.style</code> +逐 <code>lang</code> <code>policy</code>。</li>
|
||||
<li><strong>禁則(避頭尾)</strong>:閉類/點號綁前一字、開類綁後一字,以詞元為邊界、長引文中段可斷;兼作 <code>justify</code> 綁定。</li>
|
||||
<li><strong>長英文詞</strong>:<code><span lang></code> + <code>hyphens</code> 原生斷詞。</li>
|
||||
<li><strong>justify 句末單份間距</strong>:<code>jz-char</code> inline-block 原子化。</li>
|
||||
<li><strong>v1 相容層</strong>:<code>createCjkAutospace().apply()</code> 映射;IIFE 全域別名。</li>
|
||||
<li><strong>構建/測試</strong>:esbuild(ESM/IIFE/CSS)+ tsc(d.ts);jsdom 測試;<code>demo/</code> 簡繁並列+justify+標點寬度量測。</li>
|
||||
</ul>
|
||||
|
||||
<h3>相對 v1 之改進</h3>
|
||||
<ul>
|
||||
<li>中西間隙複製乾淨(<code>textContent</code> 不變;v1 之 <code><span></code> 真實空格會被選取)。</li>
|
||||
<li>擠壓由「<code>halt</code> 套整段=半角式」進化為依 <code>lang</code> 之全角/開明/半角,且加入行內連續與行端擠壓。</li>
|
||||
<li>新增禁則避頭尾、justify 句末單份間距、跨瀏覽器一致策略與顯式禁用層。</li>
|
||||
</ul>
|
||||
|
||||
<h2>v1(cjk-autospace) · v1-autospace 分支</h2>
|
||||
<p>Pangu.js v7.2.1 風格之 CJK↔Latin 邊界自動間距 shim,工廠 <code>createCjkAutospace(options).apply(root)</code>。</p>
|
||||
<ul>
|
||||
<li>Pass A:跨樣式邊界中西間隙(marker span 含真實空格 + <code>user-select:none</code>)。</li>
|
||||
<li>Pass B:pill(<code>code</code>/<code>kbd</code>)邊界間隙。</li>
|
||||
<li>Pass C:長英文詞 <code><span lang></code> + <code>hyphens</code>。</li>
|
||||
<li>Pass D:開明式標點擠壓(句內點號 <code>font-feature-settings:"halt"</code> 半形)。</li>
|
||||
</ul>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="page">
|
||||
<p>本頁由聚珍排版工程記錄。所有文檔操作均於 docs 分支進行;main 僅存一份未追蹤之本地鏡像。</p>
|
||||
</footer>
|
||||
|
||||
<!-- RUNTIME_SPRITE -->
|
||||
|
||||
<script type="text/markdown" id="md-source">
|
||||
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
|
||||
|
||||
## v2 切片 1 · 增補(2026-06)
|
||||
|
||||
### 新增
|
||||
- 標點半形 margin 後備模式(缺 halt 字型):jiya.halfWidth "halt"|"margin";margin 以 width:0.5em+字身偏側溢出定位重現 halt。模式由 data-jz-halfwidth 子樹屬性決定。
|
||||
- 字形偏側表 inkBias(left/center/right/full),jiya.bias 逐 lang 逐字覆寫。
|
||||
- tools/measure-bias.py 字型偏側量測+字型適配工作流;demo/fallback.html。
|
||||
- justifyAtoms 選項(false → jz-char/jz-jinze 改 inline,相容 Paged.js)。
|
||||
|
||||
### 修復
|
||||
- _lang.css 字型堆疊改純後備(:where 零特異度、只命中 [lang] 元素、不覆寫 jz-inner)→ 消費端字型恆優先。
|
||||
- adjacentLogicalChar 透明穿越 jz-jinze → pill 緊鄰標點之左緣間隙與作者空格剝除復原。
|
||||
- CJK↔CJK 贅餘作者空格(含跨 inline 標籤)剝除不留隙。
|
||||
|
||||
### 已知限制
|
||||
- margin 後備與 justifyAtoms:false 不可兼得(分頁器場景用 halt 字型)。
|
||||
|
||||
## v2.0.0 切片 1 · 從零重寫
|
||||
|
||||
依 ARCHITECTURE.md 從零重寫。公開 API createJuzhen/全域 Juzhen,前綴 jz-。
|
||||
|
||||
- 核心引擎 finder/unicode/locale/dom/pass。
|
||||
- 中西間隙(margin 模型,copy-clean)+gapTrim 行末去隙。
|
||||
- 標點擠壓 全角/開明/半角,三機制,半形 halt。
|
||||
- 禁則避頭尾+justify 綁定;長英文詞;justify 句末單份間距;v1 相容層。
|
||||
|
||||
## v1(cjk-autospace,v1-autospace 分支)
|
||||
|
||||
Pangu 風格 CJK↔Latin 間距 shim。Pass A 中西間隙/B pill/C 長詞/D 開明擠壓。
|
||||
</script>
|
||||
|
||||
<!-- RUNTIME_JS -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user