ベトナム語の文字というと漢字や字喃もありますが, ここでは現在使われているクオック・グーのみ扱います。
ベトナムは漢字を廃止してしまったので, 符号化文字集合も中国・日本・韓国とは大幅に異なります。 原則としてシングルバイト文字集合なので, 何十種類ものフォントが無償で供給されていて簡単にダウンロードできたり, dynamic font の機能を使って, クライアントがベトナム語のフォントを持たなくても ベトナム語 WEB ページがみられるようにできたり, TEX では(専用のフォントを特に用意しなくても) マクロだけでベトナム語に対応できたりと, うらやましい限りです。
しかしその一方, 文字集合が統一されていない欠点があります。 いちおう標準はあるのですが, いくつもの文字集合が乱立し, それぞれある程度の勢力をもって使われています。
クオック・グーの母音用文字は 12個。 そのうち 6個(AEIOUY) は ASCII の領域に存在するので, 残り 6字と, 横棒のある D の 7字を最低追加しなければなりません。 それぞれ大文字と小文字があるので, 実際に追加する文字は 14字となります。 また声調記号が 5個あるので, 声調の異なる母音字に別々の符号位置を割り当てようとすると 12x5 = 60字, それぞれに大文字とと小文字があるので, 都合 14 + 60x2 = 134字を ASCII に対して追加しなければなりません。
この他に, ドン(dong, 通貨記号)や独立した声調記号を必要とするかもしれません。
134字という数は ISO-2022 1バイト文字集合の 94/96字はもちろん, 80H-FFH の 128字を全部使っても間に合わない数で, このためベトナム語の文字集合は以下のような解決策をとることを迫られます。
複数の解決策を併用することもあります。 たとえば, VISCII などでは声調付き大文字のいくつかを制御文字に割り当てていますが, 一部のアプリケーションではうまくあつかえないので, ふつうの文字集合の小文字を大文字に差し替えた Hoa (chu+~ hoa 「字花」, 大文字の意)フォントというのを用意して, これで代用できるようにしています。
なお, このページでベトナム語用文字が必要な場合には VIQR(後述)のニーモニックを使います。
TCVN-5712:1993 国家標準のことです。 ABC, VSCII(後述の VISCII とは別物)とも呼びます。 何種類かあります。 VN-3 では声調付きの大文字を省略した 74字を入れています。 もともと DOS 用らしく, あいたところには罫線素片などが入っています。 VN-1 では罫線文字や制御文字の領域をつぶし, 声調つき大文字と結合用の声調記号をあわせた 139字が使えます。 小文字は比較的整然と並んでいますが, 声調つき大文字はアキを利用しているのでかなり異様な配列になっています。
Vietnam WEB から .VnTime などの TrueType フォントを無料でダウンロードできます。 これらのフォントには声調付き大文字はありません (声調付き大文字が必要ならば上記の Hoa フォントを使う)。 ただし罫線素片はなく, アキになっています。
RFC-1456 で規定されています。 1992年の1月に 1.0 が出ましたが, 同年 9月にはすべての小文字が MS-Windows 上で問題なく扱えるように a. と O~ の符号位置を変更した 1.1 になりました。 (Mac の VISCII が Y? Y. の 2字に VISCII 1.1 と異なる符号位置を与えており, この問題に対処したものを VISCII 2.0 と呼んでいるのを見たことがありますが, これは正式なバージョンではないようです)
WEB ページその他で一番多く使われているようです。 制御文字の領域まで使って 134字を押し込んだものですが, TCVN とは全く互換性がありません。 Latin-1 にある文字をなるべく生かそうとしているため, かなり奇妙な配列になっています。
Vietnamese-Standard Working Group Home Page を参照のこと。 なぜこのような配列になっているのか, という rationale があります。
Windows95 上では, TriChlor Organization の WinVNKey という有名なソフトウェアで VISCII の表示と入力ができるようになります。 (ただしいくつかのフォントがフォント名にアクセントつき文字を使っているので, 日本語Windows ではうまく選択できないようです)
また, VN net: VIE^T FONTS では Dynamic Truetype font を提供しており, 相手がフォントを持っていなくてもベトナム語のページを作ることができます。 ただし, なぜか以下の文字の符号位置が標準と異なるようです。 フォントのバグかもしれません。
| 文字 | A^~ | A(? | A(~ | Y? | Y~ | Y. |
|---|---|---|---|---|---|---|
| VISCII | 06 | 02 | 05 | 14 | 19 | 1E |
| VN net | 02 | 19 | -- | -- | -- | -- |
VISCII とともに RFC-1456 で定義されています。 a(? u+. のように ASCII 文字の組み合わせで特殊文字を表現するので, 特別にフォントを用意しなくても一応読める長所があります。 また 7bit である特長を生かして soc.culture.vietnamese などのニュースグループでもよく使われているようです。 記号とその意味は下の通りです。
| ( | breve |
| ^ | circumflex |
| + | horn |
| ' | acute [thanh sa('c] |
| ` | grave [thanh huye^`n] |
| ? | hook above [thanh ho?i] |
| ~ | tilde [thanh nga~] |
| . | dot below [thanh na(.ng] |
| DD | D bar |
| dd | d bar |
「O+, U+」のかわりに「O*, U*」を使う変種も見かけますが, どういう理由があるのか知りません。
VNTeX というベトナム語テキストを TEX の入力に変換するプリプロセッサ(CTAN にある) でも VIQR の変種 (O+, U+ の代わりに OO, UU を使う)を使っています。
Mule は VISCII, VSCII(=TCVN), VIQR に対応しています。 入力方式としても VIQR を採用しています。
Vietnamese Professionals Society の使っている文字集合。
VISCII に少しにていますが, 互換性はありません。 I. O. など一部の声調つき大文字を欠いているようです。 これらの文字を利用するためにはやはり Hoa フォントを利用することになります。
Windows, Macintosh 用の美しいフォント 100種類近く (VPS Times, VPS Helvetica, etc.) を無料でダウンロードできます。
VNI Software 社の使っている文字集合。
アクセント記号と声調を結合文字としており, 他の文字集合とは構造がかなり異なっています。 大文字用と小文字用の声調記号に別々の符号位置を割り当てているのも 特徴的です。
フォント (VNI-Aptima, VNI-Helve, VNI-Times, VNI-Internet Mail) を無料でダウンロードできます。
MS Windows の標準コードページ。 Unicode Consortium の ftp サイトに Win1258 と Unicode の対照表があります。
コードページ 1252(ISO-8859-1 もどき)に極力似せてあるようです。 声調つき文字に独立した符号位置を与えるのでなく, 声調だけに符号位置 '(EC) `(CC) ?(D2) ~(DE) .(F2) を割り当て, 合成によって表現します。 ベトナム語固有の文字はこれ以外に O+(D5) o+(F5) U+(DD) u+(FD) DD(D0) dd(F0) dd.(FE) があります。 あとは 1252 に同じです。
類似の文字集合に, Win1258 から 80H-9FH 部分の拡張文字を除いた 8859-V, それと微妙に異なる IBM cp1129 などがあるそうです。
ベトナム語用の文字は 0000-00FF, 0100-01FF, 1EA0-1EF9 の 3つの範囲に分散しています。 また dong は Amendment 7 で 20AB に追加されました。 マイクロソフトの供給している Tahoma フォントはこれらすべてを実装しています。 Windows98 には標準で Tahoma が入っています。 Windows95 の場合は MSL からダウンロードできます。 また, Office97 の CD-ROM にも入っているので, 気づかないうちにインストールされている場合も多いでしょう。
他にも VNU とかいくつもの文字集合があるようですが資料がないので省略します。
この文章を書くにあたって参照したページ(上にあげたものは除く)です。
各文字集合の対照表を作ってみました。 (極端に異なる VNI を除く) 声調の並び順は本により一定しませんが, ここでは VISCII のレポートに書いてあった順で並べてあります。
| 文字 | A | A | A | A | A | A | a | a | a | a | a | a |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 41 | 83 | 80 | 81 | 82 | 84 | 61 | B8 | B5 | B6 | B7 | B9 |
| TCVN-3 | 41 | 61 | B8 | B5 | B6 | B7 | B9 | |||||
| VPS | 41 | C1 | 80 | 81 | 82 | 02 | 61 | E1 | E0 | E4 | E3 | E5 |
| VISCII | 41 | C1 | C0 | C4 | C3 | 80 | 61 | E1 | E0 | E4 | E3 | D5 |
| 1258 | 41 | C1 | C0 | 61 | E1 | E0 | ||||||
| UCS-2 | 0041 | 00C1 | 00C0 | 1EA2 | 00C3 | 1EA0 | 0061 | 00E1 | 00E0 | 1EA3 | 00E3 | 1EA1 |
| 文字 | A( | A( | A( | A( | A( | A( | a( | a( | a( | a( | a( | a( |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A1 | C0 | AF | BA | BF | 85 | A8 | BE | BB | BC | BD | C6 |
| TCVN-3 | A1 | A8 | BE | BB | BC | BD | C6 | |||||
| VPS | 88 | 8D | 8E | 8F | F0 | 04 | E6 | A1 | A2 | A3 | A4 | A5 |
| VISCII | C5 | 81 | 82 | 02 | 05 | 83 | E5 | A1 | A2 | C6 | C7 | A3 |
| 1258 | C3 | E3 | ||||||||||
| UCS-2 | 0102 | 1EAE | 1EB0 | 1EB2 | 1EB4 | 1EB6 | 0103 | 1EAF | 1EB1 | 1EB3 | 1EB5 | 1EB7 |
| 文字 | A^ | A^ | A^ | A^ | A^ | A^ | a^ | a^ | a^ | a^ | a^ | a^ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A2 | C4 | C1 | C2 | C3 | 86 | A9 | CA | C7 | C8 | C9 | CB |
| TCVN-3 | A2 | A9 | CA | C7 | C8 | C9 | CB | |||||
| VPS | C2 | 83 | 84 | 85 | 1C | 03 | E2 | C3 | C0 | C4 | C5 | C6 |
| VISCII | C2 | 84 | 85 | 86 | 06 | 87 | E2 | A4 | A5 | A6 | E7 | A7 |
| 1258 | C2 | E2 | ||||||||||
| UCS-2 | 00C2 | 1EA4 | 1EA6 | 1EA8 | 1EAA | 1EAC | 00E2 | 1EA5 | 1EA7 | 1EA9 | 1EAB | 1EAD |
| 文字 | E | E | E | E | E | E | e | e | e | e | e | e |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 45 | 8A | 87 | 88 | 89 | 8B | 65 | D0 | CC | CE | CF | D1 |
| TCVN-3 | 45 | 65 | D0 | CC | CE | CF | D1 | |||||
| VPS | 45 | C9 | D7 | DE | FE | 05 | 65 | E9 | E8 | C8 | EB | CB |
| VISCII | 45 | C9 | C8 | CB | 88 | 89 | 65 | E9 | E8 | EB | A8 | A9 |
| 1258 | 45 | C9 | C8 | 65 | E9 | E8 | ||||||
| UCS-2 | 0045 | 00C9 | 00C8 | 1EBA | 1EBC | 1EB8 | 0065 | 00E9 | 00E8 | 1EBB | 1EBD | 1EB9 |
| 文字 | E^ | E^ | E^ | E^ | E^ | E^ | e^ | e^ | e^ | e^ | e^ | e^ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A3 | DA | C5 | CD | D9 | 8C | AA | D5 | D2 | D3 | D4 | D6 |
| TCVN-3 | A3 | AA | D5 | D2 | D3 | D4 | D6 | |||||
| VPS | CA | 90 | 93 | 94 | 95 | 06 | EA | 89 | 8A | 8B | CD | 8C |
| VISCII | CA | 8A | 8B | 8C | 8D | 8E | EA | AA | AB | AC | AD | AE |
| 1258 | CA | EA | ||||||||||
| UCS-2 | 00CA | 1EBE | 1EC0 | 1EC2 | 1EC4 | 1EC6 | 00EA | 1EBF | 1EC1 | 1EC3 | 1EC5 | 1EC7 |
| 文字 | I | I | I | I | I | I | i | i | i | i | i | i |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 49 | 90 | 8D | 8E | 8F | 91 | 69 | DD | D7 | D8 | DC | DE |
| TCVN-3 | 49 | 69 | DD | D7 | D8 | DC | DE | |||||
| VPS | 49 | B4 | B5 | B7 | B8 | 69 | ED | EC | CC | EF | CE | |
| VISCII | 49 | CD | CC | 9B | CE | 98 | 69 | ED | EC | EF | EE | B8 |
| 1258 | 49 | CD | 69 | ED | ||||||||
| UCS-2 | 0049 | 00CD | 00CC | 1EC8 | 0128 | 1ECA | 0069 | 00ED | 00EC | 1EC9 | 0129 | 1ECB |
| 文字 | O | O | O | O | O | O | o | o | o | o | o | o |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 4F | 95 | 92 | 93 | 94 | 96 | 6F | E3 | DF | E1 | E2 | E4 |
| TCVN-3 | 4F | 6F | E3 | DF | E1 | E2 | E4 | |||||
| VPS | 4F | B9 | BC | BD | BE | 6F | F3 | F2 | D5 | F5 | 86 | |
| VISCII | 4F | D3 | D2 | 99 | A0 | 9A | 6F | F3 | F2 | F6 | F5 | F7 |
| 1258 | 4F | D3 | 6F | F3 | ||||||||
| UCS-2 | 004F | 00D3 | 00D2 | 1ECE | 00D5 | 1ECC | 006F | 00F3 | 00F2 | 1ECF | 00F5 | 1ECD |
| 文字 | O^ | O^ | O^ | O^ | O^ | O^ | o^ | o^ | o^ | o^ | o^ | o^ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A4 | FF | DB | E0 | F0 | 97 | AB | E8 | E5 | E6 | E7 | E9 |
| TCVN-3 | A4 | AB | E8 | E5 | E6 | E7 | E9 | |||||
| VPS | D4 | 96 | 97 | 98 | 99 | F4 | D3 | D2 | B0 | 87 | B6 | |
| VISCII | D4 | 8F | 90 | 91 | 92 | 93 | F4 | AF | B0 | B1 | B2 | B5 |
| 1258 | D4 | F4 | ||||||||||
| UCS-2 | 00D4 | 1ED0 | 1ED2 | 1ED4 | 1ED6 | 1ED8 | 00F4 | 1ED1 | 1ED3 | 1ED5 | 1ED7 | 1ED9 |
| 文字 | O+ | O+ | O+ | O+ | O+ | O+ | o+ | o+ | o+ | o+ | o+ | o+ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A5 | 9B | 98 | 99 | 9A | 9C | AC | ED | EA | EB | EC | EE |
| TCVN-3 | A5 | AC | ED | EA | EB | EC | EE | |||||
| VPS | F7 | 9D | 9E | 9F | A5 | D6 | A7 | A9 | AA | AB | AE | |
| VISCII | B4 | 95 | 96 | 97 | B3 | 94 | BD | BE | B6 | B7 | DE | FE |
| 1258 | D5 | F5 | ||||||||||
| UCS-2 | 01A0 | 1EDA | 1EDC | 1EDE | 1EE0 | 1EE2 | 01A1 | 1EDB | 1EDD | 1EDF | 1EE1 | 1EE3 |
| 文字 | U | U | U | U | U | U | u | u | u | u | u | u |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 55 | 01 | 9D | 9E | 9F | 02 | 75 | F3 | EF | F1 | F2 | F4 |
| TCVN-3 | 55 | 75 | F3 | EF | F1 | F2 | F4 | |||||
| VPS | 55 | DA | A8 | D1 | AC | 75 | FA | F9 | FB | DB | F8 | |
| VISCII | 55 | DA | D9 | 9C | 9D | 9E | 75 | FA | F9 | FC | FB | F8 |
| 1258 | 55 | DA | D9 | 75 | FA | F9 | ||||||
| UCS-2 | 0055 | 00DA | 00D9 | 1EE6 | 0168 | 1EE4 | 0075 | 00FA | 00F9 | 1EE7 | 0169 | 1EE5 |
| 文字 | U+ | U+ | U+ | U+ | U+ | U+ | u+ | u+ | u+ | u+ | u+ | u+ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | A6 | 11 | 04 | 05 | 06 | 12 | AD | F8 | F5 | F6 | F7 | F9 |
| TCVN-3 | A6 | AD | F8 | F5 | F6 | F7 | F9 | |||||
| VPS | F0 | AD | AF | B1 | 1D | 15 | DC | D9 | D8 | BA | BB | BF |
| VISCII | BF | BA | BB | BC | FF | B9 | DF | D1 | D7 | D8 | E6 | F1 |
| 1258 | DD | FD | ||||||||||
| UCS-2 | 01AF | 1EE8 | 1EEA | 1EEC | 1EEE | 1EF0 | 01B0 | 1EE9 | 1EEB | 1EED | 1EEF | 1EF1 |
| 文字 | Y | Y | Y | Y | Y | Y | y | y | y | y | y | y |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | ' | ` | ? | ~ | . | ||
| TCVN-1 | 59 | 16 | 13 | 14 | 15 | 17 | 79 | FD | FA | FB | FC | FE |
| TCVN-3 | 59 | 79 | FD | FA | FB | FC | FE | |||||
| VPS | 59 | DE | B2 | FD | B3 | 19 | 79 | 9A | FF | 9B | CF | 9C |
| VISCII | 59 | DD | 9F | 14 | 19 | 1E | 79 | FD | CF | D6 | DB | DC |
| 1258 | 59 | 79 | ||||||||||
| UCS-2 | 0059 | 00DD | 1EF2 | 1EF6 | 1EF8 | 1EF4 | 0079 | 00FD | 1EF3 | 1EF7 | 1EF9 | 1EF5 |
| 文字 | DD | dd | dong | 結合用 | ||||
|---|---|---|---|---|---|---|---|---|
| 声調 | ' | ` | ? | ~ | . | |||
| TCVN-1 | A7 | AE | B3 | B0 | B1 | B2 | B4 | |
| TCVN-3 | A7 | AE | ||||||
| VPS | F1 | C7 | ||||||
| VISCII | D0 | F0 | ||||||
| 1258 | D0 | F0 | FE | EC | CC | D2 | DE | F2 |
| UCS-2 | 0110 | 0111 | 20AB | 0301 | 0300 | 0309 | 0303 | 0323 |