« PDFと文字 (25) – CMapで文字コードからCIDへ変換 | メイン | PDFと文字 (27) – アラビア文字の扱い »
2006年01月18日
PDFと文字(26) – ハングルの扱い
漢字の場合は、ひとつの字体にひとつの文字コードを与えるのが原則ですが、そう単純ではないしくみの文字も世界には沢山あります。お隣の韓国・北朝鮮の言語である朝鮮語を書くための文字ハングルもそのひとつです。
ハングルは、李氏朝鮮の世宗大王が15世紀に学者の協力を得て定めた文字とされていて、比較的新しいこともあり、科学的な発想による仕組みをもつ文字と言われています。
ハングルでは、頭子音(初声)、母音(中声)、終子音(終声)を表す3つの字母(Jamo)を組み立てて音節文字を作ります。頭子音は19種類、母音は21種類、終子音は27種類の形があります。但し、頭子音と終子音には同じ形状のものがあります。
音節文字の数は、理論的には次の(1)と(2)の合計11,172種類となります。
(1)頭子音と母音で組み立てる文字:19×21=399種類
(2)頭子音、母音、終子音の3つを組み立てる文字:19×21×27=10773種類
ハングル文字の符号化方法には、字母を符号化する方法と、組み立て済の文字を符号化する方法の2種類があります。韓国の国内文字規格には、この両方の方法に基づくものがあり、それぞれ、かなり頻繁に改訂されたため、大変分かりにくくなっています。
Unicodeにも、2種類の符号化方式を採用したものが盛り込まれていて、それぞれ、コードチャートの次のブロックに定義されています。ハングルを処理するプログラムは両方の符号化方式を正しく処理できないといけないようです。
・ハングル字母(Jamo):U+1100~U+11FF
組み立て前の字母を登録しています。コードチャートを見ますと、頭子音が90種類、母音が68種類、終子音が82種類もありますね。ここの字母は、UnicodeV4.0 仕様書の3.12節に組み立てる方法が説明されています。この範囲のハングル文字コードの並びが表れた時は、それを表示したり、印刷、PDF化するときは、その並びを判断して音節文字に置き換える必要があります。
・ハングルの互換字母(Compatibility Jamo)全角形:U+3130~U+318F
韓国の文字規格 KS X1001:1998 のハングル字母に準拠する全角形94種の文字が定義されています。このブロックの互換字母は組み立てなくても良いようです。
・ハングルの互換字母半角形:U+FFA0~U+FFDF
ここに半角形の互換字母もあります。
・ハングル音節:U+AC00~U+DA73
韓国の文字規格KS C 5601-1992から収録した組み立て済の音節文字が11,172個登録されています。これをJohab文字セットと言います。これらは、ハングル字母の並びから対応つけることができます。対応付けのロジックは、Unicode仕様書3.12節にあります。また、プログラムで字母を組み立てて、音節文字の字形を作ることもできます。
但し、古ハングル文字にはJohab文字セットにないものもあり、その場合は、ハングル字母の並びで表すしかないようです。この場合は、プログラムで音節文字の字形を作り出すことになるのでしょう。
【参考資料】
「文字符号の歴史 アジア編」(三上 喜貴著、共立出版、2002年、ISBN4-320-12040-X )pp.165~174
ハングル フリー百科事典『ウィキペディア(Wikipedia)』
投稿者 koba : 2006年01月18日 08:00
トラックバック
このエントリーのトラックバックURL:
http://blog.antenna.co.jp/PDFTool/mt-tbng2.cgi/125
コメント
そうなんですか。全ての疑問が氷解しました。
何度も、教えていただき、ありがとうございました。
投稿者 koba : 2006年01月24日 17:52
KS C 5601-1992の本文には94×94の文字コードが規定されていて、16-01~40-94に2350字のハングルが収録されています。ただしKS C 5601-1992の附属書には、これとは別に2種類の文字コードが規定されています。その1つが16ビットJohabで、11172字のハングルを収録しています。もう1つは7ビットJamoで、初声・中声・終声をそれぞれ7ビットで表す文字コードです。つまり、KS C 5601-1992には、3種類の全く異なる文字コードが規定されているわけです。
投稿者 安岡孝一 : 2006年01月24日 16:57
安岡さん。ありがとうございました。
KS C 5700:1995について、良く分かりました。
ところで、KS C 5601:1992(KS X 1001:1992)には、11172文字が規定されているのでしょうか?ちなみに、Ken Lunde本の付録Nには2350文字の読みが載っています。
投稿者 koba : 2006年01月23日 09:19
ごめんなさい、1998年5月15日のはAmendment 17じゃなくてAmendment 5でした。ごめんなさい、訂正します。
投稿者 安岡孝一 : 2006年01月22日 12:53
KS C 5700-1995は、ISO/IEC 10646-1:1993を韓国語に翻訳した規格です。ただし、単に翻訳しただけではなくて、内容も一部変わっています。1993年5月1日制定のISO/IEC 10646-1では、ハングルは3400~4DFFに6656字収録されていました。これに対し、1995年12月7日制定のKS C 5700では、ハングルはAC00~D7A3に移動しており、11172字が収録されていました。ちなみにUnicodeは、1991年10月のUnicode 1.0では3400~3D2Dにハングル2350字を収録していたのに、1996年7月のUnicode 2.0ではAC00~D7A3に移動しています。
これらに押し切られる形で、ISO側も1998年5月15日のISO/IEC 10646-1:1993 Amendment 17で、ハングルをAC00~D7A3に移動しました。これが、KS C 5700が果たした最大の「役割」だと、私個人は考えます。
投稿者 安岡孝一 : 2006年01月22日 00:41
1月22日に、本文を次の通り訂正しました。ご指摘ありがとうございました。
Jahob→Johab
A. 三上さんの書籍(「文字符号の歴史」pp. 172-174)からハングル(組合済)文字の符号標準化の歴史を整理しますと次のようになります。
・1971年 KS C 5601 1バイト版 誕生(字母のみ)
・1982年 KS C 5601 改訂で付属書1に2バイト版登場。ハングル組合済1316文字
・1987年 KS C 5601 改訂で本文が2バイト版になる。ハングル組合済2350文字を規定
これをKSコードという。
・1990年 KS C 5659 ハングル組合済追加1930文字を規定
・1991年 KS C 5657 ハングル組合済追加2376文字を規定
・Unicode1.1に、5601、5659、5657の文字を収容
文字数は、2350+1930+2376=6656字
・1995年 KS C 5700 (Johabコード)制定 ハングル組合済11172文字を規定
・Unicode2.0で新領域を確保して11172文字を収容。V1.1のハングル6656文字割り当て済み領域を開放。
B. UnicodeV4.0の仕様書(p.315)には、U+AC00~U+D7A3はKS C 5601-1992から収録した、とあります。しかも、ご丁寧に、KS C 5601-1992の後ろに、representing the full Johab set とあります。
A.B.二つの記述は矛盾している印象を受けます。
○疑問点
KS C 5601-1992(KS X 1001:1992に改番)に11172文字が収容されているなら、1995年のKS C 5700は(KS X 1005:1998に改番)は、どういう役割なんでしょう。
投稿者 koba : 2006年01月21日 10:55
KS C 5601の附属書に、組合(JahobじゃなくてJohab)型16ビット符号が追加されたのは、1982年6月14日の改正においてです。ただし、この組合型符号は1992年10月15日に再改正されて、しかも1997年8月20日には規格番号がKS C 5601からKS X 1001に変わりましたから、確かにヤヤコシイんですけどね…。
投稿者 安岡孝一 : 2006年01月21日 00:52