Skip to content
New issue

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

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

Already on GitHub? Sign in 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) 形式进行拼运处理,可以正常出字了👍

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

No branches or pull requests

3 participants