Files
cjk-autospace/docs/changelog.src.html
T
admin 92c37cf63e docs: 聚珍 HTML 文檔(使用文檔+變更紀錄)
docs 分支僅含文檔,與程式碼歷史脫鉤(orphan,無 src/dist 等舊實現之提交)。
以 HTML manifest 模板(report 模式)構建為自含單檔,無外部依賴。

- docs/index.html  使用文檔:安裝/用法/功能/選項/halt 與 margin 後備/
  字型偏側與配字工作流/CSS 基礎設定/分頁器相容/v1 相容。
- docs/changelog.html  變更紀錄。
- *.src.html 為可編輯之文檔源。

程式碼正本與其歷史在 main;本分支不記錄任何實現。
2026-06-02 01:41:35 +08:00

128 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>leftcenterrightfull</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>&lt;span lang&gt;</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>esbuildESMIIFECSS)+ tscd.ts);jsdom 測試;<code>demo/</code> 簡繁並列+justify+標點寬度量測。</li>
</ul>
<h3>相對 v1 之改進</h3>
<ul>
<li>中西間隙複製乾淨(<code>textContent</code> 不變;v1 之 <code>&lt;span&gt;</code> 真實空格會被選取)。</li>
<li>擠壓由「<code>halt</code> 套整段=半角式」進化為依 <code>lang</code> 之全角/開明/半角,且加入行內連續與行端擠壓。</li>
<li>新增禁則避頭尾、justify 句末單份間距、跨瀏覽器一致策略與顯式禁用層。</li>
</ul>
<h2>v1cjk-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 Bpill<code>code</code><code>kbd</code>)邊界間隙。</li>
<li>Pass C:長英文詞 <code>&lt;span lang&gt;</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 聚珍Juzhencjk-autospace
## v2 切片 1 · 增補2026-06
### 新增
- 標點半形 margin 後備模式 halt 字型jiya.halfWidth "halt"|"margin"margin width:0.5em字身偏側溢出定位重現 halt模式由 data-jz-halfwidth 子樹屬性決定
- 字形偏側表 inkBiasleft/center/right/fulljiya.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 緊鄰標點之左緣間隙與作者空格剝除復原
- CJKCJK 贅餘作者空格含跨 inline 標籤剝除不留隙
### 已知限制
- margin 後備與 justifyAtoms:false 不可兼得分頁器場景用 halt 字型
## v2.0.0 切片 1 · 從零重寫
ARCHITECTURE.md 從零重寫公開 API createJuzhen全域 Juzhen前綴 jz-
- 核心引擎 finderunicodelocaledompass
- 中西間隙margin 模型copy-cleangapTrim 行末去隙
- 標點擠壓 全角開明半角三機制半形 halt
- 禁則避頭尾justify 綁定長英文詞justify 句末單份間距v1 相容層
## v1cjk-autospacev1-autospace 分支
Pangu 風格 CJKLatin 間距 shimPass A 中西間隙B pillC 長詞D 開明擠壓
</script>
<!-- RUNTIME_JS -->
</body>
</html>