Pyfl 是一个 JavaScript / TypeScript 库,可以把「你好」转换为 NH,用于标题、通讯录和搜索索引。转换在本地完成,没有运行时依赖。现代入口支持词组规则和多读音搜索;默认入口保留原有字表,已有项目可以继续使用。
npm install pyfl沿用旧字表,已有索引无需迁移:
import pyfl from "pyfl";
pyfl("你好,世界"); // "NH,SJ"
pyfl("重庆"); // "ZQ",保持原结果从 2.1.0 起,现代入口提供 8,105 字的常用表和 36 条词组规则:
import modern from "pyfl/modern";
modern("重庆 / 音乐 / 银行 / 行走"); // "CQ / YY / YH / XZ"
modern("周末去 Tokyo 🐈"); // "ZMQ Tokyo 🐈"多读音搜索让不同读法的首字母都能匹配:
import matches from "pyfl/modern/common-search";
matches("重庆", "cq"); // true
matches("重庆", "zq"); // true支持 ESM、CommonJS 和 TypeScript;CommonJS 使用 require("pyfl").default,现代入口同样通过 .default 调用。需要 44,435 字的扩展表、不带词组的轻量入口或自定义读音,见现代入口指南。
- 默认
pyfl保留原有 20,902 字表;现代字表读音和覆盖范围不同,切换后应重建索引。 - 未收录字符原样保留。英文大小写、数字、标点和 emoji 保留;纯半角空格转为空串。
- 词组规则处理收录的常用词,不推断任意语境或姓名。多读音搜索匹配连续首字母,可能包含罕见读法,不代表选中了正确读音。
- 输出每字拼音的第一个字母,不输出完整拼音或
zh/ch/sh声母。
Node.js 22 / 24:npm ci 后运行 npm run check,完成类型、回归、构建和安装包检查。
旧字表来自 pinyinjs,现代字表由固定版本的 pinyin-data 生成。数据来源与许可见 THIRD_PARTY_NOTICES,版本变化见 CHANGELOG。
