Skip to content

中文模式下,数字后的标点不应该自动转换为半角 #972

@oTnTh

Description

@oTnTh

目前在rime的中文模式下,数字字符后的句号(“。”)会被自动转换为半角的小数点,而且这是一个无法关闭的默认行为。

相关代码在75行:https://github.com/rime/librime/blob/master/src/rime/gear/punctuator.cc

  if (ch == '.' || ch == ':') {  // 3.14, 12:30
    const CommitHistory& history(ctx->commit_history());
    if (!history.empty()) {
      const CommitRecord& cr(history.back());
      if (cr.type == "thru" && cr.text.length() == 1 && isdigit(cr.text[0])) {
        return kRejected;
      }
    }
  }

这样的设计需要满足一个条件:在中文里,数字符号不可能出现在句尾。

但是这个假设并不成立,以下是我从个人笔记里翻出来的一些句子:

  • 2022-06-18,到手价102.95,斤价429。
  • 画面还可以,但是卡顿很多,帧率会从60直接掉到0。
  • 家里虽然有延长线,应该都不支持USB 3.0。
  • XX市XX路,姓名,189XXXX。
  • 先升级到越狱比较简单点的版本,5.10.3。
  • 最后还是买了个K60。
  • 第一个4G的fat32,剩下的则格式化为ext3。

或许给用户提供一个选项会是一个更好的处理方式,诸如punctuator/half_shape_after_number之类的?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions