From b5ac89b68768978bd739c9813b56335de966bccf Mon Sep 17 00:00:00 2001 From: commilitia Date: Tue, 26 May 2026 16:54:02 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20Pass=20C=20=E2=80=94=E2=80=94=20?= =?UTF-8?q?=E9=95=B7=E8=8B=B1=E6=96=87=E6=AE=B5=20lang=20=E5=8C=85?= =?UTF-8?q?=E8=A3=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CHANGELOG 記新項:Pass C 預設啟用之動機(避開原模板 wbr 每 6 字元亂 插之兩個觀感問題:斷點位置與音節無關、斷處不顯連字符),實作要點, 與字型陷阱(CJK serif 把 U+2010 設計為全形 1 em,須消費端加 hyphenate-character: "-" 強制 U+002D)。 index 加 Pass C 完整章節(演算法、消費端 CSS、選取潔淨性、不在範圍 之識別符 / URL);lede 與 attribution 段同步更新雙 pass → 三 pass。 --- CHANGELOG.html | 449 ++++++++++++++++++++++++++++++-------------- CHANGELOG.src.html | 34 ++++ index.html | 456 ++++++++++++++++++++++++++++++--------------- index.src.html | 41 +++- 4 files changed, 686 insertions(+), 294 deletions(-) diff --git a/CHANGELOG.html b/CHANGELOG.html index 3e071ea..79440d9 100644 --- a/CHANGELOG.html +++ b/CHANGELOG.html @@ -1,4 +1,4 @@ - + @@ -312,6 +312,28 @@ user-select: none; } +/* Pass C 配套:cjk-autospace lib 把長英文段包進 ,此處 + 讓瀏覽器原生 hyphens: auto 用 en 字典做斷詞 + 渲染連字符。連字符純 + 視覺(DOM 不存在),複製返回原文無污染。 + + hyphenate-limit-chars: 6 3 3 — 詞長 ≥6、斷點前/後各 ≥3 字符,避免 + 把 "before" 斷成 "be-fore" 之類粒度過細之結果。Safari/Firefox 對此 + 屬性支援不全,未生效時退至各家瀏覽器之默認啟發。 + + hyphenate-character: "-" — 強制斷字符為 U+002D HYPHEN-MINUS(窄拉丁 + 寬度)而非預設之 U+2010 HYPHEN。Noto Serif CJK SC 把 U+2010 設計為 + 全形 CJK 標點(1 em,等於一個中文字寬度)以服務 CJK 範圍表達,但 + 用在英文斷字會視覺斷裂;U+002D 在同字型中為窄拉丁,與作者鍵入的 - + 一致。仍為純視覺渲染,DOM 與剪貼簿不受影響。 */ +[lang|="en"] +{ + hyphens: auto; + -webkit-hyphens: auto; + hyphenate-limit-chars: 6 3 3; + hyphenate-character: "-"; + -webkit-hyphenate-character: "-"; +} + /* Default two-sided justified alignment for any multi-line prose / data container in CJK lang. Auto-applies — no class required. Principle: text that wraps to 2+ lines should justify regardless of tag (table @@ -1880,6 +1902,102 @@ header.page .actions main { padding-top: var(--gap-xl); padding-bottom: var(--gap-xl); } +/* ---------- Table of Contents (opt in via body[data-toc]) ---------- + Runtime 由 behavior.js 之 setupToc 注入