為什麼 Unicode 中會存在「凉」和「涼」這樣兩個極其相像的字元?

在貼吧里看到兩個一模一樣的 ID,仔細看才發現這兩個字不一樣。
第一個「凉」是 U+F979,第二個「涼」是 U+51C9。


我來補充一下為什麼韓語里「涼」會是多音字,以及怎樣用「正常」的方法打出這兩個「涼」字。

韓語中「涼」字本來的讀音是?(liang)。
這裡我姑且用英文字母l來表示韓文字母?的發音,內行人不要挑漏兒。

韓語有一定阿爾泰語系的特徵,其中有一條就是單詞不能以l開頭。
韓語的固有詞的確沒有以l開頭的,但是對於外來語,處理方式就不同了。
來自西方的外來語單詞,開頭的l會保留,比如???(la-i-teo,打火機);
來自漢語的單詞,在朝鮮會保留的開頭的l,但在韓國,需要按照如下的「頭音法則」把l換掉:

  • 如果l後面接的是母音i或者以i開頭的雙母音,則l要去掉,比如「梨花」:??(li-hwa)-&> ??(i-hwa)。韓國人的姓「李」拼作?(i)也是這個道理。
  • 如果l後面接的是其它母音,則l要換成n,比如「駱駝」:??(lag-ta)-&> ??(nag-ta)。

另外,以n開頭的漢字詞,如果n後面接的是母音i或者以i開頭的雙母音,也要把n去掉,比如「女子」:??(nyeo-ja)-&> ??(yeo-ja)。

根據頭音法則可以發現,所有聲母為l的漢字,在韓語中都是多音字。
韓國的KS X 1001字符集比較奇葩,給多音字的每個讀音都分配了一個編碼。
而Unicode為了與所有已有字符集兼容,必須也給韓語中多音字的每個讀音分配一個編碼。
每個字的多個編碼中,有一個是放在正常的漢字區(4E00 ~ 9FA5)的,其它的都放到了「中日韓兼容字元」區(F900 ~ FAFF)。
於是在這個兼容區可以看到大量聲母為l(或n)的漢字:

Windows自帶的韓語輸入法,在輸入一個韓文字元後按右Ctrl鍵,可以將這個字元換成對應的漢字,如下圖:

如果輸入?(liang),那麼打出的就是「涼」字(U+51C9);
如果輸入經過頭音法則變換後的?(yang),那麼打出的就是「凉」字(U+F979)。@劉松泉已經發現了Unicode中有四個「樂」,這同樣也是韓語多音字搞的鬼。
韓語中「樂」字的四種讀音以及對應的Unicode編碼、意義如下:

  • ?(ag),U+6A02(樂),對應普通話讀音yuè,名詞,音樂意;
  • ?(lag),U+F95C(樂),對應普通話讀音lè,形容詞,快樂意;
  • ?(nag),U+F914(樂),為lag經頭音法則變換後的結果;
  • ?(yo),U+F9BF(樂),對應普通話讀音yào,動詞,喜愛意。

這種一看就是 Unicode 問題。
普通人請不要在這種問題上胡思亂想,胡思亂想得出的自以為說得通的答案基本都是錯的。
普通人其實也不需要了解這些,所以如果你看不懂下文寫了些什麼,不用在意。

兩個字分別是 U+F979 和 U+51C9:

  • U+51C9 是常規的漢字字元「涼」,位於 CJK Unified Ideographs 這個 block,主要用於簡體中文。
  • U+F979 是位於 CJK Compatibility Ideographs 這個 block 的字元,來自韓國的字符集標準 KS X 1001:1998: http://www.unicode.org/charts/PDF/UF900.pdf

KS X 1001 這個字符集很特別,它把多音字分立為不同的字元(而且很多在漢語里只有一個讀音的漢字在韓語里是多音字)。Unicode 為了與其兼容,就把多出的那些多音字字元放到 CJK Compatibility Ideographs 這個 block,並指定這些兼容字元與位於 CJK Unified Ideographs 的字元互為 canonically equivalent(大意為「規範等同」)字元。

作為一對 canonically equivalent 字元,這兩個字元的外觀原則上應當一致,在各種環境下也應當一視同仁。如果不一樣,那麼是字體設計不當,或者因為一款字體不支持 U+F979 而 fallback 到另一款字體了。
中文、日文字體沒有必要支持為韓語提供的 U+F979,Word 之類的簡繁轉換演算法也沒有義務支持它。事實上,輸入法中也不應當提供它。
如果施加了正常化(normalization),U+F979 會轉換為 U+51C9,比如漢典的搜索引擎。Unicode 與其他字符集轉換時,U+F979 也可能會合併至 U+51C9。

中文、日文環境下應當永遠使用 U+51C9。
中國大陸取「涼」(U+51C9)為正字,港澳台繁體中文和日文取「涼」(U+6DBC)為正字,它們是異體字關係。所以繁體中文和日文里通常不會用到「涼」,不過一旦用到,也是應當用 U+51C9 而非 U+F979。

- - -

不知道 Unicode 知識怎麼辦?
請使用專業的 Unicode 字元查看工具。比如,複製字元到 http://rishida.net/tools/conversion/ 這樣的工具里,查看它們的 Unicode scalar value(「Unicode U+hex notation」)。
再次強調,描述 Unicode 字元時不要用「編碼」,應當使用形如 U+XXXX 的 Unicode scalar value。而且 Unicode scalar value 和編碼是兩碼事。


」凉「和「涼」這兩個字都是讀"liang"嗎?都是漢字嗎?

補充說明:在貼吧里看到兩個一模一樣的id,仔細看才發現這兩個字不一樣
可以看到,中文的雙引號括住它們的情況也不一樣

@梁海 改變了題目,不過這個題目的確如梁海說的那樣,需要對unicode有了解
本來把自己的答案刪除了,可是想了想我的答案對於原題目還是成立的,至少能給沒有那麼熟悉unicode的人提供一條如何解決這種問題的路徑。
「凉」和「涼」
我們不知道unicode知識的時候咋辦?我是這麼辦的。
1.目測這兩個字的確有微細的差異
2.注意兩個字京字那一橫,後面那一橫的三角部分非常小的差一點點,可以確定這是兩個字。
3.但是我在http://bm.kdd.cc/index.asp網裡看它們的內碼,居然一樣,都是C1B9,難道。。。。
然後把這倆字貼到漢典里去,結果得到的字都是unicode碼:
U+51C9 那個。

4.不死心,把這倆字貼在word里,像這樣

然後點那個簡轉繁按鈕,得到這個圖

真相大白
一個能繁簡轉換,一個不能。所以必須是兩個字。
為什麼一個能一個不能?
因為第一個字是 U+F979,沒有對應的繁體字
而第二字是U+51C9 ,是常用字,有對應的繁體字。
所以word在這裡判斷正確@yskin 可為什麼前面把字粘帖到內碼識別的網站還有漢典的時候都視作一個字了呢?
內碼的網站看來不對,也沒意義。
而漢典出現的情況@庄表偉給出了答案,電腦上沒有足夠的字型檔。所以粘帖的字都是U+51C9這個字。
在這裡http://www.zdic.net/appendix/f18.htm下載國際標準超大字符集字體支持包5.4(字數:75000個漢字)安裝並重啟計算機以後,在粘帖兩個字到漢典就直接能不同的頁面了,見庄表偉的答案。
裝了大字型檔前複製粘帖U+F979這個涼字是轉到U+51C9這個頁面去的,而安裝了字型檔以後,就完全不一樣了,各自轉到各自的頁面完全沒有混淆。


兩個字的差別


推薦閱讀:

工科論文有什麼比較正式、清晰、美觀、簡潔、大方的襯線字體?
繁體語境中,人名應該用繁體還是簡體?
Ubuntu 中文字體測試內容是「我能吞下玻璃而不傷身體」,這有什麼典故嗎?
如何根據一個現成的字,知道他的字體名字?
「信黑體」好在哪裡?

TAG:字體 | 字體設計 | Unicode統一碼 | 字元編碼 | 漢字編碼 |