refactor: 字型移出聚珍管理(移除 _lang.css),交消費端;半形顯式保留 locl
下游回饋之字型樹需求。決策:字型屬消費端領域,聚珍不應內建字型堆疊(原 _lang.css
之 Noto 後備係越權,且曾蓋掉消費端字型釀 bug)。採「完全移除、交消費端 CSS」(A 案),
否決「以參數管字型」(B 案——JS 管字型須注入 CSS、違反 JS 注入結構/CSS 給視覺之分工;
而缺 halt 字型須逐字型微調 margin 之指引,由既有 jiya.halfWidth/jiya.bias +文檔承擔)。
移除:
- 刪 src/css/_lang.css,juzhen.css 移除其 @import。dist/juzhen.css 現零 font-family
規則(3.1→2.5kb)。
聚珍保留之三項非管理性本分(確保不礙消費端字型與 locl):
- _normalize.css `jz-* { font: inherit }`:原子繼承消費端字型、不強加。
- _jiya.css 半形 font-feature-settings 顯式改 "locl" 1, "halt" 1(預設+halt-island 兩
處):確保泛 CJK 字型(思源/Noto CJK)之地域標點字形不因設 halt 而失。
- render 只讀不改 lang。body 文本之 locl 全由消費端字型+正確 lang 決定。
驗證(真實 Chromium):
- halt 模式:消費端逐 lang 字型生效並繼承至 jz-inner,無強制 Noto。
- margin 後備:半形盒 0.5em、字身依墨色偏側位移正確、jz-inner 繼承消費端字型、
feature normal(locl 既定開),皆不受字型移除影響。
- demo/index.html、resize-check.html 改示範「消費端逐 lang 設 font-family」之推薦範式;
fallback.html 更新註解。
- README 新增「字型與 locl」節+改寫 CSS 基礎設定字型項;ARCHITECTURE §6.9 改寫
(A 案決策、否決 B 案、三項本分)+檔案樹。
- test:新增 CSS 回歸(不內建 font-family、半形保留 locl)。57 測試通過。
- dist/ 重建(僅 juzhen.css 變動,JS 不變)。
This commit is contained in:
+17
-7
@@ -473,12 +473,22 @@ class 約定:`bd`(標點)、`bd-open/close/cop/stop/sep/liga`、`cjk`、`j
|
||||
- **我們**:基於原生 `<ruby>` + `jz-ruby/jz-rt` 處理注音符號直排與聲調定位。
|
||||
- **預留**:獨立 pass,`order=80`;不影響其餘。
|
||||
|
||||
### 6.9 樣式正常化/字體堆疊 — 貫穿(CSS)
|
||||
### 6.9 樣式正常化/字型歸屬 — 貫穿(CSS)
|
||||
|
||||
- **我們**:`juzhen.css` 內以 `:where()`(零特異度,易被消費端覆寫)提供 CJK
|
||||
normalize 與依 `:lang` 之 Noto Sans/Serif CJK SC/TC/HK/JP 字體堆疊。非破壞、
|
||||
opt-in(掛在 `.juzhen` 容器或 `[data-juzhen]` 下)。
|
||||
- **跨瀏覽器**:`:where()`/`:lang()` 普遍支援。
|
||||
- **normalize**:`juzhen.css` 內以 `@supports`/`:where()` 提供 CJK normalize(關閉
|
||||
與託管擠壓重複作用之原生 `text-spacing-trim`/`text-autospace`、間隙 `user-select`
|
||||
等),限 `.juzhen` 域、非破壞。
|
||||
- **字型不歸聚珍管(設計決策,下游回饋)**:曾內建依 `:lang` 之 Noto 字型堆疊作「後備」,
|
||||
但字型屬消費端領域、內建即越權(且曾蓋掉消費端字型釀 bug)。故**移除 `_lang.css`**,
|
||||
逐語言 `font-family` 完全交消費端 CSS。聚珍僅守三項非管理性本分:① `_normalize.css`
|
||||
之 `jz-* { font: inherit }` 使原子繼承消費端字型、不強加;② `_jiya.css` 半形之
|
||||
`font-feature-settings` 顯式併入 `"locl" 1`(連同 `halt`),確保泛 CJK 字型之地域標點
|
||||
字形不因設 halt 而失;③ render 只讀不改 `lang`。body 文本之 `locl` 本就不受聚珍影響
|
||||
(未設任何 feature),由消費端字型+正確 `lang` 決定。消費端範式見 README「字型與 locl」。
|
||||
- **B 案(字型參數)之否決**:以 JS 參數管字型須注入 CSS、違反「JS 注入結構/CSS 給視覺」
|
||||
分工;而「缺 halt 字型須逐字型微調 margin」之指引由既有 `jiya.halfWidth`/`jiya.bias`
|
||||
參數+文檔承擔,無需新參數。
|
||||
- **跨瀏覽器**:`:where()`/`:lang()`/`font-feature-settings` 普遍支援。
|
||||
|
||||
### 6.10 計數器/緊排(counter/well-knit)— 低優先
|
||||
|
||||
@@ -626,8 +636,8 @@ src/
|
||||
ruby.ts 注音/ruby [後續]
|
||||
css/
|
||||
juzhen.css 入口(@import 各 partial)
|
||||
_normalize.css _lang.css _spacing.css _jiya.css _jinze.css
|
||||
_hanging.css _emphasis.css _ruby.css
|
||||
_normalize.css _spacing.css _jiya.css _jinze.css
|
||||
_hanging.css _emphasis.css _ruby.css (字型不內建,交消費端)
|
||||
test/ jsdom DOM 正確性測試
|
||||
demo/ 瀏覽器 layout/justify/簡繁 目視驗證頁
|
||||
build.mjs esbuild:ESM + IIFE + CSS;tsc:d.ts
|
||||
|
||||
Reference in New Issue
Block a user