Closed yisibl closed 4 months ago
在 #208 中新增了 polyphonic
字段支持该功能
我看到目前新增的 polyphonic
字段是一个数组 https://github.com/zh-lx/pinyin-pro/commit/2fd861fc4d2b9a1ee70fd7618da89cd249fb5bb8#diff-2bac67505471502a69cd648252b7abb10b354f6f4daaf451976c012b630e0bbeR185
这会增加一些遍历成本,我其实更希望这个字段是一个布尔值,具体的有几个读音可以单独获取,这样不影响第一次的渲染效率。
理想情况下,API 可考虑如下设计:
isPolyphonic
判断某个字是否为多音字,不包含变调的字,因为变调字并不是多音字。isToneSandhi
判断某个字的读音在当前上下文中是否产生了变调。最终字多音字的读音还是统一通过 polyphonic()
获取:
polyphonic()
增加布尔选项 toneSandhi
,默认 false,只有 true 的时候才返回所有的变调读音。import { polyphonic } from 'pinyin-pro';
const resultString = polyphonic('一', { toneSandhi: true, } ); // 返回所有读音包含变调读音:['yī', 'yí', 'yì']
const resultAll = polyphonic('一', { type: 'all', toneSandhi: true, }); // 为变调读音输出单独的字段标识。
经测试目前在 type: all
模式下添加 polyphonic
后对性能整体影响不是很大(不到1/10),主要原因是 type: 'all'
中有部分其他信息影响了性能。考虑出一个针对 type: 'all'
的单独要获取的信息的配置。
考虑出一个针对 type: 'all' 的单独要获取的信息的配置。
这个可以有,因为 pinyin()
函数默认还是尽量保持更高效为好,我找不到在这个 API 一次性输出所有读音的使用场景。
另外,轻声也不是多音字,可能也需要单独的标记字段。
功能描述
通过新增一个多音字标记字段,可以快速知道哪些是多音字,进而再通过单独的
polyphonic
函数来获取每个多音字的所有读音。