问题描述
当字典词库的编码列包含“带调拼音”与“ASCII字符”的混合编码(例如:jiā'QQ)时,RIME 在尝试生成剩余编码提示(即 ~ 开头的注释)时会出现问题,。导致全角字符被切~ā'QQ
现象表现为:
- 程序崩溃(Crash);
原因分析
推测是 librime 在计算 remaining_code 长度并执行 substr 截取时,未能正确处理 UTF-8 多字节字符(带调拼音)与单字节字符(ASCII)混合后的字节偏移量。导致切分点落在了多字节字符的中间,破坏了字符结构。
复现示例
在 .dict.yaml 中添加:
前端
Fcitx5
自行规避策略
使用有规则的转写改写注释段,或者清空
comment_format:
- xform/^~.+$//
可能的程序规避建议
1、积极支持声调类字符,毕竟这与拼音与输入关系极大
2、检测到非法字符禁用剩余编码提示