Files
Jia Suiandfanlusky d414268b5f [Feat] U 模式重构为部件拆字反查 (#973)
* feat(engine,server,windows,ui-html,installer): U 模式重构为部件拆字反查 (#971)

把 U 模式从 Unicode 十六进制码位输入改成部件拆字反查:Shift+U 后输入各
组成部分的拼音连写(晶 = ririri)即可出字,候选上反显注音。

- 引擎:新增 local_modes/radical_query(前缀匹配、字频降序),数据表
  engine/radical/decomposition.txt 与生成脚本;LocalInputMode::Unicode
  改为 Radical;删除 unicode_query。
- Server:g_radical_mode_triggered + IsRadicalCompositionActive + 候选分发,
  用 cpp-pinyin 反显注音;删除 Unicode 码位路径。
- 前端 TSF:删除 U 模式的十六进制/数字特例与影子预判,按普通组合处理。
- 配置:utility.unicode_mode 改为 utility.radical_mode。
- 部署:assets 登记 radical_decomposition,安装器与 CI 拷表。

数据来源 mirtlecn/rime-radical-pinyin (GPL-3.0),授权见 engine/radical/NOTICE.md。

* feat(server): U 模式反显拼音改为带调风格(jīng)

* fix(server,installer): 修复 U 模式 CI(拆字表打包夹具与 clang-format)

* fix(engine,server): 修正 U 模式按键错位、重复候选与配置迁移

- Server 在 U 模式不再吞掉撇号、分号、斜杠、大写字母等键:TSF 已把它们记进按键缓冲,
  吞掉又不重同步会让两侧串和光标错位。照常插入,含非 a-z 的码查不出候选
- 拆字查询全码命中排在仅前缀命中之前,同一个字的几种拆法只出一次
- 升级合并把旧键 utility.unicode_mode 的值带到 utility.radical_mode,读取时也兜底旧键
- 生成脚本只收汉字,重建拆字表去掉 abc 码下的 51 行数字、字母与符号
- 开着 U 模式时在后台预热拆字表与 cpp-pinyin 词典,避开首个按键的冷加载
- Server 按会话的 RuntimePaths 查拆字表,删掉走全局数据目录的便捷重载
- cpp-pinyin 初始化合并到 utils/hanzi_pinyin,设置页导入注音共用;U 模式与快捷短语的收键分支合并

---------

Co-authored-by: fanlusky <1730976608@qq.com>
2026-10-16 01:01:18 +08:00

251 lines
5.5 KiB
JSON

{
"contract_version": 2,
"archive": "engine-assets-desktop.zip",
"manifest": "engine-assets-manifest.json",
"assets": [
{
"id": "main_dictionary",
"path": "msime.db",
"role": "mutable-copy",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "english_dictionary",
"path": "english.db",
"role": "mutable-copy",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "other_dictionary",
"path": "others.db",
"role": "resource",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "japanese_model",
"path": "dict_japanese.dat",
"role": "resource",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "japanese_notice",
"path": "mozc_dictionary_oss_README.txt",
"role": "notice",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "dictionary_manifest",
"path": "dictionary-manifest.json",
"role": "metadata",
"source": "dictionary",
"profiles": [
"desktop"
]
},
{
"id": "language_model",
"path": "sc.lm",
"role": "resource",
"source": "language-model/sc.lm",
"profiles": [
"desktop"
]
},
{
"id": "neural_model_desktop",
"path": "sentence-model-desktop.safetensors",
"role": "resource",
"source": "neural-model/sentence-model-desktop.safetensors",
"profiles": [
"desktop"
]
},
{
"id": "neural_model_keyboard",
"path": "sentence-model.safetensors",
"role": "resource",
"source": "neural-model/sentence-model.safetensors",
"profiles": [
"desktop"
]
},
{
"id": "notice_19",
"path": "licenses/chinese-ime-lm-NOTICE.md",
"role": "notice",
"source": "neural-model/NOTICE.md",
"profiles": [
"desktop"
]
},
{
"id": "pinyin_model",
"path": "dict_pinyin.dat",
"role": "resource",
"source": "googlepinyinime-rev/data/dict_pinyin.dat",
"profiles": [
"desktop"
]
},
{
"id": "translations",
"path": "custom_translations.txt",
"role": "resource",
"source": "dictionary/custom/translations.txt",
"profiles": [
"desktop"
]
},
{
"id": "helpcode_lantian",
"path": "helpcodes/helpcode.txt",
"role": "resource",
"source": "helpcode/helpcodes/helpcode.txt",
"profiles": [
"desktop"
],
"schema": "lantian"
},
{
"id": "helpcode_ziranma",
"path": "helpcodes/zrm_helpcode_big_unique.txt",
"role": "resource",
"source": "helpcode/helpcodes/zrm_helpcode_big_unique.txt",
"profiles": [
"desktop"
],
"schema": "ziranma"
},
{
"id": "helpcode_shouyou2_0",
"path": "helpcodes/shouyou2_0_helpcode.txt",
"role": "resource",
"source": "helpcode/helpcodes/shouyou2_0_helpcode.txt",
"profiles": [
"desktop"
],
"schema": "shouyou2_0"
},
{
"id": "helpcode_shouyouplus",
"path": "helpcodes/shouyouplus_helpcode.txt",
"role": "resource",
"source": "helpcode/helpcodes/shouyouplus_helpcode.txt",
"profiles": [
"desktop"
],
"schema": "shouyouplus"
},
{
"id": "helpcode_xiaohe",
"path": "helpcodes/xiaohe_helpcode.txt",
"role": "resource",
"source": "helpcode/helpcodes/xiaohe_helpcode.txt",
"profiles": [
"desktop"
],
"schema": "xiaohe"
},
{
"id": "helpcode_jiajia",
"path": "helpcodes/jiajia_helpcode.txt",
"role": "resource",
"source": "helpcode/helpcodes/jiajia_helpcode.txt",
"profiles": [
"desktop"
],
"schema": "jiajia"
},
{
"id": "notice_13",
"path": "licenses/googlepinyinime-LICENSE",
"role": "notice",
"source": "googlepinyinime-rev/LICENSE",
"profiles": [
"desktop"
]
},
{
"id": "notice_14",
"path": "licenses/helpcode-NOTICE.md",
"role": "notice",
"source": "helpcode/NOTICE.md",
"profiles": [
"desktop"
]
},
{
"id": "notice_15",
"path": "licenses/dictionary-NOTICE.md",
"role": "notice",
"source": "dictionary/NOTICE.md",
"profiles": [
"desktop"
]
},
{
"id": "notice_16",
"path": "licenses/Engine-NOTICE.md",
"role": "notice",
"source": "NOTICE.md",
"profiles": [
"desktop"
]
},
{
"id": "notice_17",
"path": "licenses/Engine-LICENSE",
"role": "notice",
"source": "LICENSE",
"profiles": [
"desktop"
]
},
{
"id": "notice_18",
"path": "licenses/libime-lm-NOTICE.md",
"role": "notice",
"source": "language-model/NOTICE.md",
"profiles": [
"desktop"
]
},
{
"id": "radical_decomposition",
"path": "radical/decomposition.txt",
"role": "resource",
"source": "radical/decomposition.txt",
"profiles": [
"desktop"
]
},
{
"id": "user_journal",
"path": "msime_user.db",
"role": "user",
"profiles": []
},
{
"id": "pinyin_user_dictionary",
"path": "user_dict.dat",
"role": "user",
"profiles": []
}
]
}