-
Notifications
You must be signed in to change notification settings - Fork 4
输入方案管理
对于每一种输入方案,我们在发布时就将其 deploy 好,往服务器上传 deploy 后的文件,这样用户下载了就能立即使用。如果需要在 WebAssembly 里面去 deploy,可能会比较慢,因为 WebAssembly 的 IO 性能比较差。
为了方便方案的管理,我们把所有的方案集合到 schema-manifest 仓库下面的 default.xml 里面。运行 repo init -u https://gitlab.fydeos.xyz/fydeos-extensions/ime/schema-manifest
命令,就可以把所有方案的源代码全部下载下来。下载好后,我们在同一文件夹中 clone schema-builder 仓库,cd 进入 schema-builder,然后修改 do-build 文件中的 DEPLOYER
变量为对应的 rime_deployer 路径,然后运行这个脚本就可以开始 deploy。deploy 完成后,把 build-product 目录上传到 OSS 服务器,就可以让用户下载了。同时,也需要上传 schema-list.yaml 文件。
扩展在刷新方案列表时,会读取 schema-list,获取到所有方案的信息。
用户点击下载方案按钮后,我们首先在 build 目录中下载 <方案名>.schema.yaml 文件,这个文件是 deploy 后的文件,包含当前方案所有信息。然后,需要解析这个 yaml 文件,获取输入方案所有需要的词库。很多方案不仅仅需要主词库,还需要一些辅助词库(比如 rime_ice 的 melt_eng 英文词库,以及拼字反查的 liangfen词库),这些词库都需要下载,输入法才能正常工作。对于每个词库,下载时都要下载 <词库名>.table.bin 文件、<词库名>.prism.bin 文件和 <词库名>.reverse.bin。
除了词库文件外,方案可能会需要一些辅助文件,例如 lua 插件的脚本文件,以及 OpenCC 的转换文件。对于 lua 文件,由于 lua 插件固定只能使用 rime.lua 作为脚本的文件名,我们如果发现方案用到了 lua,会下载 rime.<方案名>.lua 文件。在加载方案时,再把这个文件复制为 rime.lua。对于 OpenCC 配置文件,我们对其进行解析,解析后同时会下载每个配置中所需的词典。
下载的方案文件同样使用 fs.ts 提供的 API,被保存到虚拟文件系统中。
RIME 的每页候选词个数配置存放于方案的 yaml 配置文件中。因此,每次启动 RIME 时,我们都会解析方案的 yaml 文件,把方案默认的 page_size 替换为用户选择的候选词个数。
对于模糊音配置,由于模糊音需要涉及到方案的 prism 修改,因此我们在每次用户修改配置的时候,都会编译生成一次方案主词典的 prism 文件。由于 prism 文件编译的速度很快,所以不会造成太大影响。
RIME 运行时,需要全局的 default.yaml 文件,但只会读取里面的 ascii_composer 配置(即 Shift 切换中英文输入)。目前插件会每次都写入一个固定的 default.yaml 文件。如果后面需要实现配置切换键(如将 Shift 修改为 Ctrl),就可以修改这部分逻辑。