3a4fa1c932
保留逐字 margin/jiya.bias 字体后备方案;补齐 demo 重排、量测边界说明及共享规则 1.0.1 反例向量。 验证:完整构建通过,Node 376 项、WKWebView 64 项及原生 demo 9 项通过;Firefox 仍暂缓。
42 lines
2.1 KiB
TypeScript
42 lines
2.1 KiB
TypeScript
/** 標點寬度政策。 */
|
||
export type PunctStyle = "quanjiao" | "kaiming" | "banjiao";
|
||
/** 語言分類。 */
|
||
export type LangClass = "zh-Hans" | "zh-Hant" | "ja" | "other";
|
||
/** 按選擇器逐元素覆寫標點樣式之規則(§4.3;如非段落/UI 元素用半角式)。 */
|
||
export interface StyleRule {
|
||
selector: string;
|
||
style: PunctStyle;
|
||
}
|
||
export interface LocaleConfig {
|
||
/** 無 lang 祖先時之預設語言。 */
|
||
default: string;
|
||
/** 全域標點擠壓預設(全角/開明/半角)。設則覆寫內建之逐語言預設,
|
||
* 但仍可被 policy 之逐 lang 設定覆寫。未設則回退內建預設。 */
|
||
style?: PunctStyle;
|
||
/** 語言分類 → 標點寬度政策之逐 lang 覆寫。 */
|
||
policy: Partial<Record<LangClass, PunctStyle>>;
|
||
/** 按選擇器**逐元素**覆寫標點樣式(優先於 lang;與 `data-jz-style` 屬性同一機制)。
|
||
* 近祖先勝、同層屬性優先於選擇器。空/未設則不覆寫、純由 lang 決定。 */
|
||
stylePolicy?: StyleRule[];
|
||
}
|
||
/**
|
||
* 由節點(含元素自身)向上找最近 lang,回傳小寫值;空值表示語言未知,僅缺失時回退。
|
||
*/
|
||
export declare function effectiveLang(node: Node, fallback: string): string;
|
||
/**
|
||
* 將 BCP-47 語言標籤歸類。前綴以子標籤邊界比對('zh-tw' 命中 zh-Hant,
|
||
* 'zhx' 不命中 zh)。只讀 BCP-47 的 script/region 位置,不把 extension/private-use
|
||
* 內容當成腳本或地區;本函數不是完整標籤驗證器。
|
||
*/
|
||
export declare function classify(lang: string): LangClass;
|
||
/**
|
||
* 回傳該語言分類在給定 config 下之標點寬度政策。優先序:
|
||
* 逐 lang policy > 全域 style > 內建逐語言預設 DEFAULT_POLICY。
|
||
*/
|
||
export declare function styleFor(langClass: LangClass, config: LocaleConfig): PunctStyle;
|
||
/**
|
||
* 解析節點之有效標點樣式。優先序:**逐元素覆寫**(`data-jz-style` 屬性/`stylePolicy`
|
||
* 選擇器,近祖先勝)> 逐 lang `policy` > 全域 `style` > 內建逐語言預設。
|
||
*/
|
||
export declare function resolveStyle(node: Node, config: LocaleConfig): PunctStyle;
|