查看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个字母,和汉字的结构描述符、字根。
例:
闻→门字框(在外)+耳+(字结尾)
靐→(品字结构)+雨字头(在上)+田+(字结尾)
添加了“字结尾”之后,方便进行分析,例如字数统计。字结尾就像是英语的空格一样。
多数汉字可拆分成两部分,算上字结尾,是三个符号。一个汉字变成了三个符号,编码长度变成了三倍。而表达相同的意思,英语字母数是汉语的三倍。汉语编码变长后,长度接近一样长了。同时,韩语也是一个字变三个字,表示相同的意思,需要的字节数和汉语、英语都一样了。