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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions