保留逐字 margin/jiya.bias 字体后备方案;补齐 demo 重排、量测边界说明及共享规则 1.0.1 反例向量。 验证:完整构建通过,Node 376 项、WKWebView 64 项及原生 demo 9 项通过;Firefox 仍暂缓。
聚珍共享規則
本目錄是聚珍跨平台排版語義的機讀權威來源。Web/CSS 實作與未來其他 adapter
都應以 juzhen-rules.json 為準;程式內常數不得另立一套未經
驗證的規則。golden-vectors.json 則固定跨 adapter 必須得到的語義結果,向量只描述
字符分類、間距、禁斷與段末保字等結果,不指定 DOM 結構或 CSS 技巧。
檔案
juzhen-rules.json:版本化的共享規則資料。juzhen-rules.schema.json:JSON Schema 2020-12,約束共享規則格式。golden-vectors.json:跨平台黃金向量。golden-vectors.schema.json:JSON Schema 2020-12,約束向量格式。
套件公開子路徑分別為 cjk-autospace/rules、cjk-autospace/rules/schema、
cjk-autospace/rules/vectors 與 cjk-autospace/rules/vectors-schema。
版本
schemaVersion 是整數格式版本;讀取器遇到不認識的值必須拒絕,不得猜測。
rulesetVersion 採語義化版本:
- patch:澄清文字或新增不改變既有結果的向量;
- minor:向後相容地擴充字符或新增可選語義;
- major:既有輸入的分類、間距、禁斷、預設政策或 adapter 義務改變。
Unicode profile 另行記錄。更新 Unicode 範圍時,即使 JSON 結構不變,也必須同步提升
rulesetVersion、補向量並驗證所有 adapter。
變更協議
任何規則變更須在同一變更集中完成以下事項:
- 更新 canonical JSON 及必要的 schema;
- 新增或修訂能暴露行為差異的黃金向量,不以刪除反例來換取通過;
- 更新 Web adapter 的對照測試;未來其他 adapter 亦須執行同一批語義向量;
- 說明版本提升級別、相容性與 Unicode 依據;
- 通過 Ajv 2020 strict schema 驗證、內部常數漂移檢查與全部 adapter 測試後方可發佈。
字符覆寫固定為追加語義:不得經 override 移除或重分類內置字符。若未來需要破壞此 規則,屬 major 變更,須先作產品政策決策,不能由單一 adapter 私自實作。
1.0.1 語言契約澄清
zh-explicit-script 及 zh-traditional-region 指 BCP 47 的 script/region 位置,
不能從 extension/private-use 內容搜尋同名字串。Web 曾把 zh-Hans-x-hant 誤判成
繁體,現修正為簡體;空語言標籤歸 other。新增七個反例向量,既有 55 個向量結果、
字符集合、預設政策、schema 與 adapter 義務均未改,故依上述 patch 規則升為 1.0.1。
HTML 如何繼承 lang 是 Web adapter 契約,不寫入共享規則。未來 adapter 仍須通過
全部 62 個向量;本次未驗收其他 adapter。
Adapter 邊界
字符集合一律以大寫十六進位 Unicode code point 的閉區間/單點表示;陣列須按起點 遞增、彼此不重疊。adapter 可序列化成自身所需的 regex、查表或其他等價結構,但該 序列化不是 canonical 格式。
共享層只定義平台中立結果:Unicode 字符類、base+至多一枚 VS 的邏輯 atom、locale 分類與政策、標點半形語義、中西間距與作者空格處置、禁斷關係、段末保字數、功能級別 及語義依賴。
adapter 的節點表示、ownership/revert 帳務、渲染原語、生成式斷行提示、重跑生命
週期、layout 量測與平台 workaround 均不屬共享規則。例如 Web 目前可使用 jz-* DOM、
CSS margin/OpenType halt 與 MutationObserver;未來 TeX 類 adapter 也可能選擇 node、
glue、penalty 或 macro。這些都只是非規範示例,adapter 可採任何能通過黃金向量的
機制,不得把示例反寫為 canonical 要求。
Web 目前保留的 hanging/biaodian/emphasis/ruby 相容 no-op 亦屬
非規範 adapter 相容性資訊,不列入 canonical 規則,也不代表其他 adapter 必須公開
同名選項或未來功能介面已定案。