Files
cjk-autospace/rules

聚珍共享規則

本目錄是聚珍跨平台排版語義的機讀權威來源。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。

變更協議

任何規則變更須在同一變更集中完成以下事項:

  1. 更新 canonical JSON 及必要的 schema;
  2. 新增或修訂能暴露行為差異的黃金向量,不以刪除反例來換取通過;
  3. 更新 Web adapter 的對照測試;未來其他 adapter 亦須執行同一批語義向量;
  4. 說明版本提升級別、相容性與 Unicode 依據;
  5. 通過 Ajv 2020 strict schema 驗證、內部常數漂移檢查與全部 adapter 測試後方可發佈。

字符覆寫固定為追加語義:不得經 override 移除或重分類內置字符。若未來需要破壞此 規則,屬 major 變更,須先作產品政策決策,不能由單一 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 必須公開 同名選項或未來功能介面已定案。