-
Notifications
You must be signed in to change notification settings - Fork 16
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
v3.2.1 RimeData preedit_comment正则错误 #288
Comments
看起来现在方案里的正则是为了处理 |
patch:
translator/preedit_format: # 已輸入編碼
- 'xform/^([a-z]*)$/$1\t(\U$1\E)/'
- 'xform/(?<=(XXXX)X/#/'
- 'xform/(?<=(XXX)X/#/'
- 'xform/(?<=(XX)X/#/'
- 'xform/(?<=(X)X/#/'
- 'xform/(?<=()X/#/'
- "xlit|ABCDEFGHIJKLMNOPQRSTUVWXYZ#|日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜符重|"
translator/comment_format: # 編碼提示
- 'xform/(?<=^xxxx)x/#/'
- 'xform/(?<=^xxx)x/#/'
- 'xform/(?<=^xx)x/#/'
- 'xform/(?<=^x)x/#/'
- 'xform/(?<=^)x/#/'
- "xlit|abcdefghijklmnopqrstuvwxyz#~|日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜符重~|"
reverse_lookup:
dictionary: rime_ice
prism: double_pinyin_flypy
prefix: "`"
suffix: "'"
tips: 〔双拼〕
overwrite_comment: true
comment_format:
- 'xform/(?<=^xxxx)x/#/'
- 'xform/(?<=^xxx)x/#/'
- 'xform/(?<=^xx)x/#/'
- 'xform/(?<=^x)x/#/'
- 'xform/(?<=^)x/#/'
- "xform/$/〕/"
- "xform/^/〔/"
- "xlit|abcdefghijklmnopqrstuvwxyz#~ |日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜符重~、|" librime使用的boost_regex里的perl正则似乎不支持在反向查找表达式里使用通配符,只能这样枚举了,左右最多也就五个码🤣,大佬们如果有更好地办法麻烦告诉我一下 |
不是不支援萬用字元,是正規表示式引擎不支援非固定長度的 lookbehind assertion,比如 改成一般的 capture group 應該就可以了,像這樣: |
不行唉,这样只能换掉最后一个 |
我的写法也不行,comment里不生效,因为comment里第一个字符是~,这里似乎也拿不到完整的编码,估计得靠Lua插件才行了 |
按照 如果是想把所有 x 都換掉,那寫成更簡單的 |
窮舉的話我想可以這樣
但是comment_format那裡不能這樣寫,因為有 |
先改這樣發一版,至少不報錯。
|
就我的理解,只有用於去重的X應該顯示為「重」,其餘都應該顯示為「難」。另外Z的顯示也有不同看法,由於不是六代,且主要用於輸入特殊符號,因此以往的方案都是顯示為「符」。 所以像「,」的「zxab」應顯示為「符難日月」,「㇣」的「zsxxx」應顯示為「符尸難難難」,〇「xxxxx」應顯示為「難難難難難」。「曰」的「xa」應顯示為「重日」。 不過對於 comment,輸入「重」之後的「~日」和輸入「竹」之後的「~難卜金」,系統收到的分別是「~a」和「~xyc」,目前 RIME 的系統似乎無法取得已輸入的碼,恐怕是無法區分二者,大概要發 issue 請 RIME 開發者擴充功能了。 |
基於尊重原作,「Z」用「片」我沒意見。但是我看不出「〇」用「重重重重重」有什麼合理性。 |
當然不一定要照搬官方,「〇」寫「難」的話似乎比較好理解,那就要單獨處理一下 (如果按原教旨主義的角度,「〇」的定義是標點符號,不算「難字」也不算「重複字」。另外倉頡系統似乎不區分漢字「丶」(U+4E36)和標點符號「、」(U+3001),例如漢文庫典衹能查到「、」(U+3001),但是頁面上的Unicode又是4E36。) |
所謂重碼字,自然是先有本字,才有對應的重碼字。「〇」的「XXXXX」如果視作「重重重重重」,那根本沒有本字,何來重碼?如果視作「重重重重難」,也說不通,因為「〇」並沒有一個取碼為「難*」的本字;且就算這麼取碼,也沒有相應的4個重碼字存在。 那麼目前「〇」的「XXXXX」只能當作倉頡系統特設的定義了。至於這些特設定義的碼如何呈現,大概只有詢問朱邦復工作室才能確認吧。另一個五代RIME方案是一律把「X」顯示為「難」,技術上這樣做最簡單吧,也可以避開前述 comment 無法確定「重」或「難」的問題。 另外有個疑問。五代手冊似乎沒有明說「XXXXX」對應什麼符號。目前有其他可靠來源能證明該字元是漢字「〇」而非其他圓圈符號嗎? |
原來是深藏在手冊碼表中的X部……不過儘管如此,我還是覺得「重重重重重」於理不合,而且無法排除是筆誤(因為X部幾乎都是「重…」開頭,可能因此漏掉了特別定義的「XXXXX」)。 至於「○」非難字的說法,我認為如果可以接受三代的「ZXAB」等顯示成「片難日月」,那「XXXXX」比照顯示為「難難難難難」無妨。對於這些符號,每個碼本來就都不管拆字規則,一律當作純粹的「字母」,「X」這種「難/重」的特殊情況,應該可以認定為,除非符合後者的條件,一律預設為前者。 維基教科書的五代符號表是把XXXXX和YYYBK一樣對應到「○」(但沒有列出來源),而三代和六代都很神奇地沒有該符號,如果「○」是不同符號,六代沒定義似乎有點說不通。 雖然我個人也認為將「XXXXX」解釋為漢字「○」比較合理,不過目前資訊似乎還無法稱得上足夠明確呢。 |
我找到了另一個可能比較有說服力的資料: 在官網提供的文字版五代手冊,二者分別是「?? 重重重重重 XXXXX」和「○ 卜卜卜月叉 YYYBK」。此手冊似乎是輸出為Big5編碼,Big5不支援的字元都顯示為??。由於漢字「○」是Big5不支援的字元(但倚天Big5有編在C6E2),根據「XXXXX」顯示為「??」應該可以合理推論是它。 如果大家都同意,可以找個時間改一下維基XD |
20240518的Release里,默认preedit_comment中的正则错误,查看buildRelease.py脚本发现已经修正,是否可以重新发布release?
![image](https://private-user-images.githubusercontent.com/48832872/333879051-f3dac0f1-3c98-4982-ad42-651a3b48a0f1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA5ODExMDYsIm5iZiI6MTcyMDk4MDgwNiwicGF0aCI6Ii80ODgzMjg3Mi8zMzM4NzkwNTEtZjNkYWMwZjEtM2M5OC00OTgyLWFkNDItNjUxYTNiNDhhMGYxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE0VDE4MTMyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM0OWJjYjNlN2Q3YjhhYWJjODhjZDI5NTg4MzM3ZDI5ZWYxOWE2YTIxZDBiM2Q5ZDFmNmZhNTEyMjZlY2NhNzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.XxvzdPM7zOAzxu_QOxPY_RGw-c8sqL52oJXs3nf7Hz4)
以下是小狼毫日志截图:
The text was updated successfully, but these errors were encountered: