[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#53752: marked as done (xlibs: Vietnamese (vi_VN) localization)



Your message dated Sun, 19 Sep 2004 09:02:52 +0200
with message-id <20040919070252.GA1104@linuxfr.org>
and subject line Bug#53752: xlibs: Vietnamese (vi_VN) localization
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 30 Dec 1999 22:27:53 +0000
Received: (qmail 18815 invoked from network); 30 Dec 1999 22:27:51 -0000
Received: from chupacabras.flash.net (209.30.2.16)
  by master.debian.org with SMTP; 30 Dec 1999 22:27:51 -0000
Received: from ghoti.home (209-30-246-231.flash.net [209.30.246.231])
	by chupacabras.flash.net (8.9.3/Pro-8.9.3) with ESMTP id QAA27448
	for <submit@bugs.debian.org>; Thu, 30 Dec 1999 16:27:22 -0600 (CST)
Received: from aclark by ghoti.home with local (Exim 3.11 #1 (Debian))
	id 123o2T-0007FX-00; Thu, 30 Dec 1999 16:27:21 -0600
From: Ashley Clark <aclark@ghoti.org>
Subject: xlib6g: Vietnamese (vi_VN) localization patch
To: submit@bugs.debian.org
X-Mailer: bug 3.2.7
Message-Id: <E123o2T-0007FX-00@ghoti.home>
Date: Thu, 30 Dec 1999 16:27:21 -0600

Package: xlib6g
Version: 3.3.5-2
Severity: wishlist

Included is a patch enabling the vi_VN.TCVN and vi_VN.VISCII locales in
Xlib.

It was obtained from Pablo Saratxaga <pablo@mandrakesoft.com> who may or may
not have submitted it upstream, if not it should be probably be forwarded
upstream.

Pablo's original patch also included changes for Georgian, Russian (KOI8-R,
KOI8-U and Microsoft CP1251) but I have no way of testing them and so am
only submitting the portions that deal with Vietnamese. I've tested this on
my system and with the proper font encodings everything seems to work.

-- System Information
Debian Release: potato
Kernel Version: Linux ghoti 2.2.13 #1 Wed Oct 20 08:50:54 CDT 1999 i586 unknown

Versions of the packages xlib6g depends on:
ii  libc6           2.1.2-11       GNU C Library: Shared libraries and Timezone
ii  xfree86-common  3.3.5-3        X Window System (XFree86) infrastructure

----- patch follows -----

--- xc/include/keysymdef.h.aclark	Thu Dec 23 20:48:44 1999
+++ xc/include/keysymdef.h	Thu Dec 23 20:54:44 1999
@@ -323,6 +323,22 @@
 #define	XK_dead_voiced_sound				0xFE5E
 #define	XK_dead_semivoiced_sound			0xFE5F
 #define	XK_dead_belowdot				0xFE60
+#define  XK_dead_hook          0xFE61
+#define  XK_dead_horn          0xFE62
+#define  XK_dead_A         0xFE63
+#define  XK_dead_a         0xFE64
+#define  XK_dead_d         0xFE65
+#define  XK_dead_D         0xFE66
+#define  XK_dead_e         0xFE67
+#define  XK_dead_E         0xFE68
+#define  XK_dead_i         0xFE69
+#define  XK_dead_I         0xFE6A
+#define  XK_dead_o         0xFE6B
+#define  XK_dead_O         0xFE6C
+#define  XK_dead_u         0xFE6D
+#define  XK_dead_U         0xFE6E
+#define  XK_dead_y         0xFE6F
+#define  XK_dead_Y         0xFE70
 
 #define	XK_First_Virtual_Screen				0xFED0
 #define	XK_Prev_Virtual_Screen				0xFED1
@@ -575,6 +591,7 @@
 #define XK_Odiaeresis          0x0d6
 #define XK_multiply            0x0d7
 #define XK_Ooblique            0x0d8
+#define XK_Oslash         XK_Ooblique
 #define XK_Ugrave              0x0d9
 #define XK_Uacute              0x0da
 #define XK_Ucircumflex         0x0db
@@ -608,6 +625,7 @@
 #define XK_odiaeresis          0x0f6
 #define XK_division            0x0f7
 #define XK_oslash              0x0f8
+#define XK_ooblique         XK_oslash
 #define XK_ugrave              0x0f9
 #define XK_uacute              0x0fa
 #define XK_ucircumflex         0x0fb
@@ -1577,6 +1595,118 @@
 #define XK_Korean_Won					0xeff
 
 #endif /* XK_KOREAN */
+
+/*
+ *   Vietnamese
+ *   Byte 3 = 0x1e
+ */
+
+#ifdef XK_VIETNAMESE
+/* these two are from Latin8 and should be moved when it is added */
+#define XK_Ygrave         0x12ac
+#define XK_ygrave         0x12bc
+/* --- */
+#define XK_Abelowdot         0x1ea0
+#define XK_abelowdot         0x1ea1
+#define XK_Ahook         0x1ea2
+#define XK_ahook         0x1ea3
+#define XK_Acircumflexacute        0x1ea4
+#define XK_acircumflexacute        0x1ea5
+#define XK_Acircumflexgrave        0x1ea6
+#define XK_acircumflexgrave        0x1ea7
+#define XK_Acircumflexhook       0x1ea8
+#define XK_acircumflexhook       0x1ea9
+#define XK_Acircumflextilde        0x1eaa
+#define XK_acircumflextilde        0x1eab
+#define XK_Acircumflexbelowdot       0x1eac
+#define XK_acircumflexbelowdot       0x1ead
+#define XK_Abreveacute         0x1eae
+#define XK_abreveacute         0x1eaf
+#define XK_Abrevegrave         0x1eb0
+#define XK_abrevegrave         0x1eb1
+#define XK_Abrevehook          0x1eb2
+#define XK_abrevehook          0x1eb3
+#define XK_Abrevetilde         0x1eb4
+#define XK_abrevetilde         0x1eb5
+#define XK_Abrevebelowdot        0x1eb6
+#define XK_abrevebelowdot        0x1eb7
+#define XK_Ebelowdot         0x1eb8
+#define XK_ebelowdot         0x1eb9
+#define XK_Ehook         0x1eba
+#define XK_ehook         0x1ebb
+#define XK_Etilde          0x1ebc
+#define XK_etilde          0x1ebd
+#define XK_Ecircumflexacute        0x1ebe
+#define XK_ecircumflexacute        0x1ebf
+#define XK_Ecircumflexgrave        0x1ec0
+#define XK_ecircumflexgrave        0x1ec1
+#define XK_Ecircumflexhook       0x1ec2
+#define XK_ecircumflexhook       0x1ec3
+#define XK_Ecircumflextilde        0x1ec4
+#define XK_ecircumflextilde        0x1ec5
+#define XK_Ecircumflexbelowdot       0x1ec6
+#define XK_ecircumflexbelowdot       0x1ec7
+#define XK_Ihook         0x1ec8
+#define XK_ihook         0x1ec9
+#define XK_Ibelowdot         0x1eca
+#define XK_ibelowdot         0x1ecb
+#define XK_Obelowdot         0x1ecc
+#define XK_obelowdot         0x1ecd
+#define XK_Ohook         0x1ece
+#define XK_ohook         0x1ecf
+#define XK_Ocircumflexacute        0x1ed0
+#define XK_ocircumflexacute        0x1ed1
+#define XK_Ocircumflexgrave        0x1ed2
+#define XK_ocircumflexgrave        0x1ed3
+#define XK_Ocircumflexhook       0x1ed4
+#define XK_ocircumflexhook       0x1ed5
+#define XK_Ocircumflextilde        0x1ed6
+#define XK_ocircumflextilde        0x1ed7
+#define XK_Ocircumflexbelowdot       0x1ed8
+#define XK_ocircumflexbelowdot       0x1ed9
+#define XK_Ohornacute          0x1eda
+#define XK_ohornacute          0x1edb
+#define XK_Ohorngrave          0x1edc
+#define XK_ohorngrave          0x1edd
+#define XK_Ohornhook         0x1ede
+#define XK_ohornhook         0x1edf
+#define XK_Ohorntilde          0x1ee0
+#define XK_ohorntilde          0x1ee1
+#define XK_Ohornbelowdot       0x1ee2
+#define XK_ohornbelowdot       0x1ee3
+#define XK_Ubelowdot         0x1ee4
+#define XK_ubelowdot         0x1ee5
+#define XK_Uhook         0x1ee6
+#define XK_uhook         0x1ee7
+#define XK_Uhornacute          0x1ee8
+#define XK_uhornacute          0x1ee9
+#define XK_Uhorngrave          0x1eea
+#define XK_uhorngrave          0x1eeb
+#define XK_Uhornhook         0x1eec
+#define XK_uhornhook         0x1eed
+#define XK_Uhorntilde          0x1eee
+#define XK_uhorntilde          0x1eef
+#define XK_Uhornbelowdot       0x1ef0
+#define XK_uhornbelowdot       0x1ef1
+#define XK_Ybelowdot         0x1ef4
+#define XK_ybelowdot         0x1ef5
+#define XK_Yhook         0x1ef6
+#define XK_yhook         0x1ef7
+#define XK_Ytilde          0x1ef8
+#define XK_ytilde          0x1ef9
+#define XK_Ohorn         0x1efa /* U+01a0 */
+#define XK_ohorn         0x1efb /* U+01a1 */
+#define XK_Uhorn         0x1efc /* U+01af */
+#define XK_uhorn         0x1efd /* U+01b0 */
+#define XK_combining_grave       0x1ef2 /* U+0300 */
+#define XK_combining_acute       0x1ef3 /* U+0301 */
+/* not enough room for this one...
+#define XK_combining_tilde       0x  * U+0303 *
+*/
+#define XK_combining_hook        0x1efe /* U+0309 */
+#define XK_combining_belowdot        0x1eff /* U+0323 */
+#endif /* XK_VIETNAMESE */
+
 
 #ifdef XK_CURRENCY
 #define XK_EcuSign					0x20a0
--- xc/lib/X11/XKBCvt.c.aclark	Wed Dec 22 02:53:37 1999
+++ xc/lib/X11/XKBCvt.c	Wed Dec 22 03:04:06 1999
@@ -75,6 +75,16 @@
 
 extern unsigned short _Xkoi8_size;
 
+/* maps Vietnamese keysyms to TCVN-5712 */
+extern unsigned char _Xtcvn[];
+
+extern unsigned short _Xtcvn_size;
+
+/* maps Vietnamese keysyms to VISCII1.1-1 */
+extern unsigned char _Xviscii[];
+
+extern unsigned short _Xviscii_size;
+
 #define sLatin1         0
 #define sLatin2         1
 #define sLatin3         2
@@ -93,6 +103,9 @@
 #define sLatin7		17
 #define sLatin8		18
 #define sLatin9		19
+#define sVietnamese   30
+#define sVietnamese_viscii 0x0100001eL
+#define sVietnamese_tcvn   0x0200001eL
 #define sCurrency	32
 
 
@@ -109,6 +122,9 @@
 static unsigned long	WantGreek = sGreek;
 static unsigned long	WantAPL = sAPL;
 static unsigned long	WantHebrew = sHebrew;
+static unsigned long	WantVietnamese = sVietnamese;
+static unsigned long	WantTcvn = sVietnamese_tcvn;
+static unsigned long	WantViscii = sVietnamese_viscii;
 
 static int 
 #if NeedFunctionPrototypes
@@ -421,6 +437,14 @@
 	_XkbKSToKnownSet,(XPointer)&WantHebrew,_XkbKnownSetToKS,NULL,NULL
 };
 
+static XkbConverters    cvt_Tcvn = {
+	_XkbKSToKnownSet,(XPointer)&WantTcvn,_XkbKnownSetToKS,NULL,NULL
+};
+
+static XkbConverters    cvt_Viscii = {
+	_XkbKSToKnownSet,(XPointer)&WantViscii,_XkbKnownSetToKS,NULL,NULL
+};
+
 static XkbConverters    cvt_Thai = {
         _XkbKSToThai, NULL, _XkbThaiToKS, NULL, NULL
 };
@@ -509,6 +533,10 @@
 	     *cvt_rtrn = cvt_Thai;
 	else if (Strcmp(encoding_name, "koi8-r")==0)
 	     *cvt_rtrn = cvt_Koi8;
+	else if (Strcmp(encoding_name, "tcvn-5712")==0)
+		*cvt_rtrn = cvt_Tcvn;
+	else if (Strcmp(encoding_name, "viscii1.1-1")==0)
+		*cvt_rtrn = cvt_Viscii;
 	/* other codesets go here */
 	else *cvt_rtrn = cvt_latin1;
 	return 1;
@@ -533,7 +561,7 @@
  */
 
 #define	CHARSET_FILE	"/usr/lib/X11/input/charsets"
-static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fi,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:bg,ru=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:th,th_TH,th_TH.TACTIS=tactis";
+static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fi,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:bg,ru=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:th,th_TH,th_TH.TACTIS=tactis:vi,vi_VN,vi_VN.TCVN=tcvn-5712:vi_VN.VISCII=viscii1.1-1";
 
 char	*
 _XkbGetCharset()
--- xc/lib/X11/lcCT.c.aclark	Wed Oct 21 01:40:39 1998
+++ xc/lib/X11/lcCT.c	Thu Dec 23 20:42:24 1999
@@ -95,6 +95,8 @@
     /* Non-Standard Character Set Encodings */
     { "KOI8-R:GR", "\033%/1\200\210koi8-r\002"},
     { "ISO8859-15:GR", "\033%/1\200\213iso8859-15\002"},
+    { "VISCII1.1-1:GR", "\033%/1\200\210viscii1.1-1\002"},
+    { "TCVN-5712:GR", "\033%/1\200\210tcvn-5712\002"},
 } ; 
 
 #define XctC0		0x0000
--- xc/lib/X11/XlcUTF.h.aclark	Wed Dec 22 03:06:20 1999
+++ xc/lib/X11/XlcUTF.h	Wed Dec 22 03:07:16 1999
@@ -59,6 +59,8 @@
 #define		ksc5601		"ksc5601"
 #define		gb2312		"gb2312"
 #define		tabkoi8_r	"tabkoi8_r"
+#define   tabviscii "tabviscii"
+#define   tabtcvn   "tabtcvn"
 
 #define emit(x)    *r = (Rune)x;
 
--- xc/lib/X11/imConv.c.aclark	Wed Dec 22 03:10:03 1999
+++ xc/lib/X11/imConv.c	Thu Dec 23 20:41:10 1999
@@ -155,6 +155,48 @@
     0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
+/* maps Vietnamese keysyms to TCVN-5712 */
+unsigned char _Xtcvn[] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0 - */
+    0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe,
+    0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0 - */
+    0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5,
+    0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0 - */
+    0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1,
+    0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0 - */
+    0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb,
+    0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0 - */
+    0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7,
+    0x12, 0xf9, 0xb0, 0xb3, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0 - */
+    0x15, 0xfc, 0xa5, 0xac, 0xa6, 0xad, 0xb1, 0xb4
+};
+
+/* maps Vietnamese keysyms to VISCII 1.1 */
+unsigned char _Xviscii[] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0 - */
+    0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1,
+    0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0 - */
+    0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa,
+    0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0 - */
+    0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6,
+    0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0 - */
+    0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7,
+    0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0 - */
+    0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6,
+    0xb9, 0xf1, 0x00, 0x00, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0 - */
+    0x19, 0xdb, 0xb4, 0xbd, 0xbf, 0xdf, 0x00, 0x00
+};
+
+unsigned short _Xtcvn_size = sizeof _Xtcvn;
+unsigned short _Xviscii_size = sizeof _Xviscii;
 
 static unsigned short keysym_to_unicode_1a1_1ff[] = {
             0x0104, 0x02d8, 0x0141, 0x0000, 0x013d, 0x015a, 0x0000, /* 0x01a0-0x01a7 */
@@ -337,6 +379,21 @@
                                     0x0152, 0x0153, 0x0178          /* 0x13b8-0x13bf */
 };
 
+static unsigned short keysym_to_unicode_1ea0_1eff[] = {
+    0x1ea0, 0x1ea1, 0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, /* 0x1ea0-0x1ea7 */
+    0x1ea8, 0x1ea9, 0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, /* 0x1ea8-0x1eaf */
+    0x1eb0, 0x1eb1, 0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, /* 0x1eb0-0x1eb7 */
+    0x1eb8, 0x1eb9, 0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, /* 0x1eb8-0x1ebf */
+    0x1ec0, 0x1ec1, 0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, /* 0x1ec0-0x1ec7 */
+    0x1ec8, 0x1ec9, 0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, /* 0x1ec8-0x1ecf */
+    0x1ed0, 0x1ed1, 0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, /* 0x1ed0-0x1ed7 */
+    0x1ed8, 0x1ed9, 0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, /* 0x1ed8-0x1edf */
+    0x1ee0, 0x1ee1, 0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, /* 0x1ee0-0x1ee7 */
+    0x1ee8, 0x1ee9, 0x1eea, 0x1eeb, 0x1eec, 0x1eed, 0x1eee, 0x1eef, /* 0x1ee8-0x1eef */
+    0x1ef0, 0x1ef1, 0x0300, 0x0301, 0x1ef4, 0x1ef5, 0x1ef6, 0x1ef7, /* 0x1ef0-0x1ef7 */
+    0x1ef8, 0x1ef9, 0x01a0, 0x01a1, 0x01af, 0x01b0, 0x0309, 0x0323  /* 0x1ef8-0x1eff */
+};
+
 static unsigned short keysym_to_unicode_20a0_20ac[] = {
     0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, /* 0x20a0-0x20a7 */
     0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac                          /* 0x20a8-0x20af */
@@ -375,6 +432,8 @@
 	return keysym_to_unicode_ea0_eff[keysym - 0xea0];
     else if (keysym > 0x13bb && keysym < 0x13bf)
 	return keysym_to_unicode_13bc_13be[keysym - 0x13bc];
+    else if (keysym > 0x1ea0 && keysym < 0x1f00)
+	return keysym_to_unicode_1ea0_1eff[keysym - 0x1ea0];
     else if (keysym > 0x209f && keysym < 0x20ad)
 	return keysym_to_unicode_20a0_20ac[keysym - 0x20a0];
     else 
@@ -405,6 +464,9 @@
 #define sLatin7	17L
 #define sLatin8	18L
 #define sLatin9	19L
+#define sVietnamese 30L
+#define sVietnamese_tcvn 0x0100001eL
+#define sVietnamese_viscii 0x0200001eL
 #define sCurrency 32L
 #define sUTF8	0x02000000L
 
@@ -431,6 +493,8 @@
     /* Non-standard */
     {sKoi8,	"KOI8-R", "\033%/1\200\210koi8-r\002"},
     {sLatin9,	"ISO8859-15",	"\033%/1\200\213iso8859-15\002"},/* a.k.a. Latin-0 */
+    {sVietnamese_viscii, "VISCII1.1-1", "\033%/1\200\210viscii1.1-1\002"},
+    {sVietnamese_tcvn, "TCVN-5712", "\033%/1\200\210tcvn-5712\002"},
 };
 
 #define NUM_CODESETS sizeof CodesetTable / sizeof CodesetTable[0]
@@ -627,6 +691,14 @@
 	    if (!buf[0])
 		count = 0;
 	    break;
+	case sVietnamese:
+	  if (locale_code == sVietnamese_tcvn)
+	    *buf = _Xtcvn[keysym & 0x7f];
+	  else if (locale_code == sVietnamese_viscii)
+	    *buf = _Xviscii[keysym & 0x7f];
+	  else /* other vietnamese encodings not defined */
+	    *buf = (unsigned char)(keysym & 0xff);
+	  break;
 	default:
 	    *buf = (unsigned char)(keysym & 0xff);
 	    break;
@@ -654,6 +726,51 @@
 	if ((locale_code == sX0201) &&
 	    ((keysym == XK_backslash) || (keysym == XK_asciitilde)))
 	    count = 0;
+	if (locale_code == sVietnamese_tcvn) {
+		count = 1;
+		switch (keysym) {
+		case XK_Agrave: *buf = (unsigned char)0x80; break;
+		case XK_agrave: *buf = (unsigned char)0xb5; break;
+		case XK_Aacute: *buf = (unsigned char)0x83; break;
+		case XK_aacute: *buf = (unsigned char)0xb8; break;
+		case XK_Acircumflex:*buf = (unsigned char)0xa2; break;
+		case XK_acircumflex:*buf = (unsigned char)0xa9; break;
+		case XK_Atilde: *buf = (unsigned char)0x82; break;
+		case XK_atilde: *buf = (unsigned char)0xb7; break;
+		case XK_Egrave: *buf = (unsigned char)0x87; break;
+		case XK_egrave: *buf = (unsigned char)0xcc; break;
+		case XK_Eacute: *buf = (unsigned char)0x8a; break;
+		case XK_eacute: *buf = (unsigned char)0xd0; break;
+		case XK_Ecircumflex:*buf = (unsigned char)0xa3; break;
+		case XK_ecircumflex:*buf = (unsigned char)0xaa; break;
+		case XK_Igrave: *buf = (unsigned char)0x8d; break;
+		case XK_igrave: *buf = (unsigned char)0xd7; break;
+		case XK_Iacute: *buf = (unsigned char)0x90; break;
+		case XK_iacute: *buf = (unsigned char)0xdd; break;
+		case XK_Ograve: *buf = (unsigned char)0x92; break;
+		case XK_ograve: *buf = (unsigned char)0xdf; break;
+		case XK_Oacute: *buf = (unsigned char)0x95; break;
+		case XK_oacute: *buf = (unsigned char)0xe3; break;
+		case XK_Ocircumflex:*buf = (unsigned char)0xa4; break;
+		case XK_ocircumflex:*buf = (unsigned char)0xab; break;
+		case XK_Otilde: *buf = (unsigned char)0x94; break;
+		case XK_otilde: *buf = (unsigned char)0xe2; break;
+		case XK_Ugrave: *buf = (unsigned char)0x9d; break;
+		case XK_ugrave: *buf = (unsigned char)0xef; break;
+		case XK_Uacute: *buf = (unsigned char)0x01; break;
+		case XK_uacute: *buf = (unsigned char)0xf3; break;
+		case XK_Yacute: *buf = (unsigned char)0x16; break;
+		case XK_yacute: *buf = (unsigned char)0xfd; break;
+		default:    count = 0;
+		}
+	} else if (locale_code == sVietnamese_viscii) {
+		count = 1;
+		switch (keysym) {
+		case XK_Otilde: *buf = (unsigned char)0xa0; break;
+		case XK_otilde: *buf = (unsigned char)0xf5; break;
+		default:    *buf = (unsigned char)(keysym&0x7f);
+		}
+	}
 	if ( (keysym&0x80)==0 ) {
 	    *buf = (unsigned char)(keysym&0x7f);
 	    count = 1;
@@ -678,6 +795,26 @@
 	    else if (keysym == XK_zcaron)
 		*buf = (unsigned char)0xb8;
 	    else count = 0;
+	} else if (locale_code == sVietnamese_viscii) {
+		if (keysym == XK_Abreve)
+			*buf = (unsigned char)0xc5;
+		if (keysym == XK_abreve)
+			*buf = (unsigned char)0xe5;
+		if (keysym == XK_Dstroke)
+			*buf = (unsigned char)0xd0;
+		if (keysym == XK_dstroke)
+			*buf = (unsigned char)0xf0;
+		else count = 0;
+	} else if (locale_code == sVietnamese_tcvn) {
+		if (keysym == XK_Abreve)
+			*buf = (unsigned char)0xa1;
+		if (keysym == XK_abreve)
+			*buf = (unsigned char)0xa8;
+		if (keysym == XK_Dstroke)
+			*buf = (unsigned char)0xa7;
+		if (keysym == XK_dstroke)
+			*buf = (unsigned char)0xae;
+		else count = 0;
 	} else count = 0;
     } else if ((keysym >> 8) == sLatin3) {
 	if (locale_code == sLatin5) {
@@ -733,7 +870,44 @@
 	    case XK_uogonek:	*buf = (unsigned char)(keysym & 0xff); break;
 	    default: count = 0;
 	    }
-	}
+	} else if (locale_code == sVietnamese_tcvn) {
+		if (keysym == XK_Itilde)
+			*buf = (unsigned char)0x8f;
+		if (keysym == XK_itilde)
+			*buf = (unsigned char)0xdc;
+		if (keysym == XK_Utilde)
+			*buf = (unsigned char)0x9f;
+		if (keysym == XK_utilde)
+			*buf = (unsigned char)0xf2;
+		else count = 0;
+	} else if (locale_code == sVietnamese_viscii) {
+		if (keysym == XK_Itilde)
+			*buf = (unsigned char)0xce;
+		if (keysym == XK_itilde)
+			*buf = (unsigned char)0xee;
+		if (keysym == XK_Utilde)
+			*buf = (unsigned char)0x9d;
+		if (keysym == XK_utilde)
+			*buf = (unsigned char)0xfb;
+		else count = 0;
+	} else count = 0;
+		} else if ((keysym >> 8) == sLatin8) {
+	count = 1;
+	if (locale_code == sLatin8) {
+		*buf = (unsigned char)(keysym & 0xff);
+	} else if (locale_code == sVietnamese_viscii) {
+		if (keysym == XK_Ygrave)
+			*buf = (unsigned char)0x9f;
+		if (keysym == XK_ygrave)
+			*buf = (unsigned char)0xcf;
+		else count = 0;
+	} else if (locale_code == sVietnamese_tcvn) {
+		if (keysym == XK_Ygrave)
+			*buf = (unsigned char)0x13;
+		if (keysym == XK_ygrave)
+			*buf = (unsigned char)0xfa;
+		else count = 0;
+	} else count = 0;
     } else if (locale_code == sLatin9 && keysym == XK_EuroSign) {
 	count = 1;
 	*buf = (unsigned char)0xa4;
--- xc/lib/X11/lcUTF.c.aclark	Thu Dec 23 20:43:14 1999
+++ xc/lib/X11/lcUTF.c	Thu Dec 23 20:48:16 1999
@@ -154,6 +154,18 @@
     wchar_t
 #endif
 );
+static void init_visciitab(
+#if NeedFunctionPrototypes
+    int*,
+    wchar_t
+#endif
+);
+static void init_tcvn5712tab(
+#if NeedFunctionPrototypes
+    int*,
+    wchar_t
+#endif
+);
 static void	init_jis0201tab(
 #if NeedFunctionPrototypes
     int*,
@@ -219,6 +231,10 @@
     {"GB2312.1980-0", XlcGR, init_gb2312tab, gb2rune, N11n_zh, 0x2175},
     {"KOI8-R", XlcGL, init_koi8rtab, latin2rune, N11n_none, 0x20},
     {"KOI8-R", XlcGR, init_koi8rtab, latin2rune, N11n_none, 0x20},
+    {"VISCII1.1-1", XlcGL, init_visciitab, latin2rune, N11n_none, 0x20},
+    {"VISCII1.1-1", XlcGR, init_visciitab, latin2rune, N11n_none, 0x20},
+    {"TCVN-5712", XlcGL, init_tcvn5712tab, latin2rune, N11n_none, 0x20},
+    {"TCVN-5712", XlcGR, init_tcvn5712tab, latin2rune, N11n_none, 0x20},
 };
 
 
@@ -554,6 +570,34 @@
 #endif
 {
     init_8859_tab (tbl, fb_default, tab8859_15);
+}
+
+static void
+#if NeedFunctionPrototypes
+init_visciitab(
+    int* tbl,
+    wchar_t  fb_default)
+#else
+init_visciitab(tbl, fb_default)
+    int* tbl;
+    wchar_t  fb_default;
+#endif
+{
+    init_8859_tab (tbl, fb_default, tabviscii);
+}
+
+static void
+#if NeedFunctionPrototypes
+init_tcvn5712tab(
+    int* tbl,
+    wchar_t  fb_default)
+#else
+init_tcvn5712tab(tbl, fb_default)
+    int* tbl;
+    wchar_t  fb_default;
+#endif
+{
+    init_8859_tab (tbl, fb_default, tabtcvn);
 }
 
 static void
--- xc/nls/Compose/vi_VN.viscii.aclark	Thu Dec 23 21:07:35 1999
+++ xc/nls/Compose/vi_VN.viscii	Thu Dec 23 21:10:53 1999
@@ -0,0 +1,510 @@
+# $TOG: vi_VN.viscii /main/7 1998/05/20 15:33:23 kaleb $
+#
+# VISCII 1.1 Compose Sequence
+#
+# Sequence Definition
+#
+# <Multi_key> Means <Compose>
+# Special Character
+<Multi_key> <plus> <plus>    : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T>      : "@" at
+<Multi_key> <parenleft> <parenleft>  : "[" bracketleft
+<Multi_key> <slash> <slash>    : "\\"  backslash
+<Multi_key> <slash> <less>   : "\\"  backslash
+<Multi_key> <less> <slash>   : "\\"  backslash
+<Multi_key> <parenright> <parenright>  : "]" bracketright
+<Multi_key> <asciicircum> <space>  : "^" asciicircum
+<Multi_key> <space> <asciicircum>  : "^" asciicircum
+<Multi_key> <greater> <space>    : "^" asciicircum
+<Multi_key> <space> <greater>    : "^" asciicircum
+<Multi_key> <grave> <space>    : "`" grave
+<Multi_key> <space> <grave>    : "`" grave
+<Multi_key> <parenleft> <minus>    : "{" braceleft
+<Multi_key> <minus> <parenleft>    : "{" braceleft
+<Multi_key> <slash> <asciicircum>  : "|" bar
+<Multi_key> <asciicircum> <slash>  : "|" bar
+<Multi_key> <V> <L>      : "|" bar
+<Multi_key> <L> <V>      : "|" bar
+<Multi_key> <v> <l>      : "|" bar
+<Multi_key> <l> <v>      : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space>    : "~" asciitilde
+<Multi_key> <space> <minus>    : "~" asciitilde
+# Accented Alphabet
+<Multi_key> <A> <grave>      : "\300"  Agrave
+<Multi_key> <grave> <A>      : "\300"  Agrave
+<Multi_key> <A> <acute>      : "\301"  Aacute
+<Multi_key> <acute> <A>      : "\301"  Aacute
+<Multi_key> <A> <apostrophe>   : "\301"  Aacute
+<Multi_key> <apostrophe> <A>   : "\301"  Aacute
+<Multi_key> <A> <asciicircum>    : "\302"  Acircumflex
+<Multi_key> <asciicircum> <A>    : "\302"  Acircumflex
+<Multi_key> <A> <greater>    : "\302"  Acircumflex
+<Multi_key> <greater> <A>    : "\302"  Acircumflex
+<Multi_key> <A> <asciitilde>   : "\303"  Atilde
+<Multi_key> <asciitilde> <A>   : "\303"  Atilde
+<Multi_key> <A> <parenleft>    : "\304"  Abreve
+<Multi_key> <A> <period>   : "\304"  Abelowdot
+<Multi_key> <A> <question>   : "\305"  Ahook
+
+<Multi_key> <a> <grave>      : "\340"  agrave
+<Multi_key> <grave> <a>      : "\340"  agrave
+<Multi_key> <a> <acute>      : "\341"  aacute
+<Multi_key> <acute> <a>      : "\341"  aacute
+<Multi_key> <a> <apostrophe>   : "\341"  aacute
+<Multi_key> <apostrophe> <a>   : "\341"  aacute
+<Multi_key> <a> <asciicircum>    : "\342"  acircumflex
+<Multi_key> <asciicircum> <a>    : "\342"  acircumflex
+<Multi_key> <a> <greater>    : "\342"  acircumflex
+<Multi_key> <greater> <a>    : "\342"  acircumflex
+<Multi_key> <a> <asciitilde>   : "\343"  atilde
+<Multi_key> <asciitilde> <a>   : "\343"  atilde
+<Multi_key> <a> <pareleft>   : "\343"  abreve
+<Multi_key> <a> <period>   : "\343"  abelowdot
+<Multi_key> <a> <question>   : "\344"  ahook
+<Multi_key> <minus> <D>      : "\320"  Dstroke
+<Multi_key> <D> <minus>      : "\320"  Dstroke
+<Multi_key> <D> <D>      : "\320"  Dstroke
+<Multi_key> <minus> <d>      : "\360"  dstroke
+<Multi_key> <d> <minus>      : "\360"  dstroke
+<Multi_key> <d> <d>      : "\360"  dstroke
+<Multi_key> <E> <grave>      : "\310"  Egrave
+<Multi_key> <grave> <E>      : "\310"  Egrave
+<Multi_key> <E> <acute>      : "\311"  Eacute
+<Multi_key> <acute> <E>      : "\311"  Eacute
+<Multi_key> <E> <apostrophe>   : "\311"  Eacute
+<Multi_key> <apostrophe> <E>   : "\311"  Eacute
+<Multi_key> <E> <asciicircum>    : "\312"  Ecircumflex
+<Multi_key> <asciicircum> <E>    : "\312"  Ecircumflex
+<Multi_key> <E> <greater>    : "\312"  Ecircumflex
+<Multi_key> <greater> <E>    : "\312"  Ecircumflex
+<Multi_key> <E> <asciitilde>   : "\313"  Etilde
+<Multi_key> <asciitilde> <E>   : "\313"  Etilde
+<Multi_key> <E> <period>   : "\313"  Ebelowdot
+<Multi_key> <E> <question>   : "\313"  Ehook
+<Multi_key> <e> <grave>      : "\350"  egrave
+<Multi_key> <grave> <e>      : "\350"  egrave
+<Multi_key> <e> <acute>      : "\351"  eacute
+<Multi_key> <acute> <e>      : "\351"  eacute
+<Multi_key> <e> <apostrophe>   : "\351"  eacute
+<Multi_key> <apostrophe> <e>   : "\351"  eacute
+<Multi_key> <e> <asciicircum>    : "\352"  ecircumflex
+<Multi_key> <asciicircum> <e>    : "\352"  ecircumflex
+<Multi_key> <e> <greater>    : "\352"  ecircumflex
+<Multi_key> <greater> <e>    : "\352"  ecircumflex
+<Multi_key> <e> <asciitilde>   : "\353"  etilde
+<Multi_key> <asciitilde> <e>   : "\353"  etilde
+<Multi_key> <e> <period>   : "\353"  ebelowdot
+<Multi_key> <e> <question>   : "\353"  ehook
+<Multi_key> <I> <grave>      : "\314"  Igrave
+<Multi_key> <grave> <I>      : "\314"  Igrave
+<Multi_key> <I> <acute>      : "\315"  Iacute
+<Multi_key> <acute> <I>      : "\315"  Iacute
+<Multi_key> <I> <apostrophe>   : "\315"  Iacute
+<Multi_key> <apostrophe> <I>   : "\315"  Iacute
+<Multi_key> <I> <asciitilde>   : "\316"  Itilde
+<Multi_key> <asciitilde> <I>   : "\316"  Itilde
+<Multi_key> <I> <period>   : "\316"  Ibelowdot
+<Multi_key> <I> <question>   : "\317"  Ihook
+<Multi_key> <i> <grave>      : "\354"  igrave
+<Multi_key> <grave> <i>      : "\354"  igrave
+<Multi_key> <i> <acute>      : "\355"  iacute
+<Multi_key> <acute> <i>      : "\355"  iacute
+<Multi_key> <i> <apostrophe>   : "\355"  iacute
+<Multi_key> <apostrophe> <i>   : "\355"  iacute
+<Multi_key> <i> <asciitilde>   : "\356"  itilde
+<Multi_key> <asciitilde> <i>   : "\356"  itilde
+<Multi_key> <i> <period>   : "\356"  ibelowdot
+<Multi_key> <i> <question>   : "\357"  ihook
+<Multi_key> <O> <grave>      : "\322"  Ograve
+<Multi_key> <grave> <O>      : "\322"  Ograve
+<Multi_key> <O> <acute>      : "\323"  Oacute
+<Multi_key> <acute> <O>      : "\323"  Oacute
+<Multi_key> <O> <apostrophe>   : "\323"  Oacute
+<Multi_key> <apostrophe> <O>   : "\323"  Oacute
+<Multi_key> <O> <asciicircum>    : "\324"  Ocircumflex
+<Multi_key> <asciicircum> <O>    : "\324"  Ocircumflex
+<Multi_key> <O> <greater>    : "\324"  Ocircumflex
+<Multi_key> <greater> <O>    : "\324"  Ocircumflex
+<Multi_key> <O> <asciitilde>   : "\325"  Otilde
+<Multi_key> <asciitilde> <O>   : "\325"  Otilde
+<Multi_key> <O> <plus>     : "\325"  Ohorn
+<Multi_key> <O> <period>   : "\326"  Obelowdot
+<Multi_key> <O> <question>   : "\326"  Ohook
+<Multi_key> <o> <grave>      : "\362"  ograve
+<Multi_key> <grave> <o>      : "\362"  ograve
+<Multi_key> <o> <acute>      : "\363"  oacute
+<Multi_key> <acute> <o>      : "\363"  oacute
+<Multi_key> <o> <apostrophe>   : "\363"  oacute
+<Multi_key> <apostrophe> <o>   : "\363"  oacute
+<Multi_key> <o> <asciicircum>    : "\364"  ocircumflex
+<Multi_key> <asciicircum> <o>    : "\364"  ocircumflex
+<Multi_key> <o> <greater>    : "\364"  ocircumflex
+<Multi_key> <greater> <o>    : "\364"  ocircumflex
+<Multi_key> <o> <asciitilde>   : "\365"  otilde
+<Multi_key> <asciitilde> <o>   : "\365"  otilde
+<Multi_key> <o> <plus>     : "\366"  ohorn
+<Multi_key> <o> <period>   : "\366"  obelowdot
+<Multi_key> <o> <question>   : "\366"  ohook
+<Multi_key> <U> <grave>      : "\331"  Ugrave
+<Multi_key> <grave> <U>      : "\331"  Ugrave
+<Multi_key> <U> <acute>      : "\332"  Uacute
+<Multi_key> <acute> <U>      : "\332"  Uacute
+<Multi_key> <U> <apostrophe>   : "\332"  Uacute
+<Multi_key> <apostrophe> <U>   : "\332"  Uacute
+<Multi_key> <U> <plus>     : "\333"  Uhorn
+<Multi_key> <U> <period>   : "\333"  Ubelowdot
+<Multi_key> <U> <question>   : "\334"  Uhook
+<Multi_key> <u> <grave>      : "\371"  ugrave
+<Multi_key> <grave> <u>      : "\371"  ugrave
+<Multi_key> <u> <acute>      : "\372"  uacute
+<Multi_key> <acute> <u>      : "\372"  uacute
+<Multi_key> <u> <apostrophe>   : "\372"  uacute
+<Multi_key> <apostrophe> <u>   : "\372"  uacute
+<Multi_key> <u> <plus>     : "\373"  uhorn
+<Multi_key> <u> <period>   : "\373"  ubelowdot
+<Multi_key> <u> <question>   : "\374"  uhook
+<Multi_key> <Y> <acute>      : "\335"  Yacute
+<Multi_key> <acute> <Y>      : "\335"  Yacute
+<Multi_key> <Y> <apostrophe>   : "\335"  Yacute
+<Multi_key> <apostrophe> <Y>   : "\335"  Yacute
+<Multi_key> <Y> <grave>      : "\375"  Ygrave
+<Multi_key> <grave> <Y>      : "\375"  Ygrave
+<Multi_key> <Y> <asciitilde>   : "\375"  Ytilde
+<Multi_key> <asciitilde> <Y>   : "\375"  Ytilde
+<Multi_key> <Y> <period>   : "\375"  Ybelowdot
+<Multi_key> <Y> <question>   : "\375"  Yhook
+<Multi_key> <y> <acute>      : "\375"  yacute
+<Multi_key> <acute> <y>      : "\375"  yacute
+<Multi_key> <y> <apostrophe>   : "\375"  yacute
+<Multi_key> <apostrophe> <y>   : "\375"  yacute
+<Multi_key> <y> <grave>      : "\375"  ygrave
+<Multi_key> <grave> <y>      : "\375"  ygrave
+<Multi_key> <Y> <asciitilde>   : "\375"  ytilde
+<Multi_key> <asciitilde> <y>   : "\375"  ytilde
+<Multi_key> <y> <period>   : "\375"  ybelowdot
+<Multi_key> <y> <question>   : "\375"  yhook
+#
+# multiple diacritics
+#
+
+#
+#
+# dead key accent keysyms
+# Special Character
+<dead_circumflex>  <slash>   : "|" bar
+<dead_grave> <space>     : "`" grave
+<dead_acute> <space>     : "'" apostrophe
+<dead_diaeresis> <space>   : "\250"  diaeresis
+<dead_circumflex> <space>    : "^" asciicircum
+<dead_tilde> <space>     : "~" asciitilde
+<dead_grave> <space>     : "`" grave
+<dead_acute> <space>     : "'" apostrophe
+<dead_doubleacute> <space>   : "\""  quotedbl
+<dead_abovering> <space>   : "\260"  degree
+<dead_abovering> <dead_abovering>  : "\260"  degree
+<dead_circumflex> <0>      : "\260"  degree
+<dead_circumflex> <1>      : "\271"  onesuperior
+<dead_circumflex> <2>      : "\262"  twosuperior
+<dead_circumflex> <3>      : "\263"  threesuperior
+<dead_circumflex> <period>   : "\267"  periodcentered
+<dead_circumflex> <exclam>   : "\246"  brokenbar
+<dead_cedilla> <minus>     : "\254"  notsign
+<dead_circumflex> <minus>    : "\257"  macron
+<dead_circumflex> <underscore>   : "\257"  macron
+<dead_acute> <apostrophe>    : "\264"  acute
+<dead_cedilla> <comma>     : "\270"  cedilla
+<dead_diaeresis> <quotedbl>    : "\250"  diaeresis
+# Accented Alphabet
+<dead_abovering> <A>     : "\305"  Aring
+<dead_grave> <A>     : "\300"  Agrave
+<dead_acute> <A>     : "\301"  Aacute
+<dead_circumflex> <A>      : "\302"  Acircumflex
+<dead_tilde> <A>     : "\303"  Atilde
+<dead_diaeresis> <A>     : "\304"  Adiaeresis
+<dead_abovering> <a>     : "\345"  aring
+<dead_grave> <a>     : "\340"  agrave
+<dead_acute> <a>     : "\341"  aacute
+<dead_circumflex> <a>      : "\342"  acircumflex
+<dead_tilde> <a>     : "\343"  atilde
+<dead_diaeresis> <a>     : "\344"  adiaeresis
+<dead_cedilla> <C>     : "\307"  Ccedilla
+<dead_cedilla> <c>     : "\347"  ccedilla
+<dead_grave> <E>     : "\310"  Egrave
+<dead_acute> <E>     : "\311"  Eacute
+<dead_circumflex> <E>      : "\312"  Ecircumflex
+<dead_diaeresis> <E>     : "\313"  Ediaeresis
+<dead_grave> <e>     : "\350"  egrave
+<dead_acute> <e>     : "\351"  eacute
+<dead_circumflex> <e>      : "\352"  ecircumflex
+<dead_diaeresis> <e>     : "\353"  ediaeresis
+<dead_grave> <I>     : "\314"  Igrave
+<dead_acute> <I>     : "\315"  Iacute
+<dead_circumflex> <I>      : "\316"  Icircumflex
+<dead_diaeresis> <I>     : "\317"  Idiaeresis
+<dead_grave> <i>     : "\354"  igrave
+<dead_acute> <i>     : "\355"  iacute
+<dead_circumflex> <i>      : "\356"  icircumflex
+<dead_diaeresis> <i>     : "\357"  idiaeresis
+<dead_tilde> <N>     : "\321"  Ntilde
+<dead_tilde> <n>     : "\361"  ntilde
+<dead_grave> <O>     : "\322"  Ograve
+<dead_acute> <O>     : "\323"  Oacute
+<dead_circumflex> <O>      : "\324"  Ocircumflex
+<dead_tilde> <O>     : "\325"  Otilde
+<dead_diaeresis> <O>     : "\326"  Odiaeresis
+<dead_grave> <o>     : "\362"  ograve
+<dead_acute> <o>     : "\363"  oacute
+<dead_circumflex> <o>      : "\364"  ocircumflex
+<dead_tilde> <o>     : "\365"  otilde
+<dead_diaeresis> <o>     : "\366"  odiaeresis
+<dead_grave> <U>     : "\331"  Ugrave
+<dead_acute> <U>     : "\332"  Uacute
+<dead_circumflex> <U>      : "\333"  Ucircumflex
+<dead_doubleacute> <U>     : "\334"  Udiaeresis
+<dead_diaeresis> <U>     : "\334"  Udiaeresis
+<dead_grave> <u>     : "\371"  ugrave
+<dead_acute> <u>     : "\372"  uacute
+<dead_circumflex> <u>      : "\373"  ucircumflex
+<dead_doubleacute> <u>     : "\374"  udiaeresis
+<dead_diaeresis> <u>     : "\374"  udiaeresis
+<dead_acute> <Y>     : "\335"  Yacute
+<dead_acute> <y>     : "\375"  yacute
+<dead_diaeresis> <y>     : "\377"  ydiaeresis
+
+# These are for us_intl, that does not has diaeresis, etc
+<dead_acute> <dead_acute>               : "'"           apostrophe
+<dead_grave> <dead_grave>               : "`"           grave
+<dead_diaeresis> <space>                : "\""          quotedbl
+<dead_diaeresis> <dead_diaeresis>       : "\""          quotedbl
+<dead_tilde> <dead_tilde>               : "~"           asciitilde
+<dead_circumflex> <dead_circumflex>     : "^"           asciicircum
+
+# dead_letters
+#
+# dead_a, dead_A, dead_d, dead_D, dead_e, dead_E, dead_i, dead_I,
+# dead_o, dead_O, dead_u, dead_U, dead_y, dead_Y
+#
+
+<dead_a> <f>       : "\317"  agrave
+<dead_A> <f>       : "\237"  Agrave
+<dead_A> <F>       : "\237"  Agrave
+<dead_a> <s>       : "\375"  aacute
+<dead_A> <s>       : "\335"  Aacute
+<dead_A> <S>       : "\335"  Aacute
+<dead_a> <a>       : "\334"  acircumflex
+<dead_A> <a>       : "\036"  Acircumflex
+<dead_A> <A>       : "\036"  Acircumflex
+<dead_a> <x>       : "\333"  atilde
+<dead_A> <x>       : "\031"  Atilde
+<dead_A> <X>       : "\031"  Atilde
+<dead_a> <w>       : "\333"  abreve
+<dead_A> <w>       : "\031"  Abreve
+<dead_A> <W>       : "\031"  Abreve
+<dead_a> <j>       : "\333"  abelowdot
+<dead_A> <j>       : "\031"  Abelowdot
+<dead_A> <J>       : "\031"  Abelowdot
+<dead_a> <r>       : "\333"  ahook
+<dead_A> <r>       : "\031"  Ahook
+<dead_A> <R>       : "\031"  Ahook
+<dead_a> <a> <s>     : "\334"  acircumflexacute
+<dead_A> <a> <s>     : "\036"  Acircumflexacute
+<dead_A> <A> <S>     : "\036"  Acircumflexacute
+<dead_a> <a> <f>     : "\334"  acircumflexgrave
+<dead_A> <a> <f>     : "\036"  Acircumflexgrave
+<dead_A> <A> <F>     : "\036"  Acircumflexgrave
+<dead_a> <a> <r>     : "\334"  acircumflexhook
+<dead_A> <a> <r>     : "\036"  Acircumflexhook
+<dead_A> <A> <R>     : "\036"  Acircumflexhook
+<dead_a> <a> <x>     : "\334"  acircumflextilde
+<dead_A> <a> <x>     : "\036"  Acircumflextilde
+<dead_A> <A> <X>     : "\036"  Acircumflextilde
+<dead_a> <a> <j>     : "\334"  acircumflexdotbelow
+<dead_A> <a> <j>     : "\036"  Acircumflexdotbelow
+<dead_A> <A> <J>     : "\036"  Acircumflexdotbelow
+<dead_a> <w> <s>     : "\334"  abreveacute
+<dead_A> <w> <s>     : "\036"  Abreveacute
+<dead_A> <W> <S>     : "\036"  Abreveacute
+<dead_a> <w> <f>     : "\334"  abrevegrave
+<dead_A> <w> <f>     : "\036"  Abrevegrave
+<dead_A> <W> <F>     : "\036"  Abrevegrave
+<dead_a> <w> <r>     : "\334"  abrevehook
+<dead_A> <w> <r>     : "\036"  Abrevehook
+<dead_A> <W> <R>     : "\036"  Abrevehook
+<dead_a> <w> <x>     : "\334"  abrevetilde
+<dead_A> <w> <x>     : "\036"  Abrevetilde
+<dead_A> <W> <X>     : "\036"  Abrevetilde
+<dead_a> <w> <j>     : "\334"  abrevedotbelow
+<dead_A> <w> <j>     : "\036"  Abrevedotbelow
+<dead_A> <W> <J>     : "\036"  Abrevedotbelow
+<dead_a>       : "a"   a
+<dead_A>       : "A"   A
+<dead_d> <dead_d>      : "\360"  dstroke
+<dead_D> <dead_D>      : "\320"  Dstroke
+<dead_d>       : "d"   d
+<dead_D>       : "D"   D
+<dead_e> <f>       : "\317"  egrave
+<dead_E> <f>       : "\237"  Egrave
+<dead_E> <F>       : "\237"  Egrave
+<dead_e> <s>       : "\375"  eacute
+<dead_E> <s>       : "\335"  Eacute
+<dead_E> <S>       : "\335"  Eacute
+<dead_e> <e>       : "\334"  ecircumflex
+<dead_E> <e>       : "\036"  Ecircumflex
+<dead_E> <E>       : "\036"  Ecircumflex
+<dead_e> <x>       : "\333"  etilde
+<dead_E> <x>       : "\031"  Etilde
+<dead_E> <X>       : "\031"  Etilde
+<dead_e> <j>       : "\333"  ebelowdot
+<dead_E> <j>       : "\031"  Ebelowdot
+<dead_E> <J>       : "\031"  Ebelowdot
+<dead_e> <r>       : "\333"  ehook
+<dead_E> <r>       : "\031"  Ehook
+<dead_E> <R>       : "\031"  Ehook
+<dead_e> <e> <f>     : "\317"  ecircumflexgrave
+<dead_E> <e> <f>     : "\237"  Ecircumflexgrave
+<dead_E> <E> <F>     : "\237"  Ecircumflexgrave
+<dead_e> <e> <s>     : "\375"  ecircumflexacute
+<dead_E> <e> <s>     : "\335"  Ecircumflexacute
+<dead_E> <E> <S>     : "\335"  Ecircumflexacute
+<dead_e> <e> <x>     : "\333"  ecircumflextilde
+<dead_E> <e> <x>     : "\031"  Ecircumflextilde
+<dead_E> <E> <X>     : "\031"  Ecircumflextilde
+<dead_e> <e> <j>     : "\333"  ecircumflexbelowdot
+<dead_E> <e> <j>     : "\031"  Ecircumflexbelowdot
+<dead_E> <E> <J>     : "\031"  Ecircumflexbelowdot
+<dead_e> <e> <r>     : "\333"  ecircumflexhook
+<dead_E> <e> <r>     : "\031"  Ecircumflexhook
+<dead_E> <E> <R>     : "\031"  Ecircumflexhook
+<dead_e>       : "e"   e
+<dead_E>       : "E"   E
+<dead_i> <f>       : "\317"  igrave
+<dead_I> <f>       : "\237"  Igrave
+<dead_I> <F>       : "\237"  Igrave
+<dead_i> <s>       : "\375"  iacute
+<dead_I> <s>       : "\335"  Iacute
+<dead_I> <S>       : "\335"  Iacute
+<dead_i> <x>       : "\333"  itilde
+<dead_I> <x>       : "\031"  Itilde
+<dead_I> <X>       : "\031"  Itilde
+<dead_i> <j>       : "\333"  ibelowdot
+<dead_I> <j>       : "\031"  Ibelowdot
+<dead_I> <J>       : "\031"  Ibelowdot
+<dead_i> <r>       : "\333"  ihook
+<dead_I> <r>       : "\031"  Ihook
+<dead_I> <R>       : "\031"  Ihook
+<dead_i>       : "i"   i
+<dead_I>       : "I"   I
+<dead_o> <f>       : "\317"  ograve
+<dead_O> <f>       : "\237"  Ograve
+<dead_O> <F>       : "\237"  Ograve
+<dead_o> <s>       : "\375"  oacute
+<dead_O> <s>       : "\335"  Oacute
+<dead_O> <S>       : "\335"  Oacute
+<dead_o> <o>       : "\334"  ocircumflex
+<dead_O> <o>       : "\036"  Ocircumflex
+<dead_O> <O>       : "\036"  Ocircumflex
+<dead_o> <x>       : "\333"  otilde
+<dead_O> <x>       : "\031"  Otilde
+<dead_O> <X>       : "\031"  Otilde
+<dead_o> <w>       : "\333"  ohorn
+<dead_O> <w>       : "\031"  Ohorn
+<dead_O> <W>       : "\031"  Ohorn
+<dead_o> <j>       : "\333"  obelowdot
+<dead_O> <j>       : "\031"  Obelowdot
+<dead_O> <J>       : "\031"  Obelowdot
+<dead_o> <r>       : "\333"  ohook
+<dead_O> <r>       : "\031"  Ohook
+<dead_O> <R>       : "\031"  Ohook
+<dead_o> <o> <s>     : "\334"  ocircumflexacute
+<dead_O> <o> <s>     : "\036"  Ocircumflexacute
+<dead_O> <O> <S>     : "\036"  Ocircumflexacute
+<dead_o> <o> <f>     : "\334"  ocircumflexgrave
+<dead_O> <o> <f>     : "\036"  Ocircumflexgrave
+<dead_O> <O> <F>     : "\036"  Ocircumflexgrave
+<dead_o> <o> <r>     : "\334"  ocircumflexhook
+<dead_O> <o> <r>     : "\036"  Ocircumflexhook
+<dead_O> <O> <R>     : "\036"  Ocircumflexhook
+<dead_o> <o> <x>     : "\334"  ocircumflextilde
+<dead_O> <o> <x>     : "\036"  Ocircumflextilde
+<dead_O> <O> <X>     : "\036"  Ocircumflextilde
+<dead_o> <o> <j>     : "\334"  ocircumflexdotbelow
+<dead_O> <o> <j>     : "\036"  Ocircumflexdotbelow
+<dead_O> <O> <J>     : "\036"  Ocircumflexdotbelow
+<dead_o> <w> <s>     : "\334"  ohornacute
+<dead_O> <w> <s>     : "\036"  Ohornacute
+<dead_O> <W> <S>     : "\036"  Ohornacute
+<dead_o> <w> <f>     : "\334"  ohorngrave
+<dead_O> <w> <f>     : "\036"  Ohorngrave
+<dead_O> <W> <F>     : "\036"  Ohorngrave
+<dead_o> <w> <r>     : "\334"  ohornhook
+<dead_O> <w> <r>     : "\036"  Ohornhook
+<dead_O> <W> <R>     : "\036"  Ohornhook
+<dead_o> <w> <x>     : "\334"  ohorntilde
+<dead_O> <w> <x>     : "\036"  Ohorntilde
+<dead_O> <W> <X>     : "\036"  Ohorntilde
+<dead_o> <w> <j>     : "\334"  ohorndotbelow
+<dead_O> <w> <j>     : "\036"  Ohorndotbelow
+<dead_O> <W> <J>     : "\036"  Ohorndotbelow
+<dead_o>       : "o"   o
+<dead_O>       : "O"   O
+<dead_u> <f>       : "\317"  ugrave
+<dead_U> <f>       : "\237"  Ugrave
+<dead_U> <F>       : "\237"  Ugrave
+<dead_u> <s>       : "\375"  uacute
+<dead_U> <s>       : "\335"  Uacute
+<dead_U> <S>       : "\335"  Uacute
+<dead_u> <x>       : "\333"  utilde
+<dead_U> <x>       : "\031"  Utilde
+<dead_U> <X>       : "\031"  Utilde
+<dead_u> <w>       : "\333"  uhorn
+<dead_U> <w>       : "\031"  Uhorn
+<dead_U> <W>       : "\031"  Uhorn
+<dead_u> <j>       : "\333"  ubelowdot
+<dead_U> <j>       : "\031"  Ubelowdot
+<dead_U> <J>       : "\031"  Ubelowdot
+<dead_u> <r>       : "\333"  uhook
+<dead_U> <r>       : "\031"  Uhook
+<dead_U> <R>       : "\031"  Uhook
+<dead_u> <w> <s>     : "\334"  uhornacute
+<dead_U> <w> <s>     : "\036"  Uhornacute
+<dead_U> <W> <S>     : "\036"  Uhornacute
+<dead_u> <w> <f>     : "\334"  uhorngrave
+<dead_U> <w> <f>     : "\036"  Uhorngrave
+<dead_U> <W> <F>     : "\036"  Uhorngrave
+<dead_u> <w> <r>     : "\334"  uhornhook
+<dead_U> <w> <r>     : "\036"  Uhornhook
+<dead_U> <W> <R>     : "\036"  Uhornhook
+<dead_u> <w> <x>     : "\334"  uhorntilde
+<dead_U> <w> <x>     : "\036"  Uhorntilde
+<dead_U> <W> <X>     : "\036"  Uhorntilde
+<dead_u> <w> <j>     : "\334"  uhorndotbelow
+<dead_U> <w> <j>     : "\036"  Uhorndotbelow
+<dead_U> <W> <J>     : "\036"  Uhorndotbelow
+<dead_u>       : "u"   u
+<dead_U>       : "U"   U
+
+<dead_y> <f>       : "\317"  ygrave
+<dead_Y> <f>       : "\237"  Ygrave
+<dead_Y> <F>       : "\237"  Ygrave
+<dead_y> <s>       : "\375"  yacute
+<dead_Y> <s>       : "\335"  Yacute
+<dead_Y> <S>       : "\335"  Yacute
+<dead_y> <x>       : "\333"  ytilde
+<dead_Y> <x>       : "\031"  Ytilde
+<dead_Y> <X>       : "\031"  Ytilde
+<dead_y> <j>       : "\334"  ybelowdot
+<dead_Y> <j>       : "\036"  Ybelowdot
+<dead_Y> <J>       : "\036"  Ybelowdot
+<dead_y> <r>       : "\326"  yhook
+<dead_Y> <r>       : "\024"  Yhook
+<dead_Y> <R>       : "\024"  Yhook
+<dead_y>       : "y"   y
+<dead_Y>       : "Y"   Y
+
+# End of Sequence Definition
--- xc/nls/Compose/Imakefile.aclark	Wed Oct 21 01:40:41 1998
+++ xc/nls/Compose/Imakefile	Thu Dec 23 20:55:45 1999
@@ -34,3 +34,5 @@
 ComposeTarget(iso8859-2)
 ComposeTarget(iso8859-4)
 ComposeTarget(iso8859-15)
+ComposeTarget(vi_VN.tcvn)
+ComposeTarget(vi_VN.viscii)
--- xc/nls/Compose/vi_VN.tcvn.aclark	Thu Dec 23 21:11:07 1999
+++ xc/nls/Compose/vi_VN.tcvn	Thu Dec 23 21:13:34 1999
@@ -0,0 +1,508 @@
+# $TOG: vi_VN.viscii /main/7 1998/05/20 15:33:23 kaleb $
+#
+# VISCII 1.1 Compose Sequence
+#
+# Sequence Definition
+#
+# <Multi_key> Means <Compose>
+# Special Character
+<Multi_key> <plus> <plus>    : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T>      : "@" at
+<Multi_key> <parenleft> <parenleft>  : "[" bracketleft
+<Multi_key> <slash> <slash>    : "\\"  backslash
+<Multi_key> <slash> <less>   : "\\"  backslash
+<Multi_key> <less> <slash>   : "\\"  backslash
+<Multi_key> <parenright> <parenright>  : "]" bracketright
+<Multi_key> <asciicircum> <space>  : "^" asciicircum
+<Multi_key> <space> <asciicircum>  : "^" asciicircum
+<Multi_key> <greater> <space>    : "^" asciicircum
+<Multi_key> <space> <greater>    : "^" asciicircum
+<Multi_key> <grave> <space>    : "`" grave
+<Multi_key> <space> <grave>    : "`" grave
+<Multi_key> <parenleft> <minus>    : "{" braceleft
+<Multi_key> <minus> <parenleft>    : "{" braceleft
+<Multi_key> <slash> <asciicircum>  : "|" bar
+<Multi_key> <asciicircum> <slash>  : "|" bar
+<Multi_key> <V> <L>      : "|" bar
+<Multi_key> <L> <V>      : "|" bar
+<Multi_key> <v> <l>      : "|" bar
+<Multi_key> <l> <v>      : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space>    : "~" asciitilde
+<Multi_key> <space> <minus>    : "~" asciitilde
+# Accented Alphabet
+<Multi_key> <A> <grave>      : "\300"  Agrave
+<Multi_key> <grave> <A>      : "\300"  Agrave
+<Multi_key> <A> <acute>      : "\301"  Aacute
+<Multi_key> <acute> <A>      : "\301"  Aacute
+<Multi_key> <A> <apostrophe>   : "\301"  Aacute
+<Multi_key> <apostrophe> <A>   : "\301"  Aacute
+<Multi_key> <A> <asciicircum>    : "\302"  Acircumflex
+<Multi_key> <asciicircum> <A>    : "\302"  Acircumflex
+<Multi_key> <A> <greater>    : "\302"  Acircumflex
+<Multi_key> <greater> <A>    : "\302"  Acircumflex
+<Multi_key> <A> <asciitilde>   : "\303"  Atilde
+<Multi_key> <asciitilde> <A>   : "\303"  Atilde
+<Multi_key> <A> <parenleft>    : "\304"  Abreve
+<Multi_key> <A> <period>   : "\304"  Abelowdot
+<Multi_key> <A> <question>   : "\305"  Ahook
+
+<Multi_key> <a> <grave>      : "\340"  agrave
+<Multi_key> <grave> <a>      : "\340"  agrave
+<Multi_key> <a> <acute>      : "\341"  aacute
+<Multi_key> <acute> <a>      : "\341"  aacute
+<Multi_key> <a> <apostrophe>   : "\341"  aacute
+<Multi_key> <apostrophe> <a>   : "\341"  aacute
+<Multi_key> <a> <asciicircum>    : "\342"  acircumflex
+<Multi_key> <asciicircum> <a>    : "\342"  acircumflex
+<Multi_key> <a> <greater>    : "\342"  acircumflex
+<Multi_key> <greater> <a>    : "\342"  acircumflex
+<Multi_key> <a> <asciitilde>   : "\343"  atilde
+<Multi_key> <asciitilde> <a>   : "\343"  atilde
+<Multi_key> <a> <pareleft>   : "\343"  abreve
+<Multi_key> <a> <period>   : "\343"  abelowdot
+<Multi_key> <a> <question>   : "\344"  ahook
+<Multi_key> <minus> <D>      : "\320"  Dstroke
+<Multi_key> <D> <minus>      : "\320"  Dstroke
+<Multi_key> <D> <D>      : "\320"  Dstroke
+<Multi_key> <minus> <d>      : "\360"  dstroke
+<Multi_key> <d> <minus>      : "\360"  dstroke
+<Multi_key> <d> <d>      : "\360"  dstroke
+<Multi_key> <E> <grave>      : "\310"  Egrave
+<Multi_key> <grave> <E>      : "\310"  Egrave
+<Multi_key> <E> <acute>      : "\311"  Eacute
+<Multi_key> <acute> <E>      : "\311"  Eacute
+<Multi_key> <E> <apostrophe>   : "\311"  Eacute
+<Multi_key> <apostrophe> <E>   : "\311"  Eacute
+<Multi_key> <E> <asciicircum>    : "\312"  Ecircumflex
+<Multi_key> <asciicircum> <E>    : "\312"  Ecircumflex
+<Multi_key> <E> <greater>    : "\312"  Ecircumflex
+<Multi_key> <greater> <E>    : "\312"  Ecircumflex
+<Multi_key> <E> <asciitilde>   : "\313"  Etilde
+<Multi_key> <asciitilde> <E>   : "\313"  Etilde
+<Multi_key> <E> <period>   : "\313"  Ebelowdot
+<Multi_key> <E> <question>   : "\313"  Ehook
+<Multi_key> <e> <grave>      : "\350"  egrave
+<Multi_key> <grave> <e>      : "\350"  egrave
+<Multi_key> <e> <acute>      : "\351"  eacute
+<Multi_key> <acute> <e>      : "\351"  eacute
+<Multi_key> <e> <apostrophe>   : "\351"  eacute
+<Multi_key> <apostrophe> <e>   : "\351"  eacute
+<Multi_key> <e> <asciicircum>    : "\352"  ecircumflex
+<Multi_key> <asciicircum> <e>    : "\352"  ecircumflex
+<Multi_key> <e> <greater>    : "\352"  ecircumflex
+<Multi_key> <greater> <e>    : "\352"  ecircumflex
+<Multi_key> <e> <asciitilde>   : "\353"  etilde
+<Multi_key> <asciitilde> <e>   : "\353"  etilde
+<Multi_key> <e> <period>   : "\353"  ebelowdot
+<Multi_key> <e> <question>   : "\353"  ehook
+<Multi_key> <I> <grave>      : "\314"  Igrave
+<Multi_key> <grave> <I>      : "\314"  Igrave
+<Multi_key> <I> <acute>      : "\315"  Iacute
+<Multi_key> <acute> <I>      : "\315"  Iacute
+<Multi_key> <I> <apostrophe>   : "\315"  Iacute
+<Multi_key> <apostrophe> <I>   : "\315"  Iacute
+<Multi_key> <I> <asciitilde>   : "\316"  Itilde
+<Multi_key> <asciitilde> <I>   : "\316"  Itilde
+<Multi_key> <I> <period>   : "\316"  Ibelowdot
+<Multi_key> <I> <question>   : "\317"  Ihook
+<Multi_key> <i> <grave>      : "\354"  igrave
+<Multi_key> <grave> <i>      : "\354"  igrave
+<Multi_key> <i> <acute>      : "\355"  iacute
+<Multi_key> <acute> <i>      : "\355"  iacute
+<Multi_key> <i> <apostrophe>   : "\355"  iacute
+<Multi_key> <apostrophe> <i>   : "\355"  iacute
+<Multi_key> <i> <asciitilde>   : "\356"  itilde
+<Multi_key> <asciitilde> <i>   : "\356"  itilde
+<Multi_key> <i> <period>   : "\356"  ibelowdot
+<Multi_key> <i> <question>   : "\357"  ihook
+<Multi_key> <O> <grave>      : "\322"  Ograve
+<Multi_key> <grave> <O>      : "\322"  Ograve
+<Multi_key> <O> <acute>      : "\323"  Oacute
+<Multi_key> <acute> <O>      : "\323"  Oacute
+<Multi_key> <O> <apostrophe>   : "\323"  Oacute
+<Multi_key> <apostrophe> <O>   : "\323"  Oacute
+<Multi_key> <O> <asciicircum>    : "\324"  Ocircumflex
+<Multi_key> <asciicircum> <O>    : "\324"  Ocircumflex
+<Multi_key> <O> <greater>    : "\324"  Ocircumflex
+<Multi_key> <greater> <O>    : "\324"  Ocircumflex
+<Multi_key> <O> <asciitilde>   : "\325"  Otilde
+<Multi_key> <asciitilde> <O>   : "\325"  Otilde
+<Multi_key> <O> <plus>     : "\325"  Ohorn
+<Multi_key> <O> <period>   : "\326"  Obelowdot
+<Multi_key> <O> <question>   : "\326"  Ohook
+<Multi_key> <o> <grave>      : "\362"  ograve
+<Multi_key> <grave> <o>      : "\362"  ograve
+<Multi_key> <o> <acute>      : "\363"  oacute
+<Multi_key> <acute> <o>      : "\363"  oacute
+<Multi_key> <o> <apostrophe>   : "\363"  oacute
+<Multi_key> <apostrophe> <o>   : "\363"  oacute
+<Multi_key> <o> <asciicircum>    : "\364"  ocircumflex
+<Multi_key> <asciicircum> <o>    : "\364"  ocircumflex
+<Multi_key> <o> <greater>    : "\364"  ocircumflex
+<Multi_key> <greater> <o>    : "\364"  ocircumflex
+<Multi_key> <o> <asciitilde>   : "\365"  otilde
+<Multi_key> <asciitilde> <o>   : "\365"  otilde
+<Multi_key> <o> <plus>     : "\366"  ohorn
+<Multi_key> <o> <period>   : "\366"  obelowdot
+<Multi_key> <o> <question>   : "\366"  ohook
+<Multi_key> <U> <grave>      : "\331"  Ugrave
+<Multi_key> <grave> <U>      : "\331"  Ugrave
+<Multi_key> <U> <acute>      : "\332"  Uacute
+<Multi_key> <acute> <U>      : "\332"  Uacute
+<Multi_key> <U> <apostrophe>   : "\332"  Uacute
+<Multi_key> <apostrophe> <U>   : "\332"  Uacute
+<Multi_key> <U> <plus>     : "\333"  Uhorn
+<Multi_key> <U> <period>   : "\333"  Ubelowdot
+<Multi_key> <U> <question>   : "\334"  Uhook
+<Multi_key> <u> <grave>      : "\371"  ugrave
+<Multi_key> <grave> <u>      : "\371"  ugrave
+<Multi_key> <u> <acute>      : "\372"  uacute
+<Multi_key> <acute> <u>      : "\372"  uacute
+<Multi_key> <u> <apostrophe>   : "\372"  uacute
+<Multi_key> <apostrophe> <u>   : "\372"  uacute
+<Multi_key> <u> <plus>     : "\373"  uhorn
+<Multi_key> <u> <period>   : "\373"  ubelowdot
+<Multi_key> <u> <question>   : "\374"  uhook
+<Multi_key> <Y> <acute>      : "\335"  Yacute
+<Multi_key> <acute> <Y>      : "\335"  Yacute
+<Multi_key> <Y> <apostrophe>   : "\335"  Yacute
+<Multi_key> <apostrophe> <Y>   : "\335"  Yacute
+<Multi_key> <Y> <grave>      : "\375"  Ygrave
+<Multi_key> <grave> <Y>      : "\375"  Ygrave
+<Multi_key> <Y> <asciitilde>   : "\375"  Ytilde
+<Multi_key> <asciitilde> <Y>   : "\375"  Ytilde
+<Multi_key> <Y> <period>   : "\375"  Ybelowdot
+<Multi_key> <Y> <question>   : "\375"  Yhook
+<Multi_key> <y> <acute>      : "\375"  yacute
+<Multi_key> <acute> <y>      : "\375"  yacute
+<Multi_key> <y> <apostrophe>   : "\375"  yacute
+<Multi_key> <apostrophe> <y>   : "\375"  yacute
+<Multi_key> <y> <grave>      : "\375"  ygrave
+<Multi_key> <grave> <y>      : "\375"  ygrave
+<Multi_key> <Y> <asciitilde>   : "\375"  ytilde
+<Multi_key> <asciitilde> <y>   : "\375"  ytilde
+<Multi_key> <y> <period>   : "\375"  ybelowdot
+<Multi_key> <y> <question>   : "\375"  yhook
+#
+# multiple diacritics
+#
+
+#
+#
+# dead key accent keysyms
+# Special Character
+<dead_circumflex>  <slash>   : "|" bar
+<dead_grave> <space>     : "`" grave
+<dead_acute> <space>     : "'" apostrophe
+<dead_diaeresis> <space>   : "\250"  diaeresis
+<dead_circumflex> <space>    : "^" asciicircum
+<dead_tilde> <space>     : "~" asciitilde
+<dead_grave> <space>     : "`" grave
+<dead_acute> <space>     : "'" apostrophe
+<dead_doubleacute> <space>   : "\""  quotedbl
+<dead_abovering> <space>   : "\260"  degree
+<dead_abovering> <dead_abovering>  : "\260"  degree
+<dead_circumflex> <0>      : "\260"  degree
+<dead_circumflex> <1>      : "\271"  onesuperior
+<dead_circumflex> <2>      : "\262"  twosuperior
+<dead_circumflex> <3>      : "\263"  threesuperior
+<dead_circumflex> <period>   : "\267"  periodcentered
+<dead_circumflex> <exclam>   : "\246"  brokenbar
+<dead_cedilla> <minus>     : "\254"  notsign
+<dead_circumflex> <minus>    : "\257"  macron
+<dead_circumflex> <underscore>   : "\257"  macron
+<dead_acute> <apostrophe>    : "\264"  acute
+<dead_cedilla> <comma>     : "\270"  cedilla
+<dead_diaeresis> <quotedbl>    : "\250"  diaeresis
+# Accented Alphabet
+<dead_abovering> <A>     : "\305"  Aring
+<dead_grave> <A>     : "\300"  Agrave
+<dead_acute> <A>     : "\301"  Aacute
+<dead_circumflex> <A>      : "\302"  Acircumflex
+<dead_tilde> <A>     : "\303"  Atilde
+<dead_diaeresis> <A>     : "\304"  Adiaeresis
+<dead_abovering> <a>     : "\345"  aring
+<dead_grave> <a>     : "\340"  agrave
+<dead_acute> <a>     : "\341"  aacute
+<dead_circumflex> <a>      : "\342"  acircumflex
+<dead_tilde> <a>     : "\343"  atilde
+<dead_diaeresis> <a>     : "\344"  adiaeresis
+<dead_cedilla> <C>     : "\307"  Ccedilla
+<dead_cedilla> <c>     : "\347"  ccedilla
+<dead_grave> <E>     : "\310"  Egrave
+<dead_acute> <E>     : "\311"  Eacute
+<dead_circumflex> <E>      : "\312"  Ecircumflex
+<dead_diaeresis> <E>     : "\313"  Ediaeresis
+<dead_grave> <e>     : "\350"  egrave
+<dead_acute> <e>     : "\351"  eacute
+<dead_circumflex> <e>      : "\352"  ecircumflex
+<dead_diaeresis> <e>     : "\353"  ediaeresis
+<dead_grave> <I>     : "\314"  Igrave
+<dead_acute> <I>     : "\315"  Iacute
+<dead_circumflex> <I>      : "\316"  Icircumflex
+<dead_diaeresis> <I>     : "\317"  Idiaeresis
+<dead_grave> <i>     : "\354"  igrave
+<dead_acute> <i>     : "\355"  iacute
+<dead_circumflex> <i>      : "\356"  icircumflex
+<dead_diaeresis> <i>     : "\357"  idiaeresis
+<dead_tilde> <N>     : "\321"  Ntilde
+<dead_tilde> <n>     : "\361"  ntilde
+<dead_grave> <O>     : "\322"  Ograve
+<dead_acute> <O>     : "\323"  Oacute
+<dead_circumflex> <O>      : "\324"  Ocircumflex
+<dead_tilde> <O>     : "\325"  Otilde
+<dead_diaeresis> <O>     : "\326"  Odiaeresis
+<dead_grave> <o>     : "\362"  ograve
+<dead_acute> <o>     : "\363"  oacute
+<dead_circumflex> <o>      : "\364"  ocircumflex
+<dead_tilde> <o>     : "\365"  otilde
+<dead_diaeresis> <o>     : "\366"  odiaeresis
+<dead_grave> <U>     : "\331"  Ugrave
+<dead_acute> <U>     : "\332"  Uacute
+<dead_circumflex> <U>      : "\333"  Ucircumflex
+<dead_doubleacute> <U>     : "\334"  Udiaeresis
+<dead_diaeresis> <U>     : "\334"  Udiaeresis
+<dead_grave> <u>     : "\371"  ugrave
+<dead_acute> <u>     : "\372"  uacute
+<dead_circumflex> <u>      : "\373"  ucircumflex
+<dead_doubleacute> <u>     : "\374"  udiaeresis
+<dead_diaeresis> <u>     : "\374"  udiaeresis
+<dead_acute> <Y>     : "\335"  Yacute
+<dead_acute> <y>     : "\375"  yacute
+<dead_diaeresis> <y>     : "\377"  ydiaeresis
+
+# These are for us_intl, that does not has diaeresis, etc
+<dead_acute> <dead_acute>               : "'"           apostrophe
+<dead_grave> <dead_grave>               : "`"           grave
+<dead_diaeresis> <space>                : "\""          quotedbl
+<dead_diaeresis> <dead_diaeresis>       : "\""          quotedbl
+<dead_tilde> <dead_tilde>               : "~"           asciitilde
+<dead_circumflex> <dead_circumflex>     : "^"           asciicircum
+
+# dead_letters
+#
+# dead_a, dead_A, dead_d, dead_D, dead_e, dead_E, dead_i, dead_I,
+# dead_o, dead_O, dead_u, dead_U, dead_y, dead_Y
+#
+
+<dead_a> <f>       : "\317"  agrave
+<dead_A> <f>       : "\237"  Agrave
+<dead_A> <F>       : "\237"  Agrave
+<dead_a> <s>       : "\375"  aacute
+<dead_A> <s>       : "\335"  Aacute
+<dead_A> <S>       : "\335"  Aacute
+<dead_a> <a>       : "\334"  acircumflex
+<dead_A> <a>       : "\036"  Acircumflex
+<dead_A> <A>       : "\036"  Acircumflex
+<dead_a> <x>       : "\333"  atilde
+<dead_A> <x>       : "\031"  Atilde
+<dead_A> <X>       : "\031"  Atilde
+<dead_a> <w>       : "\333"  abreve
+<dead_A> <w>       : "\031"  Abreve
+<dead_A> <W>       : "\031"  Abreve
+<dead_a> <j>       : "\333"  abelowdot
+<dead_A> <j>       : "\031"  Abelowdot
+<dead_A> <J>       : "\031"  Abelowdot
+<dead_a> <r>       : "\333"  ahook
+<dead_A> <r>       : "\031"  Ahook
+<dead_A> <R>       : "\031"  Ahook
+<dead_a> <a> <s>     : "\334"  acircumflexacute
+<dead_A> <a> <s>     : "\036"  Acircumflexacute
+<dead_A> <A> <S>     : "\036"  Acircumflexacute
+<dead_a> <a> <f>     : "\334"  acircumflexgrave
+<dead_A> <a> <f>     : "\036"  Acircumflexgrave
+<dead_A> <A> <F>     : "\036"  Acircumflexgrave
+<dead_a> <a> <r>     : "\334"  acircumflexhook
+<dead_A> <a> <r>     : "\036"  Acircumflexhook
+<dead_A> <A> <R>     : "\036"  Acircumflexhook
+<dead_a> <a> <x>     : "\334"  acircumflextilde
+<dead_A> <a> <x>     : "\036"  Acircumflextilde
+<dead_A> <A> <X>     : "\036"  Acircumflextilde
+<dead_a> <a> <j>     : "\334"  acircumflexdotbelow
+<dead_A> <a> <j>     : "\036"  Acircumflexdotbelow
+<dead_A> <A> <J>     : "\036"  Acircumflexdotbelow
+<dead_a> <w> <s>     : "\334"  abreveacute
+<dead_A> <w> <s>     : "\036"  Abreveacute
+<dead_A> <W> <S>     : "\036"  Abreveacute
+<dead_a> <w> <f>     : "\334"  abrevegrave
+<dead_A> <w> <f>     : "\036"  Abrevegrave
+<dead_A> <W> <F>     : "\036"  Abrevegrave
+<dead_a> <w> <r>     : "\334"  abrevehook
+<dead_A> <w> <r>     : "\036"  Abrevehook
+<dead_A> <W> <R>     : "\036"  Abrevehook
+<dead_a> <w> <x>     : "\334"  abrevetilde
+<dead_A> <w> <x>     : "\036"  Abrevetilde
+<dead_A> <W> <X>     : "\036"  Abrevetilde
+<dead_a> <w> <j>     : "\334"  abrevedotbelow
+<dead_A> <w> <j>     : "\036"  Abrevedotbelow
+<dead_A> <W> <J>     : "\036"  Abrevedotbelow
+<dead_a>       : "a"   a
+<dead_A>       : "A"   A
+<dead_d> <dead_d>      : "\360"  dstroke
+<dead_D> <dead_D>      : "\320"  Dstroke
+<dead_d>       : "d"   d
+<dead_D>       : "D"   D
+<dead_e> <f>       : "\317"  egrave
+<dead_E> <f>       : "\237"  Egrave
+<dead_E> <F>       : "\237"  Egrave
+<dead_e> <s>       : "\375"  eacute
+<dead_E> <s>       : "\335"  Eacute
+<dead_E> <S>       : "\335"  Eacute
+<dead_e> <e>       : "\334"  ecircumflex
+<dead_E> <e>       : "\036"  Ecircumflex
+<dead_E> <E>       : "\036"  Ecircumflex
+<dead_e> <x>       : "\333"  etilde
+<dead_E> <x>       : "\031"  Etilde
+<dead_E> <X>       : "\031"  Etilde
+<dead_e> <j>       : "\333"  ebelowdot
+<dead_E> <j>       : "\031"  Ebelowdot
+<dead_E> <J>       : "\031"  Ebelowdot
+<dead_e> <r>       : "\333"  ehook
+<dead_E> <r>       : "\031"  Ehook
+<dead_E> <R>       : "\031"  Ehook
+<dead_e> <e> <f>     : "\317"  ecircumflexgrave
+<dead_E> <e> <f>     : "\237"  Ecircumflexgrave
+<dead_E> <E> <F>     : "\237"  Ecircumflexgrave
+<dead_e> <e> <s>     : "\375"  ecircumflexacute
+<dead_E> <e> <s>     : "\335"  Ecircumflexacute
+<dead_E> <E> <S>     : "\335"  Ecircumflexacute
+<dead_e> <e> <x>     : "\333"  ecircumflextilde
+<dead_E> <e> <x>     : "\031"  Ecircumflextilde
+<dead_E> <E> <X>     : "\031"  Ecircumflextilde
+<dead_e> <e> <j>     : "\333"  ecircumflexbelowdot
+<dead_E> <e> <j>     : "\031"  Ecircumflexbelowdot
+<dead_E> <E> <J>     : "\031"  Ecircumflexbelowdot
+<dead_e> <e> <r>     : "\333"  ecircumflexhook
+<dead_E> <e> <r>     : "\031"  Ecircumflexhook
+<dead_E> <E> <R>     : "\031"  Ecircumflexhook
+<dead_e>       : "e"   e
+<dead_E>       : "E"   E
+<dead_i> <f>       : "\317"  igrave
+<dead_I> <f>       : "\237"  Igrave
+<dead_I> <F>       : "\237"  Igrave
+<dead_i> <s>       : "\375"  iacute
+<dead_I> <s>       : "\335"  Iacute
+<dead_I> <S>       : "\335"  Iacute
+<dead_i> <x>       : "\333"  itilde
+<dead_I> <x>       : "\031"  Itilde
+<dead_I> <X>       : "\031"  Itilde
+<dead_i> <j>       : "\333"  ibelowdot
+<dead_I> <j>       : "\031"  Ibelowdot
+<dead_I> <J>       : "\031"  Ibelowdot
+<dead_i> <r>       : "\333"  ihook
+<dead_I> <r>       : "\031"  Ihook
+<dead_I> <R>       : "\031"  Ihook
+<dead_i>       : "i"   i
+<dead_I>       : "I"   I
+<dead_o> <f>       : "\317"  ograve
+<dead_O> <f>       : "\237"  Ograve
+<dead_O> <F>       : "\237"  Ograve
+<dead_o> <s>       : "\375"  oacute
+<dead_O> <s>       : "\335"  Oacute
+<dead_O> <S>       : "\335"  Oacute
+<dead_o> <o>       : "\334"  ocircumflex
+<dead_O> <o>       : "\036"  Ocircumflex
+<dead_O> <O>       : "\036"  Ocircumflex
+<dead_o> <x>       : "\333"  otilde
+<dead_O> <x>       : "\031"  Otilde
+<dead_O> <X>       : "\031"  Otilde
+<dead_o> <w>       : "\333"  ohorn
+<dead_O> <w>       : "\031"  Ohorn
+<dead_O> <W>       : "\031"  Ohorn
+<dead_o> <j>       : "\333"  obelowdot
+<dead_O> <j>       : "\031"  Obelowdot
+<dead_O> <J>       : "\031"  Obelowdot
+<dead_o> <r>       : "\333"  ohook
+<dead_O> <r>       : "\031"  Ohook
+<dead_O> <R>       : "\031"  Ohook
+<dead_o> <o> <s>     : "\334"  ocircumflexacute
+<dead_O> <o> <s>     : "\036"  Ocircumflexacute
+<dead_O> <O> <S>     : "\036"  Ocircumflexacute
+<dead_o> <o> <f>     : "\334"  ocircumflexgrave
+<dead_O> <o> <f>     : "\036"  Ocircumflexgrave
+<dead_O> <O> <F>     : "\036"  Ocircumflexgrave
+<dead_o> <o> <r>     : "\334"  ocircumflexhook
+<dead_O> <o> <r>     : "\036"  Ocircumflexhook
+<dead_O> <O> <R>     : "\036"  Ocircumflexhook
+<dead_o> <o> <x>     : "\334"  ocircumflextilde
+<dead_O> <o> <x>     : "\036"  Ocircumflextilde
+<dead_O> <O> <X>     : "\036"  Ocircumflextilde
+<dead_o> <o> <j>     : "\334"  ocircumflexdotbelow
+<dead_O> <o> <j>     : "\036"  Ocircumflexdotbelow
+<dead_O> <O> <J>     : "\036"  Ocircumflexdotbelow
+<dead_o> <w> <s>     : "\334"  ohornacute
+<dead_O> <w> <s>     : "\036"  Ohornacute
+<dead_O> <W> <S>     : "\036"  Ohornacute
+<dead_o> <w> <f>     : "\334"  ohorngrave
+<dead_O> <w> <f>     : "\036"  Ohorngrave
+<dead_O> <W> <F>     : "\036"  Ohorngrave
+<dead_o> <w> <r>     : "\334"  ohornhook
+<dead_O> <w> <r>     : "\036"  Ohornhook
+<dead_O> <W> <R>     : "\036"  Ohornhook
+<dead_o> <w> <x>     : "\334"  ohorntilde
+<dead_O> <w> <x>     : "\036"  Ohorntilde
+<dead_O> <W> <X>     : "\036"  Ohorntilde
+<dead_o> <w> <j>     : "\334"  ohorndotbelow
+<dead_O> <w> <j>     : "\036"  Ohorndotbelow
+<dead_O> <W> <J>     : "\036"  Ohorndotbelow
+<dead_o>       : "o"   o
+<dead_O>       : "O"   O
+<dead_u> <f>       : "\317"  ugrave
+<dead_U> <f>       : "\237"  Ugrave
+<dead_U> <F>       : "\237"  Ugrave
+<dead_u> <s>       : "\375"  uacute
+<dead_U> <s>       : "\335"  Uacute
+<dead_U> <S>       : "\335"  Uacute
+<dead_u> <x>       : "\333"  utilde
+<dead_U> <x>       : "\031"  Utilde
+<dead_U> <X>       : "\031"  Utilde
+<dead_u> <w>       : "\333"  uhorn
+<dead_U> <w>       : "\031"  Uhorn
+<dead_U> <W>       : "\031"  Uhorn
+<dead_u> <j>       : "\333"  ubelowdot
+<dead_U> <j>       : "\031"  Ubelowdot
+<dead_U> <J>       : "\031"  Ubelowdot
+<dead_u> <r>       : "\333"  uhook
+<dead_U> <r>       : "\031"  Uhook
+<dead_U> <R>       : "\031"  Uhook
+<dead_u> <w> <s>     : "\334"  uhornacute
+<dead_U> <w> <s>     : "\036"  Uhornacute
+<dead_U> <W> <S>     : "\036"  Uhornacute
+<dead_u> <w> <f>     : "\334"  uhorngrave
+<dead_U> <w> <f>     : "\036"  Uhorngrave
+<dead_U> <W> <F>     : "\036"  Uhorngrave
+<dead_u> <w> <r>     : "\334"  uhornhook
+<dead_U> <w> <r>     : "\036"  Uhornhook
+<dead_U> <W> <R>     : "\036"  Uhornhook
+<dead_u> <w> <x>     : "\334"  uhorntilde
+<dead_U> <w> <x>     : "\036"  Uhorntilde
+<dead_U> <W> <X>     : "\036"  Uhorntilde
+<dead_u> <w> <j>     : "\334"  uhorndotbelow
+<dead_U> <w> <j>     : "\036"  Uhorndotbelow
+<dead_U> <W> <J>     : "\036"  Uhorndotbelow
+<dead_u>       : "u"   u
+<dead_U>       : "U"   U
+
+<dead_y> <f>       : "\317"  ygrave
+<dead_Y> <f>       : "\237"  Ygrave
+<dead_Y> <F>       : "\237"  Ygrave
+<dead_y> <s>       : "\375"  yacute
+<dead_Y> <s>       : "\335"  Yacute
+<dead_Y> <S>       : "\335"  Yacute
+<dead_y> <x>       : "\333"  ytilde
+<dead_Y> <x>       : "\031"  Ytilde
+<dead_Y> <X>       : "\031"  Ytilde
+<dead_y> <j>       : "\334"  ybelowdot
+<dead_Y> <j>       : "\036"  Ybelowdot
+<dead_Y> <J>       : "\036"  Ybelowdot
+<dead_y> <r>       : "\326"  yhook
+<dead_Y> <r>       : "\024"  Yhook
+<dead_Y> <R>       : "\024"  Yhook
+<dead_y>       : "y"   y
+<dead_Y>       : "Y"   Y
--- xc/nls/XLC_LOCALE/Imakefile.aclark	Thu Dec 23 20:57:47 1999
+++ xc/nls/XLC_LOCALE/Imakefile	Thu Dec 23 20:58:48 1999
@@ -65,6 +65,8 @@
 LTarget(ja.SJIS)
 LTarget(ko)
 LTarget(koi8-r)
+LTarget(vi_VN.tcvn)
+LTarget(vi_VN.viscii)
 LTarget(zh)
 LTarget(zh_TW)
 LTarget(zh_TW.Big5)
@@ -91,3 +93,5 @@
 InstallNonExecFile(gb2312,$(TBLDIR))
 InstallNonExecFile(jis0201,$(TBLDIR))
 InstallNonExecFile(tabkoi8_r,$(TBLDIR))
+InstallNonExecFile(tabtcvn,$(TBLDIR))
+InstallNonExecFile(tabviscii,$(TBLDIR))
--- xc/nls/XLC_LOCALE/tabtcvn.aclark	Thu Dec 23 20:59:17 1999
+++ xc/nls/XLC_LOCALE/tabtcvn	Thu Dec 23 21:00:16 1999
@@ -0,0 +1,26 @@
+  00 00da 1eea   03 1eea 1eec 1eee   07
+  08   09   0a   0b   0c   0d   0e   0f
+  10 1ee8 1ef0 1ef2 1ef6 1ef8 00dd 1ef4
+  18   19   1a   1b   1c   1d   1e   1f
+20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
+30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
+40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
+60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
+70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f
+00c0 1ea2 00c3 00c1 1ea0 1eb6 1eac 00c8
+1eba 1ebc 00c9 1eb8 1ec6 00cc 1ec8 0128
+00cd 1eca 00d2 1ece 00d5 00d3 1ecc 1ed8
+1edc 1ede 1ee0 1eda 1ee2 00d9 1ee6 0168
+00a0 0102 00c2 00ca 00d4 01a0 01af 0110
+0103 00e2 00ea 00f4 01a1 01b0 0111 1eb0
+0300 0309 0303 0301 0323 00e0 1ea3 00e3
+00e1 1ea1 1eb2 1eb1 1eb3 1eb5 1eaf 1eb4
+1eae 1ea6 1ea8 1eaa 1ea4 1ec0 1eb7 1ea7
+1ea9 1eab 1ea5 1ead 00e8 1ec2 1ebb 1ebd
+00e9 1eb9 1ec1 1ec3 1ec5 1ebf 1ec7 00ec
+1ec9 1ec4 1ebe 1ed2 0129 00ed 1ecb 00f2
+1ed4 1ecf 00f5 00f3 1ecd 1ed3 1ed5 1ed7
+1ed1 1ed9 1edd 1edf 1ee1 1edb 1ee3 00f9
+1ed6 1ee7 0169 00fa 1ee5 1eeb 1eed 1eef
+1ee9 1ef1 1ef3 1ef7 1ef9 00fd 1ef5 1ed0
--- xc/nls/XLC_LOCALE/tabviscii.aclark	Thu Dec 23 21:00:27 1999
+++ xc/nls/XLC_LOCALE/tabviscii	Thu Dec 23 21:00:53 1999
@@ -0,0 +1,24 @@
+00 01 1eb2 03 04 1eb4 1eaa 07 08 09 0a 0b 0c 0d 0e 0f
+10 11 12 13 1ef6 15 16 17 18 1ef8 1a 1b 1c 1d 1ef4 1f
+20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
+30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
+40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
+60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
+70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f
+1ea0 1aae 1eb0 1eb6 1ea4 1ea6 1ea8 1eac
+1ebc 1eb8 1ebe 1ec0 1ec2 1ec4 1ec6 1ed0
+1ed2 1ed4 1ed6 1ed8 1ee2 1eda 1edc 1ede
+1eca 1ece 1ecc 1ec8 1ee6 0168 1ee4 1ef2
+00d5 1eaf 1eb1 1eb7 1ea5 1ea7 1ea9 1ead
+1ebd 1eb9 1ebf 1ec1 1ec3 1ec5 1ec7 1ed1
+1ed3 1ed5 1ed7 1ee0 01a0 1ed9 1edd 1edf
+1ecb 1ef0 1ee8 1eea 1eec 01a1 1edb 01af
+00c0 00c1 00c2 00c3 1ea2 0102 1eb3 1eb5
+00c8 00c9 00ca 1eba 00cc 00cd 0128 1ef3
+0110 1ee9 00d2 00d3 00d4 1ea1 1ef7 1eeb
+1eed 00d9 00da 1ef9 1ef5 00dd 1ee1 01b0
+00e0 00e1 00e2 00e3 1ea3 0103 1eef 1eab
+00e8 00e9 00ea 1ebb 00ec 00ed 0129 1ec9
+0111 1ef1 00f2 00f3 00f4 00f5 1ecf 1ecd
+1ee5 00f9 00fa 0169 1ee7 00fd 1ee3 1eee
--- xc/nls/XLC_LOCALE/vi_VN.tcvn.aclark	Thu Dec 23 21:01:07 1999
+++ xc/nls/XLC_LOCALE/vi_VN.tcvn	Thu Dec 23 21:02:00 1999
@@ -0,0 +1,57 @@
+XCOMM  XLocale Database Sample for vi_VN.TCVN
+XCOMM
+
+XCOMM
+XCOMM  XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM  fs0 class (7 bit ASCII)
+fs0  {
+ charset   ISO8859-1:GL
+ font            TCVN-5712:GL; ISO8859-1:GL
+}
+XCOMM  fs1 class
+fs1  {
+ charset         TCVN-5712:GR
+ font            TCVN-5712:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM  XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name           TCVN-5712
+mb_cur_max   1
+state_depend_encoding  False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits    7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits    8
+#endif
+
+XCOMM  cs0 class
+cs0  {
+ side    GL:Default
+ length    1
+ wc_encoding \x00000000
+ ct_encoding     TCVN-5712:GL; ISO8859-1:GL
+}
+
+
+XCOMM  cs1 class
+cs1  {
+ side    GR:Default
+ length    1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding     TCVN-5712:GR; ISO8859-1:GR
+}
+
+END XLC_XLOCALE
--- xc/nls/XLC_LOCALE/vi_VN.viscii.aclark	Thu Dec 23 21:02:16 1999
+++ xc/nls/XLC_LOCALE/vi_VN.viscii	Thu Dec 23 21:02:56 1999
@@ -0,0 +1,57 @@
+XCOMM  XLocale Database Sample for vi_VN.VISCII
+XCOMM
+
+XCOMM
+XCOMM  XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM  fs0 class (7 bit ASCII)
+fs0  {
+ charset   ISO8859-1:GL
+ font            VISCII1.1-1:GL; ISO8859-1:GL
+}
+XCOMM  fs1 class
+fs1  {
+ charset         VISCII1.1-1:GR
+ font            VISCII1.1-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM  XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name           VISCII1.1-1
+mb_cur_max   1
+state_depend_encoding  False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits    7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits    8
+#endif
+
+XCOMM  cs0 class
+cs0  {
+ side    GL:Default
+ length    1
+ wc_encoding \x00000000
+ ct_encoding     VISCII1.1-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM  cs1 class
+cs1  {
+ side    GR:Default
+ length    1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding     VISCII1.1-1:GR; ISO8859-1:GR
+}
+
+END XLC_XLOCALE
--- xc/nls/compose.dir.aclark	Thu Dec 23 21:03:24 1999
+++ xc/nls/compose.dir	Thu Dec 23 21:04:51 1999
@@ -15,6 +15,8 @@
 iso8859-1/Compose	de_DE.ISO8859-1
 iso8859-1/Compose	de_LI.ISO8859-1
 iso8859-1/Compose	de_LU.ISO8859-1
+vi_VN.tcvn/Compose	vi_VN.TCVN
+vi_VN.viscii/Compose	vi_VN.VISCII
 iso8859-1/Compose	en_AU.ISO8859-1
 iso8859-1/Compose	en_BZ.ISO8859-1
 iso8859-1/Compose	en_CA.ISO8859-1
--- xc/nls/locale.alias.aclark	Thu Dec 23 21:05:08 1999
+++ xc/nls/locale.alias	Thu Dec 23 21:06:36 1999
@@ -315,6 +315,12 @@
 tr						tr_TR.ISO8859-9
 tr_TR						tr_TR.ISO8859-9
 tr_TR.iso88599					tr_TR.ISO8859-9
+vi						vi_VN.TCVN
+vi_VN						vi_VN.TCVN
+vi_VN.tcvn					vi_VN.TCVN
+vi_VN.tcvn5712					vi_VN.TCVN
+vi_VN.viscii					vi_VN.VISCII
+vi_VN.viscii111					vi_VN.VISCII
 zh						zh_CN.eucCN
 zh_CN						zh_CN.eucCN
 zh_CN.EUC					zh_CN.eucCN
--- xc/nls/locale.dir.aclark	Thu Dec 23 21:06:52 1999
+++ xc/nls/locale.dir	Thu Dec 23 21:07:24 1999
@@ -169,6 +169,8 @@
 th_TH/XLC_LOCALE	th_TH.TACTIS
 iso8859-9/XLC_LOCALE 	tr_TR.ISO8859-9
 iso8859-5/XLC_LOCALE 	uk_UA.ISO8859-5
+vi_VN.tcvn/XLC_LOCALE	vi_VN.TCVN
+vi_VN.viscii/XLC_LOCALE	vi_VN.VISCII
 zh/XLC_LOCALE		zh_CN.eucCN
 zh_TW/XLC_LOCALE	zh_TW.eucTW
 zh_TW.Big5/XLC_LOCALE	zh_TW.Big5
--- xc/include/keysym.h.aclark	Thu Dec 23 22:44:40 1999
+++ xc/include/keysym.h	Thu Dec 23 22:44:46 1999
@@ -56,6 +56,7 @@
 #define XK_LATIN3
 #define XK_LATIN4
 #define XK_GREEK
+#define XK_VIETNAMESE
 #define XK_CURRENCY
 
 #include <X11/keysymdef.h>
---------------------------------------
Received: (at 53752-done) by bugs.debian.org; 19 Sep 2004 06:59:25 +0000
>From barbier@linuxfr.org Sat Sep 18 23:59:25 2004
Return-path: <barbier@linuxfr.org>
Received: from postfix4-2.free.fr [213.228.0.176] 
	by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1C8vfR-0007xX-00; Sat, 18 Sep 2004 23:59:25 -0700
Received: from localhost.localdomain (lns-vlq-27-82-254-99-56.adsl.proxad.net [82.254.99.56])
	by postfix4-2.free.fr (Postfix) with ESMTP id 5D6BA1EB920
	for <53752-done@bugs.debian.org>; Sun, 19 Sep 2004 08:59:23 +0200 (CEST)
Received: by localhost.localdomain (Postfix, from userid 1000)
	id 2E47E241DB; Sun, 19 Sep 2004 09:02:53 +0200 (CEST)
Date: Sun, 19 Sep 2004 09:02:52 +0200
To: 53752-done@bugs.debian.org
Subject: Re: Bug#53752: xlibs: Vietnamese (vi_VN) localization
Message-ID: <20040919070252.GA1104@linuxfr.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.6+20040818i
From: barbier@linuxfr.org (Denis Barbier)
Delivered-To: 53752-done@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-6.0 required=4.0 tests=BAYES_00,HAS_BUG_NUMBER 
	autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 

Hi,

this bug was fixed in XFree86 4.0.2, so I am closing it.
Thanks for your bugreport.

Denis



Reply to: