iDvel / rime-ice

Rime 配置:雾凇拼音 | 长期维护的简体词库
https://dvel.me/posts/rime-ice/
GNU General Public License v3.0
9.26k stars 617 forks source link

对中文和英文标点符号的支持还不够完善 #570

Closed Winson-Huang closed 10 months ago

Winson-Huang commented 10 months ago

在 RIME 自带的拼音输入法中,可以通过重复键入键盘上的标点符号键位来选择不同的标点符号,但实际上选择也比较有限。在 rime-ice 中,中文环境下半角的标点符号是直接上屏,所以能够输入的标点符号就更少了。我查看了中文词库文件和 opencc 中的词库文件,发现与标点符号相关的条目也比较少。我还查看了 symbols 文件,也就是能够使用 v 模式键入的符号,其中明确地与标点符号相关的条目也只有以下两行:

  'vbd': [ 、, 。, 「, 」, 『, 』, 【, 】, 〈, 〉, 《, 》, ₋, ⁻, ―, ˗, ˉ, _, ﹍, ﹎, ., ¡, ‼, ⁉, ¿, ؟, ⁈, ⁇, 、, 。, 〃, 〄, 々, 〆, 〇, 〒, 〓, 〔, 〕, 〖, 〗, 〘, 〙, 〚, 〛, 〜, 〝, 〞, 〟, 〠, 〰, 〱, 〲, 〳, 〴, 〵, 〶, 〷, 〻, 〼, 〽 ]
  'vbdz': [ ﹅, ﹆, ﹁, ﹂, ﹃, ﹄, ︙, ︱, ︻, ︼, ︗, ︘, ︵, ︶, ︷, ︸, ︹, ︺, ︿, ﹀, ︽, ︾, ︰, ︲, ︳, ︴, ﹉, ﹊, ﹋, ﹌, ﹍, ﹎, ﹏, ﹇, ﹈, ︐, ︑, ︒, ︔, ︕, ︖ ]

这种方案在日常场景中可能已经够用了,但实际上关于英文/中文标点符号在一些微妙的场景下需要更精准的控制,而以上符号集合不仅有所缺失,并且没有按照一定的逻辑进行整理。参见别再用「六个点」当省略号了,这些标点都有更规范的输入方式,有相当一些标点符号是无法直接从现存方案中打出的,比如角分符号(U2032)、单体的破折号(U2E3A)以及多种连接符。我很希望在 rime-ice 中能够方便地输入这些标点符号,幸好,在这篇文章中提到 W3C 的一篇关于中文排版的草案已经对中文标点符号做了非常细致的梳理,如果作者也认为这个 feature 有必要加入,可以按照梳理的结果向 v 模式中分类添加这些标点,这样输入标点时会更有逻辑。我也很乐意直接提交 PR。

参考中英混排中的标点符号问题,其中提到英文标点主要集中在 C0 Controls and Basic Latin 区块和 General Punctuation 区块,前者属于 ASCII 码表可以直接用键盘输入,后者则与中文标点共享码位,而中文标点除了 General Punctuation 区块,在 CJK Symbols and Punctuation 区块中也有一部分。这些标点大部分已经被前述中文标点梳理所覆盖,但仍有部分遗漏,可考虑对 General Punctuation 区块和 CJK Symbols and Punctuation 区块中未被覆盖的标点做进一步的梳理。

题外话:除了中英文标点外,还有一些特殊符号个人认为也应该加入 rime-ice,比如 Braille Patterns 区块表示的盲文符号等。

iDvel commented 10 months ago

👍 可以的。

我觉得还可以直接把 punctuator/full_shape 给替换掉,改为一套不直接上屏的、可复选的、符合规范的完整标点。 half_shape 依然保留目前的简单的直接上屏的一套,用户切换也方便。

Winson-Huang commented 10 months ago

切换全角半角符号的快捷键是什么?我使用 fcitx5 发现 fcitx5 中设置的 Control + 句号不起作用。

iDvel commented 10 months ago

这个应该是由 Rime 来控制的。 可以用方案选单切换,全半角的快捷键 default.yaml 里没开: https://github.com/iDvel/rime-ice/blob/f713486e4da633f30b4867098e23f88047dd9282/default.yaml#L207

Winson-Huang commented 10 months ago

明白了,也可以自己在 default.custom.yaml 里边把这个快捷键打开来。我刚才也理解得有问题,fcitx 里边 Ctrl + 句号切换的是中英标点,跟讨论的内容没关系。

Winson-Huang commented 10 months ago

我想了一下,暂时还是添加到 v 模式中,感觉这个 feature 和“全半角切换”的联系并不是很大,并且全半角切换即使使用快捷键也会造成不连贯,而直接用 v 模式在输入时就比较流畅。不管怎样这两种方式不冲突,如果你觉得有必要也可以再把这些标点添加到 punctuator/full_shape 中。

Winson-Huang commented 10 months ago

另外我注意到 symbols_caps_v 中似乎没有添加 symbols_v 中 line252 之后的 v 列表,具体原因是什么呢?如果方便的话我希望两者能尽量保持同步。

iDvel commented 10 months ago

因为后面的拼写是全拼,不适用于双拼,那几个是很早的时候添加的,用 emoji 其实也可以打出来。 emoji 集合直接放到拼音词库 rime_ice.dict.yaml 中了,双拼能自适应。

Winson-Huang commented 10 months ago

哦,好吧,那我把标点符号同步到双拼