vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
1
威注音輸入法 (macOS 專用) v1.9.4 版發佈了!從這次更新開始,在選字窗內選字之後,被選的字周圍的字不會再亂變了,也就是說在這方面與 macOS 內建注音輸入法行為一致。關於這方面的獨家技術細節,請洽小編在本推文內的回覆。
Release 1.9.4 · vChewing/vChewing-macOS
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
技術細節:
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
先在游標位置找出既有節點,記住這個節點的始末範圍(範圍A)。
然後再檢查要拿來覆寫成的字詞在覆寫成功後會有哪些始末範圍(範圍B)。
取範圍 A B 之併集,成為範圍 C。
然後檢查範圍 C 的邊界是否有切到(在這次覆寫行為之前的)前後方節點。
有的話,將那個節點的遠端也算入 C 的範圍內、更新 C 的邊界。
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
最後,將範圍 C 內的所有節點都以最小的幅位長度(spanLength)為單位……
……先用最高手動權重覆寫一遍。
(如果是字音數量不一致的節點的話,以該節點為單位;否則以漢字為單位。)
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
這樣一來,就完成了對游標上下文內容的鞏固工作。
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
然後再拿你在選字窗內選中確認過的候選字詞(的詞音配對)來覆寫節點。
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:46 AM
這時,天權星組字引擎 v2.0.2 的更新就起作用了:
會將這次覆寫範圍內存在的「剛剛被鞏固過的最小節點們」的權重自動減半。
這樣一來,覆寫範圍外的內容就不會受變動。
因為都被標記過覆寫狀態、就不會被 walk() 爬軌函數改成你不想要的結果。
vChewing
@vChewingIME
Wed, Aug 17, 2022 5:47 AM
相關討論串(工單#100):
允許在用短節點覆寫(既有的)長節點所在的範圍內的節點時、保持這次的非覆寫範圍內容不變。 · Issue ...
載入新的回覆
然後再檢查要拿來覆寫成的字詞在覆寫成功後會有哪些始末範圍(範圍B)。
取範圍 A B 之併集,成為範圍 C。
然後檢查範圍 C 的邊界是否有切到(在這次覆寫行為之前的)前後方節點。
有的話,將那個節點的遠端也算入 C 的範圍內、更新 C 的邊界。
……先用最高手動權重覆寫一遍。
(如果是字音數量不一致的節點的話,以該節點為單位;否則以漢字為單位。)
會將這次覆寫範圍內存在的「剛剛被鞏固過的最小節點們」的權重自動減半。
這樣一來,覆寫範圍外的內容就不會受變動。
因為都被標記過覆寫狀態、就不會被 walk() 爬軌函數改成你不想要的結果。