用途:对多语言正文实施规范排版,覆盖引号、破折号、空格、省略号等,适用于俄语、英语(en-US/en-GB)、德语、法语(另支持 uk、pl 等)。
主要能力:通过 scripts/typo.js 调用 typograf(固定配置)并附加德语、法语补充规则。默认 locale 链为 ru,en-US。各语言行为:ru 使用«ёлочки»及嵌套„лапки“、—前不换行空格、5-6→5–6、短前置词与 № 后不换行空格、...→…、т.е.→т. е.;en-US/en-GB 使用弯引号与嵌套,连字符转长破折号并输出 …;de 用„Gänsefüßchen“,连字符转 –;fr 用« guillemets »(内部 U+202F)、tiret —、在 ! ? ; : 前加细不换行空格,URL 如 https:// 不动。
必要用法:首次运行若 scripts/node_modules 缺失,执行 cd <skill-dir>/scripts && npm install。stdin 到 stdout:echo '"Привет" - мир' | node <skill-dir>/scripts/typo.js;指定 locale:node <skill-dir>/scripts/typo.js --locale=de file.md,或 --locale=fr,en-US file.md(首项为主)。就地修改与检查:node /scripts/typo.js --in-place --locale=en-US file1.md file2.md;node /scripts/typo.js --diff file.md;node /scripts/typo.js --check src/**/*.md(需改动时退出 1 并列出)。HTML 实体输出:--html-entities file.html。保守模式(仅引号/破折号/空格):--safe file.md。
悬挂标点(可选):三种路线——不可改标记时复制 assets/hang-punctuation.js 并在页面加载,可用 window.HANG_PUNCT = { selector: '...' } 配置,运行时改写文案后调用 window.HangPunct.refresh();可改标记且为俄语文本时用 typo.js --optalign(仅 HTML),并引入 assets/optalign.css,注意其输出对已加 span 的文件与 --check 不幂等,宜作构建步骤;零改动基线为在正文容器加 hanging-punctuation: first allow-end;(当前仅 Safari 生效)。
适用场景:正文、Markdown、HTML 文本的排版规范与仓库级批量修复。
限制:仅用于正文/文档文本,不得用于源代码;i18n 字符串文件需只处理字符串内容或在 --in-place 后经构建验证;混合语言内容应分语言分别处理;工具具幂等性,若第二次运行仍改变输出应视为缺陷而非手工修正。修改规则应编辑 scripts/typo.js 中的 makeTypograf()/postProcess() 以保持行为固定。