每一個Unicode里編碼的諺文(韓文)字元都曾在歷史上使用過嗎?

諺文字元的Unicode編碼方案里,字母按照初聲,中聲和終聲(optional)的堆砌規則,把所有數學上可能的11172個字元全部編碼進去(這還不算古諺文字元)。維基百科聲稱不是所有的字元都會出現在現代韓語里。

1) 這11172個字元是不是都在歷史文本上出現過?

2) 如果不是,Unicode 為什麼要給每個這樣的字元編碼?這樣是不是違反了UTC自己的準則?

對比:漢字的每個字元要給出出處,不可能隨便拿一個部首和一個字拼一起就要求一個codepoint。例子:CJK 2015年的一個提案

3) 一些只在歷史上出現的,暫時沒有獨立編碼的諺文字元之後有沒有可能被收錄進Unicode?


先回答問題:如果問「每一個Unicode里編碼的諺文(韓文)字元都曾在歷史上使用過嗎?」,那麼答案是「否」。

題主援引的「Requirements of Proposal From」中有一句「the context within which the proposed characters are used」。單從這一句來看,似乎並不要求每一個字元都要找到出處,而只是說需要說明提交的字元整體上用在什麼環境中。對於漢字的「每字必問出處」的要求,不一定也適用於諺文。(如果我的理解有誤,請指正)

就諺文來說,Unicode 選擇了把現代諺文能組合出的 11172 字全部收錄,可能出於以下幾點考量:

1. 避免輸入上的麻煩。電腦上的韓文輸入法,是一個字母一個字母地輸入的,例如:

? -&> ? -&> ?

手機上的九宮格韓文輸入法,多個輔音共用一鍵,而母音則是一筆一筆地輸入的,其中短橫和短豎共用同一個鍵。例如:

? -&> ? -&> ? -&> ? -&> ? -&> ? -&> ? -&> ?

韓國標準的 KS X 1001 字符集(http://examples.oreilly.com/cjkvinfo/AppL/ksx1001.pdf)為了節省碼位,只保留了實際上會用到的 2,350 個諺文字。這些字中包括了 ?、?,卻沒有包括輸入這兩個字所需的中間狀態 ?、?,這造成在許多電腦和手機上 ?、? 兩字無法輸入。

2. 為將來考慮,避免一個以前沒有用到的字後來被用到時沒有合適的編碼。例如,韓語的語流音變非常豐富,在教材的辭彙表中,常常會標出單詞經過語流音變之後的發音。這些發音標註中會出現許多實際書面語中不會出現的字(尤其是終聲為?的字),KS X 1001 字符集就沒有考慮到這一點。例如,??(有,在)的實際發音為 ??,這個 ? 字,KS X 1001 字符集中就沒有。

3. 把 11172 字全部收錄,使得詞形變換可以通過編程簡單地實現,而不必查表。現代韓文有 19 種初聲,21 種中聲,28 種終聲(包括無終聲),19 * 21 * 28 = 11172。這些字從 Unicode 編碼 U+AC00 開始依次排列。於是,通過簡單的算術運算,就可以知道一個字的初聲、中聲、終聲都是什麼,也可以根據初聲、中聲、終聲合成諺文字。例如,? 這個字的 Unicode 編碼為 U+C5C6,由如下運算可以得知它的初聲、中聲、終聲:

C5C6 (16) - AC00 (16) = 19C6 (16) = 6598 (10)

6598 / 28 = 235 ... 18(18 對應的終聲為?)

235 / 21 = 11 ... 4(4 對應的中聲為?,11 對應的初聲為?)

反過來,由初聲?(11)、中聲?(4)、終聲?(18)也可以得到 ? 的編碼:

(4 * 21 + 11) * 28 + 18 = 6598 (10) = 19C6 (16)

AC00 (16) + 19C6 (16) = C5C6

有興趣的同學可以思考一下如何編程把一個動詞或形容詞的原形變成思密達形,我過幾天會寫一篇專欄公布答案。

(答案:10450 - 用 Unicode 分析韓文字詞)

當然,為了達到「把 11172 字全部收錄」的目的,並不一定要給 11172 字全部分配碼位,「動態組字」也是一種選擇,但這種選擇對字體的技術要求較高,Unicode 經過權衡後沒有採納。


純粹是技術考量,為了方便顯示層面等 higher level protocol。參見王贇的答案。

不對以下八卦負責——

傳說當年蘋果和微軟撕這個問題然後微軟威脅說不這麼辦就不在操作系統中支持,於是蘋果妥協了。後來,微軟方面的人私下表示後悔了。

——不對以上八卦負責

這是個因為懶以及上層技術(OpenType 等)滯後而目光短淺地濫用永久資源的典型例子。


簡單說,韓文Unicode編碼經歷過一次大遷移,目的就是擴充。這次遷移是韓國方面和微軟勾結後強制完成的,以至於第三方不得不遵守這個不符合Unicode政策的既成事實。這其中,包括蘋果。

遷移後的原韓文碼位現在是漢漢字。至於是哪部分漢字,一看基本平面的編碼表就知道。

現有的韓文Unicode字符集收錄的是基於現代韓文的理論音節,而不是實際使用的音節。但事實上是資源浪費。輸入法要使用的過度音節字元、教科書可能使用的語流音變的音節字元,都可以用OpenType解決。


Hangul 有個純字母的編碼形式,然而這種編碼對於編程處理極為不利,而且特殊環境下很容易造成兼容性的問題

程序員懶起來是很可怕的


推薦閱讀:

GB18030 根上跟 Unicode 有關係嗎?
傳統蒙古文(回鶻式蒙古字母)的 Unicode 方案有哪些方面給日常應用帶來了麻煩?
為什麼有的生僻字有unicode碼位卻仍然打不出來?
有沒有人把Unicode 按Code Chart里的字體完整地做成一個字體?
理論上一個位元組能不能表示一個漢字?

TAG:Unicode統一碼 | 韓語 | 諺文 |