查看unicode文檔,發現韓語字符有11172個,這是19×21×28,其實就是19+21+28=68個符號的排列組合。分析如下:
第一部分:
???????????????????
去掉右邊的那個“卜”,共19個符號。
第二部分:
?????????????????????
忽略左邊的橫折,注意看卜、H等,共21個。
第三部分:
????????????????????????????
注意看下邊的變化,第一個下邊什么也沒有,第二個開始是7、77、7人等,共28個。
上述三個部分排列組合,產生19×21×28=11172個字符。此處不再羅列這一萬多個符號,可以用以下程序輸出:
for ch in range(0xac00,0xac00+11172):print(chr(ch),end='')
unicode 16.0中共有符號154998個,到現在為止,還沒有發現哪個字體能支持所有這些符號。設想中,漢字用字根拼接而成,韓語也放棄這一萬多個字符,使字符總數降低到6萬,可以用2字節表示,也方便制作字體。
具體方案:
在unicode BMP中,即最開始的216個符號,有CJK ext A,包含6592個字符,從3400到4DBF,這一段可以替換成韓語68個字母,和漢字的結構描述符、字根。
例:
聞→門字框(在外)+耳+(字結尾)
靐→(品字結構)+雨字頭(在上)+田+(字結尾)
添加了“字結尾”之后,方便進行分析,例如字數統計。字結尾就像是英語的空格一樣。
多數漢字可拆分成兩部分,算上字結尾,是三個符號。一個漢字變成了三個符號,編碼長度變成了三倍。而表達相同的意思,英語字母數是漢語的三倍。漢語編碼變長后,長度接近一樣長了。同時,韓語也是一個字變三個字,表示相同的意思,需要的字節數和漢語、英語都一樣了。