倉頡字元序列計畫
发表于 : 2024年 5月 3日 13:56
程式界面設計草案:
代码: 全选
{"20989":{"char":"函","ijlist":["横鉤","仰匡","水"],"head":[0,1],"relation":["","\\",">",""],"bracket":["1-2"]},"24555":{"char":"快","ijlist":["側心","五中","大"],"head":[0,1],"relation":["","|","#",""],"bracket":["1-2"]},"25033":{"char":"應","ijlist":["廣府","側人","側人","土","心"],"combination":["2-3"],"head":[3,4],"relation":["",">","|","+","_/",""],"bracket":["0-3","2-3"]},"27138":{"char":"樂","ijlist":["豎折","私右","斜撇","日","豎折","私右","木"],"head":[5,6],"relation":["","+","|","-","|","+","/",""],"bracket":["0-5","0-1","2-3","4-5"]},"29254":{"char":"牆","ijlist":["豎折","豎形","頁首","土","人","人","外圍","口"],"include":[[6,7]],"head":[2,5],"relation":["","+","+'","|",":","|","/",">",""],"bracket":["0-2","3-7","3-5","4-5","6-7"]}}
能否介紹那五個按鈕代表什麼操作嗎? 我不太懂ejsoon 写了: 2024年 5月 28日 07:05 昨夜做好了「回退」和「前進」功能,應該是基本做好了。雖然今早測出「魟」字存在bug,但不影響數據的錄入。
去「做」一個工具或系統是很難的,而去「用」它就是簡單的。@鶴飛四季是否願意來「用」一下這個工具?
現在已經實現了檢索已有數據,比如當你錄「訪」字時,點擊「真」按鈕,之後在輸入框裏打「(言)|(方)」,如果此前已經有「言」和「方」的字元數據,則它會自動集成,之後我們再點擊「劃分字首」,則「訪」的字元序列就完成了,提交即可。
做了滿滿的一個月,終於是做成了。跟「網頁輸入法一樣,也是一個不小的工程。
希望鶴兄能去用一下,先嘗試錄幾個簡單的字,如「古下不去羊牛」這些,試試手感。
我後面會談下字元序列計畫的意義,它是朱邦復夙願的繼承,朱邦復在《倉五手冊》序中提到,他實現了字型生成器,也就是用倉頡編碼,生成一個漢字字形。但是朱邦復並沒有做到,他也不可能做到,因為一個字的倉頡編碼,省略了太多的信息,比如「戰」省略了「口田」,同時它也不知道這個中文字母所代表的是哪個輔助字形。
但是我做的字元序列可以做到,因為我精確到了輔助字形,我為每一個輔助字形都命名,且列舉出了它們的可能變化。
也就是說,我不能說「因為虎碼、98五筆都有取碼所用字根的資料」,所以倉頡也要來一個。我想做這個字元序列,大概是在2017年左右我就有這個想法了。
倉頡取碼是必然要用到字元序列的,比如「勤」字的第二碼為何取「一」而不取「土」,正是因為前面取完了只剩下「一」。
所以對於倉頡而言,它的最準確也是唯一準確的描述是:倉頡是一個從字元序列中依照「首二身三」規則挑出最多五個並以此為編碼的中文輸入法。
不知道字元序列的話,既學不會倉頡,也無法用倉頡打字。這是倉頡輸入法跟其它輸入法的最本質區別。
做一個工具是很難的,寫代碼是很難的。我在做「括號匹配」及「字首劃分」時,走在路上都在想如何實現,前後有幾種方案,前一種已經差不多實現了,但是發現「賞」等字不行,又推翻重來。刪了一百多行代碼。第二版也不行,最終我才想到一個比較好的算法,去實現「自動劃分字首」。
這也是為了人們在使用這個工具時能多一點簡便,順帶能替人們檢查他的結構判定有沒有對。否則一開始我是小括號、中括號、大括號都是要人工填的,現在大括號是自動填的,大大方便了使用者。
這個工具能做出來是很不容易的,一開始我所想的數據結構過份複雜了,比如{字首、次字首、包含作用、字元、構字符}等都在這個數據結構中。要是我還按這個數據結構來做,不僅現在無法完成,完成的日子也遙遙無期。
還是經過了深入的思考,才得出現在所用的數據結構。當時在思考用何數據結構時,我就停了好幾日,想了好幾日,因為這個實在是太燒腦了。
為了做這個東西,把我眼睛、脊椎都累壞。(前面我有做一兩個月的,有「立體生成器、混亂時鐘破解、網頁輸入法」。)
希望你詳細介绍ejsoon 写了: 2024年 5月 23日 20:03 @鶴飛四季
本計畫已經初步完成,可以嘗試錄入了!
https://ejsoon.win/ijlist/
到時我會錄個視頻來講解它的使用方法。
若使用過程中出現bug或有改進意見,歡迎上報。