Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Feat] 希望speller/algebra 拼运支持Unicode字符 #865

Open
Newdea opened this issue Apr 20, 2024 · 5 comments
Open

[Feat] 希望speller/algebra 拼运支持Unicode字符 #865

Newdea opened this issue Apr 20, 2024 · 5 comments

Comments

@Newdea
Copy link

Newdea commented Apr 20, 2024

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
目前想用五笔拆分表做码表,通过拼运将拆分字根转换为正常的[a-y]按键。部署时没有报错,使用RimeSpellTool 检查也是正常的,可以成功转换出字母。但方案无法正常输出候选字,都是空码

方案拼运大致如下:
image

拆分码表
image

RimeSpellTool转换检查
image

输出是空码,无候选
image

Describe the solution you'd like
A clear and concise description of what you want to happen.
判断应该是librime在处理中,把拆分字根给过滤掉了,speller/algebra 拼运没能成功转换,导致输出显示都是空码,无候选。
支持非ascii字符编码模式 中也提出了这个问题。

希望speller/algebra 拼运支持Unicode字符,以正常处理转换码表的code列。

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
另外,希望拼运能支持条件判断,如对某一个码表使用一部分拼运,对另一个码表使用另一部分拼运。例如,有一个完整的单字拆分码表A,另有一个二简码表(无拆分,只有text),针对二简码表中的字,可根据完整拆分码表A的四码code 进行拼运,转换出二码的code

Additional context
Add any other context or screenshots about the feature request here.

@groverlynn
Copy link
Contributor

groverlynn commented Apr 26, 2024

encoder表頭的引號全部錯了

xform支持utf8的,但是ascii以外要用\x00\x11\x22這種形式的轉寫

你完全可以把碼表全部先轉換成ascii,而不是讓rime在編譯的時候用regex轉換,效率太低,還可能有錯。
另外,encoder的length是char的長度,也就是字節數。cjkv表意文字佔3-4字節

@Newdea
Copy link
Author

Newdea commented Apr 27, 2024

感谢@groverlynn 的解答

encoder表頭的引號全部錯了

是指要用英文的么,我那是英文的单双引号,只是编辑器显示成这样了

xform支持utf8的,但是ascii以外要用\x00\x11\x22這種形式的轉寫

你完全可以把碼表全部先轉換成ascii,而不是讓rime在編譯的時候用regex轉換,效率太低,還可能有錯。 另外,encoder的length是char的長度,也就是字節數。cjkv表意文字佔3-4字節

我理解拼运也只是在部署的时候才处理吧,在输入打字时,应该是直接查build文件夹下的table.bin文件吧。只部署处理不要求效率的。
如果能处理,应该不会出错吧,用拼运检查工具转换出来的,我大致看了下都是正常。

encoder的length是char的長度,也就是字節數。cjkv表意文字佔3-4字節

您说的这个 length, 不是指我截图的 length_equal吧,这个就是这样的,应该是指的text字段 词组文字个数,默认就是这样的。

目前连拼运这块都没能正常处理,encoder 组词就更涉及不到了。

1 similar comment
@Newdea
Copy link
Author

Newdea commented Apr 27, 2024

感谢@groverlynn 的解答

encoder表頭的引號全部錯了

是指要用英文的么,我那是英文的单双引号,只是编辑器显示成这样了

xform支持utf8的,但是ascii以外要用\x00\x11\x22這種形式的轉寫

你完全可以把碼表全部先轉換成ascii,而不是讓rime在編譯的時候用regex轉換,效率太低,還可能有錯。 另外,encoder的length是char的長度,也就是字節數。cjkv表意文字佔3-4字節

我理解拼运也只是在部署的时候才处理吧,在输入打字时,应该是直接查build文件夹下的table.bin文件吧。只部署处理不要求效率的。
如果能处理,应该不会出错吧,用拼运检查工具转换出来的,我大致看了下都是正常。

encoder的length是char的長度,也就是字節數。cjkv表意文字佔3-4字節

您说的这个 length, 不是指我截图的 length_equal吧,这个就是这样的,应该是指的text字段 词组文字个数,默认就是这样的。

目前连拼运这块都没能正常处理,encoder 组词就更涉及不到了。

@lotem
Copy link
Member

lotem commented Apr 27, 2024

詞組編碼那裏應該是有問題的。先不管他。

正則表達式這個 [AB] 語法是枚舉字符,因爲 xform 規則是 UTF-8 編碼的字符串,因此目前這樣寫無法枚舉 Unicode 字符。
可以改寫成 (A|B) 的形式,或者改寫成支持 Unicode 字符的 xlit/AB/aa 規則。

@Newdea
Copy link
Author

Newdea commented Apr 28, 2024

感谢@lotem 大佬指导

詞組編碼那裏應該是有問題的。先不管他。

是的,这里词组没有code 字段的四键字根编码时,应该就是@groverlynn 说的问题了,编码失败,打词组没有出字。
encoder是按码表文件的code直接进行编码的么,能否根据拼运处理后的进行编码呢

正則表達式這個 [AB] 語法是枚舉字符,因爲 xform 規則是 UTF-8 編碼的字符串,因此目前這樣寫無法枚舉 Unicode 字符。 可以改寫成 (A|B) 的形式,或者改寫成支持 Unicode 字符的 xlit/AB/aa 規則。

按照这个(A|B) 形式进行拼运处理,可以正常出字了👍

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

3 participants