1. ホーム >
  2. korea.nabwa >
  3. HTML上での日韓混在

HTML上での日韓混在

HTML文書において、日本語(カナ、漢字)と韓国語(ハングル)を混在させる方法について研究してみた。

ユニコードの使用

ユニコードで文書を作成する方法。日韓混在を実現する最も規格に即した方法である。

ユニコードとは

ユニコードとは、アルファベットやカナ、漢字、ハングルはもちろん、ヘブライ文字やタイ文字、その他世界中の言語で使用されている文字・記号全てを、一つの統一した文字コード体系に収めたもの。フォントさえあれば、あらゆる文字を一つの文書中に含めることができる。日韓混在はもちろんのこと、日・韓・中・英・タイ・ロシア・ヘブライ語混在などというのも可能。

互換性の問題

従来の日本語文字コード体系と互換性がないという点は大きな問題である。ユニコードに対応していないアプリケーションで見ると、激しく文字化けしてしまう。ブラウザとしてはIE、NNともにバージョン4から対応しており、ほとんどの環境では問題ないと言えるが、携帯端末やゲーム機端末などは未対応であるし、IE3やNN3以下のブラウザを使っている人が皆無ではない。そうした環境を考慮すると、ユニコードの導入にはまだ二の足を踏むところである。ただ、それではいつまで経っても普及しないので、そろそろ導入に踏み切ってもよい時期ではある。

作成環境の問題

一方、ユニコードで文書を作成編集できるアプリケーションというのも限られている。OutlookやExcel、Wordなどは対応しているがいずれもHTML編集には適しているとは言い難い。「秀丸」などは対応しているが、まだそれほど数は多くないのが現状。そもそも編集自体は可能であっても、入力できる方法が限られている。Microsoft Global IMEは、Windows98/MEでは、Internet Explorer、Outlook/Outlook Expressでしか使えないようになっており、それ以外のアプリケーションでは利用できない。(Windows 2000/XPでは他のアプリケーションでも利用可能)

数値文字参照

数値文字参照方式の利用

文書自体をユニコードで作成した場合、対応していない環境では完全に文字化けしてしまう。実際に日韓混在文書の場合、メインは日本語で、補助的な情報として韓国語(ハングル)を部分的に埋め込むケースが多い。見えないならば見えないで構わない情報のために、メインの文章まで文字化けしてしまうというのもやるせない。そこで、メインの文章は普通に日本語で書き、ハングル部分のみを数値文字参照を使って書く方法がある。

<span lang="ko">&#44053;&#49688;&#51648;</span>

数値文字参照とは

HTML文書中で<や>、&などの特殊な意味を持つ文字を表示させたい時は、それぞれ&lt;、&gt;、&amp;のように記述するのは周知の通りである。これを文字実体参照といい、HTML上で特殊な意味を持つ文字の他、ウムラウト記号を持つアルファベットなど、ASCIIコードに含まれない文字を表すのにも利用されている。

これら文字実体参照は、&と;の間にその文字を意味する文字列を記述して表す。(gt(>)はGreater Than、lt(<)はLess Than、amp(&)はampersandの略である)

一方でこれら文字実体参照で定義されていない文字も、&#と;の間にユニコードの文字コード番号を記述することによって、表すことができる。これを数値文字参照といい、ハングルもこの方法で表すことができる。

数値文字参照の利点

数値文字参照を認識しない、あるいは認識してもフォントがない場合は、当然ハングルは表示されない。しかし、?や□(俗に言う「豆腐」)、あるいは関係ない文字に化ける程度で、日本語部分にまで文字化けを引き起こすことは(知る限り)ない。また、編集や入力のために特定の対応アプリケーションも不要である。

ハングルの表し方

ハングルは、通常の文字がユニコード番号44032〜55203の範囲に、字母がユニコード番号12593〜12686の範囲に並んでいる。各文字は、子音字母19・母音字母21・パッチム27、全ての組み合わせが規則的に並んでいる。そのため、といった絶対に使うことのないような文字まで無駄に収録されているのであるが、次のような計算式で文字コードを求めることもできる。

子音字母番号
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
母音字母番号
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
パッチム番号
*
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

(ユニコード番号) = (子音字母番号 x 588) + (母音字母番号 x 28) + (パッチム番号) + 44032

数値文字参照の欠点

短い単語程度の長さであればそれほど苦にはならないが、ある程度の長さがある文章や、短くても大量にある場合など、一つ一つ手作業でコードを計算するのは気の遠くなる話である。結局は簡単なツールや変換スクリプトなどのお世話にならざるを得ない。

変換ツール

自動的に数値文字参照形式に変換してくれる簡単ツールが存在する。

さだひろさん作のInstant Korean Numeric Character Reference Maker。Javascriptで組まれているので、IE5.0以上であれば簡単に動作する(はず)。通常の2ボル式でハングルを入力する感覚で各字母ボタンを押してゆき、1文字ごとに「SYL」ボタンを押すと、自動的に数値文字参照形式の文字列に変換してくれる、便利なツールである。(各ボタンにはACCESSKEYも割り当ててあるので、ALT(MacならOption)キーを押しながらキーボードの各キーを叩くことで、まさしく2ボル式入力感覚で入力をすることも可能である)

KSフォントの指定

<font face="Gulim,Seoul,KS P Gothic"><nobr>ーュ<wbr>シ・ <wbr>チ・ </nobr></font>

FONT FACEを用いた日韓混在方法

テキストの使用フォントを指定するFONT要素のFACE属性は、IE3の独自拡張として初めて登場した。その後Netscape3にも同じものが実装され、日韓混在技術の研究が幕を開けたとも言える。

しかし、これらの方法はすでに古い技術となっており、現在はあまりお勧めできない。これらの技術に対応していて、かつ上記のユニコードを用いた方法に未対応のブラウザは、IE3やNetscape3,4くらいで、いずれも現在では利用率はきわめて低くなっている。またこの方法では、逆に最近のブラウザではうまくいかない場合も多い。

KSコード体系

KSコードとは、日本語におけるJISコードに相当する、韓国語における標準の文字コード体系である。

対応ブラウザ

この方式に対応しているブラウザは、IE3およびMacのNetscape3,4である。IE4以降は、日本語文書の中にKSコードの文字を埋め込んでも、それはあくまで日本語の半角カナとしか認識してくれない。lang="ko"を指定しても同じである。またWimdowsのNetscapeは、日本語文書の中で日本語フォント以外を指定しても無効となる。

文字化けの危険性

次の文字と融合してしまう場合がある。特に<と融合してしまうと、font指定がそこで終了しないため、後ろに続く通常の日本語の文章も全てKSフォントで表示され、激しい文字化けを引き起こしてしまう。それを防ぐために、末尾に半角スペースを置くなどの細工が必要とされた。

また、システムから見れば単なる半角カナの羅列でしかないため、行末での折り返しの際に、文字の真ん中で折り返しが起こってしまう可能性がある。それを防ぐために、IE、NNの独自拡張要素であるNOBR要素とWBR要素を利用して、折り返しを制御する方法もとられた。

KWフォントの指定

<font face="KW韓国ゴシック,OMSK韓国明朝">悪呪走</font>

KW方式

多言語設計になっていない昔のアプリケーションでは、うまく日韓混在をさせることができなかった。その中で無理矢理日韓混在を実現させるために、文字コードはあくまで日本語コードだが、表示される字形は韓国語、という特殊フォントが開発された。高電社のKorean Writerが採用したので、KWフォント、あるいはKW方式という。

対応ブラウザ

FONT FACEに対応しているIE3以上、Netscape3以上であれば、システム上は混在表示が可能である。ただしWindowsのNetscape3,4に関しては、フォント名に日本語が含まれていると無効になってしまう。各社から発売されている「KW韓国ゴシック」「OMSK韓国明朝」など、いずれも名前に日本語が含まれているため、実際にはほとんど対応していなかったと言っても過言ではない。

KWフォント

一頃はKorean WriterやKWnnなど、韓国ミーハーならば必須のアイテムと言われていたものの、ユニコード対応のアプリケーションも増え、韓国語フォントもOSに標準添付される現在、KW方式による擬似混在技術は役目を終えたと言ってもよい。

その他の日韓混在

KSコード

日本語JISコードにα,βなどのギリシャ文字やЮ,Яなどのキリル文字が含まれているのと同じ感覚で、韓国語KSコードにはひらがなカタカナが含まれている。漢字も日常で使う範囲のものは含まれている。つまり視点を逆にして、韓日混在であればそれほど工夫をしなくても実現可能なのである。

しかし、韓国語フォントの漢字は全て旧字体(正字体)であり、ひらがなカタカナの書体もあまりきれいとは言えず、スマートな方法ではない。

画像で表示

ハングル部分を画像にして埋め込む方法である。画像の表示できるブラウザであれば必ず表示でき、最も多くの環境下で日韓混在が実現可能な方法である。ALT属性を与えれば、画像を表示できない/しない環境においても、情報を与えることができる。

とは言うものの、やはり量が多い場合には根気のいる作業になる。後からフォントを変えたい、文字色を変更したい、などの要求には基本的に応えられない。


Last Modified 2003-02-24, nabwa@turboclub.net