作者dis8105 (蒼宇)
看板Wrong_spell
標題[討論] 論漢字編碼不重複的可能及實踐方法
時間Tue Jun 27 16:04:04 2023
想了許久不確定這篇應該放在輸入法版還是這版,最後想想內容還是比較學術一點就在這
邊發布了
以下是網頁好讀版:
https://dustinliao.blogspot.com/2023/06/blog-post.html
自接觸《倉頡輸入法》以降,甚是喜歡朱邦復先生對於漢字傳承的理念,但對於《倉頡輸
入法》在某些省碼概念下仍有不滿。多方閱覽後,了解到漢字編碼的難處,專研此道十餘
載,今日有興在此與各位前輩分享研究心得。基於以下方法(為之後稱呼方便該方法名為
《倉易輸入法》,簡稱《倉易》;《倉頡輸入法》簡稱《倉頡》)作者拆解了6507個漢字
無重碼,雖然對於浩瀚字海仍顯微小。但筆者希望公布此方法讓有在關注編碼的前輩們,
或感興趣的同好能接續發展。
https://docs.google.com/spreadsheets/d/1xCZW9btiPzQfCk7XznJ61C67H8yDNPgg/edit?usp=sharing&ouid=106073667106723969922&rtpof=true&sd=true
以上是成果網址。另外,在開始詳述《倉易》編碼邏輯之前,先來看看以下幾個篇章標題
。這將方便各位閱讀時能找到要看的重點。
目錄:
一、書寫漢字帶給《倉易輸入法》的啟迪
二、《倉易輸入法》的框架介紹
三、《倉易輸入法》實務操作及安裝
四、《倉易輸入法》後話及總結
一、書寫漢字帶給《倉易輸入法》的啟迪
再談編碼之前,先講講幾個重要的書寫漢字特徵(為之後辨別之便,使用筆桿子書寫的漢
字稱之為書寫漢字,簡稱漢書;使用按鈕敲擊呈現的漢字稱為數位漢字,簡稱漢碼),這
將有助大家理解我的推演過程。
1.漢書不論筆畫多寡,字與字之間所佔據的空間是相同的,在此我稱之為手寫九宮格,而
這將啟迪《倉易》一個重要的概念「無」字卦的概念,後續將再說明之。
2.漢書不論字形長相為何,字中必然藏有部首並且僅有一組。而《倉易》也將貫徹此一觀
念,並且作為漢碼與漢書能一一對應的核心重點。
3.所有漢字皆能做一級字源拆分(意及每個字都有其源頭,不論其是否指向自己)而根據
這份結果《倉易》將其拿來作為字形結構的分析,並從表意文字描述字符中提取四種名稱
及符號「行B列B圍B嵌v做為《倉易》的確認鍵。
4.最後,漢字發展淵遠流長,許多書寫字體(甲骨、金文、小篆等等)因應書寫工具或習
慣而發生改變,但之所以這些字體彼此還能看出傳承關係,不外乎是因為字裡行間的圖像
符號有其一定的內在邏輯及規律,縱使少許的增筆或少筆甚至是變形亦能推敲得出。因此
《倉易》拆解文字的精神是:若是編碼過程中,字形符號看似有多種拆解長相,則首重字
形符號背後的涵義。例如:「告」、「先」的字形分析應當是「牛口」、「止儿」,那在
《倉易》這兩個字的上半部就會視為兩種不同的編碼形體;而「義」、「羚」的字形分析
應當是「羊我」、「羊令」那這兩個字的前半部就會使用相同的編碼概念。但字理的發展
過程中出現嚴重變形者,則不在此列。具體請參看結果連結<漢字編碼>編碼字元欄。
二、《倉易輸入法》的框架簡介
了解上述前言後,《倉易》設定了以下規矩:「數位九宮、編碼字元、部首核心、結構參
造、部首四象、四象疊碼、捏形字卦、有形無卦、書寫編排、省碼情境。」並達成了6507
個漢字無重碼的突破。
1.數位九宮:同手寫九宮格之概念,所有編碼漢字構成不超過六碼。也就是一個編碼漢字
最多只需輸入6次即可完成。並且所有的《倉易》字碼最終也都是六碼長相。(由於有設
計確認鍵的關係,《倉易》在使用上不一定都會需要輸入到六次。而再不足六碼的情況下
,「無」字卦就會將其填充至六碼,例如:日「陽嵌無無無無」)
2.編碼字元:然而所有漢字不論是否進行編碼,我們都可以依其圖像符號拆解成若干字元
。而這些挑選過的字元將是構成各種漢字的基石(這些形體不一定跟字義有明確的關係,
但通常來說都具有強烈連結)不消說在不同體系的拆解之下,這些基石字元也各不相同。
而在《倉易》底下它們還具有以下幾個特性:
a.在漢字拆解過後,拆解出來的字元依其性質分為部首、部件及結構。另外,在不同的漢
字拆解中就算有相同的字元,它們彼此持有的性質也不一定會一樣。(例如:可的「口」
是部首,但柯的「口」是部件)
b.所有字元最多三碼(意及最多按三次)
c.所有字元在特定情況下,可能會增碼或省碼(意及減少/增加輸入次數)
3.部首核心:代表《倉易》的所有漢碼皆有部首,並且漢字部首字為《倉易》編碼的優先
對象。(另外須再次說明的是,《倉易》中部首字不等同部首字元。)而若是該字元擔當
某個漢碼字的部首時需完整輸入其定義的編碼,沒有增減。
a.在此使用的部首總類為213個傳統部首加15個簡中部首。其中傳統部首是承襲《字彙》
以及《康熙字典》的214部首而來,唯將夊部合併至夂部。
4.結構參造:若數位九宮在省碼過程結束後仍保有空間,則需參考一級字源拆分來輸入結
構。而當數位九宮被填滿或是當中出現結構字卦(也就是確認鍵)時,表示該漢碼輸入完
成,應當在螢幕上呈現所該對應的漢字。另外,一級字源拆分是找尋該字的父母,因此追
溯出來的是漢字而不是字元。但在《倉易》作為參照時,是看其相對位置所對應的字元組
合來映射其父母,然後再來判斷其結構。以下詳述各結構在《倉易》的定義:
a.直行結構:若父母輩僅有兩個,且映射的字元組合呈現上下堆疊,則為此。
b.橫列結構:若父母輩僅有兩個,且映射的字元組合呈現左右擺放,則為此。
c.包圍結構:若父母輩大於等於三個,或是其中映射的字元組合至少有兩組邊長被其
他字元組合完整包圍,則為此。
d.嵌套結構:若父母輩即為本身或父母輩是其它漢字(此字本身是訛字或俗字等異寫
體)或映射出的字元組合相互沾黏不可分,則為此。
5.部首四象:一般而言漢字中的部首都會形似原本的部首字,但也不乏有部首偏旁長相完
全不一樣的時候。而在《倉易》中為了解決此一問題,重整了部首偏旁的範圍,讓部首可
以用「行列圍嵌」的結構特性帶出四種長相。具體請參照成果連結的<部首核心>頁面查
看。
a.偏旁同胚:倘若該部首偏旁字的書寫筆畫等同於部首字時,《倉易》暫不解。如:
「亻人」、「灬火」蓋因目前理論沒有較好的兼容方式,且作者以為這些皆是拓撲同胚,
也應當不用另行構造。
6.四象疊碼:由於一個編碼部首有四種長相,而這四種長相的字元在字元階段所擁有的編
碼是一模一樣的,僅在文字層面上的編碼結構(確認鍵)不同。因此仍不免俗地會有重碼
的情況發生,因此在以下情況則需要重複輸入。
a.若部首四象中的「行列圍」是「嵌」的重複字形(如:炎炏焱就是火的重複字形)
,且該字元在字中是部件,且該字字元構件僅有兩組,則該四象字元需重複輸入編碼。具
體有那些可直接參看結果連結<漢字編碼>備註欄中標註疊字的部份。
7.捏形字卦:也就是《倉易》字元實際所需敲擊的編碼按鍵,一鍵一卦即為一碼,共計卅
二組(詳細可參看結果連結<卅二字卦>)每一組字卦除代表字元外,還有代理字元及輔
形字元。如同拼音字母般,在不同組合下,同字母的發音也不一定會一樣,具體音調還是
得看KK音標或國際音標等。因此字卦也不單單僅有一個代表字元。而代理字元及輔形字元
就是針對不同省碼情境下可以省碼的字元長相。
a.代表字元:除結構字卦及無卦外,其於字卦僅有一組,且一定是漢字部首,也因此部首
四象都是代表。
b.代理字元:除結構字卦及無卦外,其於字卦皆有左右兩組,且一定是漢字部首,也因此
部首四象都是代理。
c.輔形字元:除結構字卦及無卦外,其於字卦皆有若干不等的輔形,但不一定是漢字部首
,若是則部首四象皆是輔形。
8.有形無卦:卅二字卦中最特別的當屬無卦,這也是所有代理字元必然擁有的編碼。其作
用不僅是用來填補數位九宮的空缺,更是字元省碼的重要輔佐。基於排列組合的概念,若
是將它放在剩餘的27組字卦的左或右時,會被視為不一樣的排列順序。這樣的好處是,由
於無卦本身不帶有特定的概念,因此省略時不會有負擔,但需要時卻可以做出區別。
a.左、右代理字元其無卦分別放在該字卦的左右,形式如:左代理字卦:「無卦」、
右代理字卦:「卦無」。並且字卦中的左代理會比右代理的筆畫少或是在《康熙字典》的
排序中靠前。而具體各字卦所包含的代表、代理及輔形字元請對應<卅二字卦>以及<部
首核心>查看其編碼。
b.另外,無卦只會出現在輔形字元之中,其於字元皆不會出現。
9.書寫編排:漢字由於書寫為2維平面,各字元的書寫先後嚴格來說並沒有必然性。因此
如何轉譯成有序的線性輸入法,各家所用的準則也不盡相同。在此《倉易》採用的方法是
筆畫順序來判斷先後出現的字元,也就是當筆畫書寫到該字元,不論之後該字元有否被寫
完,它都會優先出現在編碼前面。
a.由於作者出生於臺灣,所使用的書寫習慣是中華民國教育部所訂立的,不確定海外
其他使用漢字的書寫習慣。為此若是有書寫順序的出入,《倉易》目前優先參照中華民國
教育部訂立的書寫順序為依歸。
10.省碼情境:在講完上述各種概念後,最後就是省碼情境的應用。誠如一再提到的,漢
字是由字元組成的,因此在開始省碼前,優先填上所有原始字元的編碼,然後再依循以下
的情境開始做刪減,刪減完成後若還有空間則再添加結構字卦並填補無卦至六碼。
a.代理省碼:當代理字元為部件時,省略無卦後依舊大於等於三碼(不含結構字卦),則
該字元就可省略無卦,單獨用該卦代表。
b.輔行省碼:當輔形字元組成為部件時,用單卦表示後依舊大於等於四碼(不含結構字卦
),則該字元就可以使用單卦表示。其中省略的字元順序是由後往前省碼。
c.大字省碼:當漢碼筆畫大於六碼時,則依結果連結<漢字編碼>編碼字元欄中括號裡的
字元省略。(原先作者以為六格空間理應夠放所有漢字,但實際處理依舊發現不少漢字組
成比預想的還要複雜。作者曾想過是否應當擴充數位九宮的大小來保持文字的完整,但細
想卻覺得應當分類中文字,讓某些中文字屬於大字集,好與一般字集作區別。)
三、《倉易輸入法》實務操作及安裝
在了解上面的規則後,我們來仔細介紹結果連結<漢字編碼><部首核心><卅二字卦>
的頁面要如何觀看。另外,如果想要實際操作看看的,以下連結是字庫檔。主程式使用的
是《倉頡平台 2022》,字庫的替換方式可參見壓縮檔中的圖片說明。
https://drive.google.com/file/d/1450XDgska88_TqkO6DwSDGLOnk_XASWt/view?usp=drive_link
1.漢字編碼,頁面由左而右的欄位依序是:
a.統一碼:也就是Unicode標準,是資訊科技領域的業界標準,其整理編碼了世界上大部
分的文字系統,使得電腦能以通用劃一的字元集來處理和顯示文字。
b.部首(傳):參造全字庫網站中的部首來分類。(但作者有時為作業方便而直接參看《
康熙字典》的部首分類,若有出入以全字庫為準)
c.筆畫:參造全字庫網站中的筆畫。(之所以沒有以《康熙字典》為主要經典的原因是,
作者起初並不知道《康熙字典》的筆劃是依照部首原型的方式計算。而作者習慣以中華民
國教育部的版本計算,整理到很後期的時候才發現兩邊的計算方式並不一樣。為此為了確
保筆畫與部首來源一致,一律依全字庫為準。)
d.一級字源拆分:依照小學堂網站、漢典網站當中提供的《說文解字》、《康熙字典》等
文字敘述及圖像推得。其中亦不乏有作者知識背景不足而無法辨別的時候(無法確認時,
作者會以括號表示這可能不是這組源頭,並用「;」來保留思路。另外「;」左邊的會被
用來作為編碼結構的判斷),以及資訊不足得由作者做猜測的時候(這時該欄會用斜體字
表示)。
e.倉易編碼(符):編碼完成後,各符號對應當今英文鍵盤上的標示
f.字形:顯示螢幕上,Unicode標準編碼所對應的漢字。
g.編碼字元:對應該字形所拆解出來的所有字元,其中紅粗體字代表該字的部首。其中有
不少部首被作者重新調整過,不一定是全字庫網站或《康熙字典》中所使用的分類。因為
作者發現某些部首分類,未必是該字中最適合擔任的字元。
h.倉易編碼(卦):使用字卦名稱排序的編碼,其中黑色粗體字代表該字的結構
i.筆畫(碼):不計結構字卦及之後的無卦,對應到《倉頡(五)》、《郑码輸入法》就
是計算確認鍵前輸入多少次。
j備註:關於作者對於此字的一些想法紀錄
k.倉頡(五):《倉頡輸入法》的第五代版本
l.郑码輸入法:《郑码輸入法》
2.部首核心:共計227個編碼部首及其編碼偏旁,其中倉易編碼欄位定義了該字元在《倉
易》的標準長相,而形狀參考欄位則說明作者如此定義的思路。
3.卅二字卦:關於各卦所包含的代表、代理、輔形以及所對應的鍵盤符號。另外也揭示了
各卦名稱的命名由來。這邊也將詳述這些名稱的命名思路。
a.無極:無極而太極,是陰陽兩分前之混沌狀態。就像文字書寫前就會安排好其空間
然後才會下筆書寫。
b.結構:中文書寫結構的四種常見的特徵,直行、橫列、包圍、嵌套。
c.七耀:抽換《倉頡輸入法》中的關於「日月金木水火土」的說法,改用中國古人將
歲星(木星)、熒惑(火星)、填星(土星)、太白(金星)、辰星(水星)加上太陽(
日)、太陰(月),合稱七曜的稱呼。
d.筆畫特徵:參考了《五筆輸入法》將漢字筆劃分為五種,「橫、豎、撇、捺、折」
唯將捺(點)的概念換成勾。並將捺與點的概念分別放入「角卦」與「劃卦」中。
e.人體:依照漢字中有使用到的人體概念,劃分了五種區域,象徵頭頂面部的「面卦
」、象徵手掌形象的「掌卦」、象徵腳部形象的「腳卦」、象徵嘴巴範圍的「嘴卦」、象
徵軀幹身體的「體卦」。
f.形狀:依照漢字中楷書書寫有使用到的形狀,挑選了五個做為代表。看起來像一塊
塊的「塊卦」、看起來像是畫框柩的「框卦」、看起來像畫線條一樣的「線卦」、看起來
像交叉一樣的「交卦」、看起來像尖尖角的「角卦」
g.狀態:依照漢字中的一些字元狀態,挑選了五個做為代表。由點劃出發的「劃卦」
、像是側面擺放的「側卦」、像是盛載一切的「盛卦」、像是並列擺放的「並卦」、像是
舒展大方的「展卦」
四、《倉易輸入法》後話及總結
以上說明就是《倉易輸入法》的綱要,或許結果頁面或輸入過程中仍有些許邏輯不合上述
,但那是作者僅一人之力的緣故,無法多次精確校稿的錯訛;另外拆解字理或字理還原有
不夠學術或嚴謹的地方也歡迎留言讓作者知道。希望這拋磚引玉的動作,能吸引更多的前
輩及愛好者再次關注此一議題。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.123.113 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Wrong_spell/M.1687853046.A.B9E.html