鼠须管生僻字过滤

2025-10-15 23:35:31

鼠须管生僻字过滤

作为一个输入法,为避免「缺字」,鼠须管采用了大字符集,优先保障用户想要打的字都能打得出来。但这样做有一个副作用:由于多数的字体文件都只会覆盖一部分常用字,而不会针对生僻字耗费时间精力去设计字形,因此,会造成鼠须管的候选区内,总有不少难看的方框问号,像下图那样。

避免这个问题有两个办法:

安装超大字符集的字库,比如「花园明朝」

过滤掉这些生僻字,不让它们显示

在当前版本的鼠须管中,过滤生僻字的通用做法是:打开 enable_charset_filter,并在 engine/filters 内增加 cjk_minifier,即仅启用 CJK 基本集的两万九百多个汉字,来达到屏蔽生僻字的目的。

patch:

# double_pinyin_flypy.custom.yaml, 只对小鹤双拼生效

# ...

# 启用罕见字過濾

engine/filters:

- simplifier

- uniquifier

- cjk_minifier # 输入方案的 fitlers 内增加这一行

translator/enable_charset_filter: true # 并打开这个开关

# ...

但是,在尚未发布的开发版中,这个方法似乎不再适用了,于是我自己摸索了一个方法:将字典由 luna_pinyin 改为 pinyin_simp,并启用 zh_simp 来做繁简转换。

patch:

switches:

- name: ascii_mode

reset: 0

states: ["中文", "西文"]

- name: full_shape

states: ["半角", "全角"]

- name: zh_simp # 启用罕见字過濾 ※1

reset: 1

states: [ 漢字, 汉字 ]

- name: ascii_punct

states: ["。,", ".,"]

engine/filters:

- simplifier@zh_simp # 启用罕见字過濾 ※2

- uniquifier

translator/dictionary: pinyin_simp # 启用罕见字過濾 ※3

这一办法着实去掉了讨厌的问号方块,但不足也有两处:

繁简转换不够完美,比如:鎔

还有很多繁体字、生僻字,比如:開、开

后来,我提了一个 issue,并且很快得到了答复:原来新版演化出了更为灵活的字符集过滤。于是参考范例,结合自己的需求,做了如下配置:

patch:

switches:

- name: ascii_mode

reset: 0

states: ["中文", "西文"]

- name: full_shape

states: ["半角", "全角"]

- name: simplification # (※1) 繁简转换

reset: 1

states: [ 漢字, 汉字 ]

- name: ascii_punct

states: ["。,", ".,"]

- options: [utf8, gbk, gb2312] # (※2) 字符集选单

reset: 1 # 默认 GBK

states: # 可以通过切功能键,切至 UTF8 等超大字符集

- UTF-8

- GBK

- GB2312

engine/filters:

- simplifier

- uniquifier

- charset_filter@gbk # (※3) 默认 GBK

translator/dictionary: pinyin_simp # (※4) 并继续使用 pinyin_simp 字典

它不会冒出太多生僻字候选字,也不会再出现问号方块,「鎔」等繁简转换也会正常显示为「镕」,也不会再有「開、开」同时存在,需要时,还可以随时切换至大字符集(在 pinyin_simp 字典框架内),输入更多罕见字,甚至可以极端至 GB2312 的 6700 多个常用字。

新版「鼠须管」更好玩了。

最新发表
友情链接

Copyright © 2022 流光追月·网游特刊 All Rights Reserved.