diff -uNr ck-0.9.20.org/Makefile ck-0.9.20/Makefile
--- ck-0.9.20.org/Makefile	2004-09-22 23:27:09.000000000 +0900
+++ ck-0.9.20/Makefile	2004-10-10 00:26:39.556216000 +0900
@@ -1,12 +1,14 @@
-CFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -I./translator # -D_DEBUG
-LDFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -Wl,--subsystem,console
+#CFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -I./translator # -D_DEBUG
+#LDFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -Wl,--subsystem,console
+CFLAGS	= -Wall -O3 -mcpu=i586 -march=i586 -mwindows -I./translator # -D_DEBUG
+LDFLAGS	= -s -Wall -O3 -mcpu=i586 -march=i586 -mwindows -Wl,--subsystem,console
 
 UINC	=
-ULIB	= -lstdc++ -lpng12 -limm32
+ULIB	= -lunicows -lstdc++ -lpng12 -limm32
 
 OBJ	= main.o app.o esc.o buffer.o err.o fontset.o option.o rsrc.o
 CK	= $(OBJ) window.o skin.o
-CKO	= $(OBJ:.o=.oo) win_opa.oo
+CKO	= $(OBJ:.o=.oo) win_opa.oo kernel32.oo imm32.oo
 TRNSLIB	= translator/translator.a
 
 
diff -uNr ck-0.9.20.org/ckstart/Makefile ck-0.9.20/ckstart/Makefile
--- ck-0.9.20.org/ckstart/Makefile	2004-09-22 16:55:16.000000000 +0900
+++ ck-0.9.20/ckstart/Makefile	2004-10-02 22:40:20.000000000 +0900
@@ -6,7 +6,7 @@
 ULIB	=
 
 CFLAGS	= -O2 -Wall -mwindows
-LDFLAGS	= -O2 -Wall -mwindows -Wl,--subsystem,windows
+LDFLAGS	= -s -O2 -Wall -mwindows -Wl,--subsystem,windows
 
 .SUFFIXES: .exe .o .c .rc
 
diff -uNr ck-0.9.20.org/translator/Makefile ck-0.9.20/translator/Makefile
--- ck-0.9.20.org/translator/Makefile	2004-06-01 02:40:34.000000000 +0900
+++ ck-0.9.20/translator/Makefile	2004-10-03 03:56:30.000000000 +0900
@@ -1,5 +1,7 @@
-CFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows
-LDFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -Wl,--subsystem,console
+#CFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows
+#LDFLAGS	= -Wall -O3 -mcpu=i686 -march=i686 -mwindows -Wl,--subsystem,console
+CFLAGS	= -Wall -O3 -mcpu=i586 -march=i586 -mwindows
+LDFLAGS	= -s -Wall -O3 -mcpu=i586 -march=i586 -mwindows -Wl,--subsystem,console
 
 TARGET	= translator.a
 OBJ	= translator.o mstr.o
diff -uNr ck-0.9.20.org/imm32.cpp ck-0.9.20/imm32.cpp
--- ck-0.9.20.org/imm32.cpp	1970-01-01 09:00:00.000000000 +0900
+++ ck-0.9.20/imm32.cpp	2004-10-02 21:14:26.000000000 +0900
@@ -0,0 +1,79 @@
+/*
+ * imm32.cpp	imm32.dll wrapper
+ */
+
+#define _KERNEL32_
+#include <windows.h>
+
+#define IsWindows9x() 	(::GetVersion() >= 0x80000000)
+
+
+HMODULE g_hImm32;
+
+
+BOOL LoadImm32()
+{
+	if (!g_hImm32) {
+		g_hImm32 = ::LoadLibraryA("imm32.dll");
+		if (!g_hImm32) {
+			SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
+
+typedef BOOL (WINAPI *fpImmSetCompositionFontA)(HIMC, LPLOGFONTA);
+typedef BOOL (WINAPI *fpImmSetCompositionFontW)(HIMC, LPLOGFONTW);
+
+BOOL WINAPI
+ImmSetCompositionFontW(
+		HIMC hIMC,
+		LPLOGFONTW lplf
+	)
+{
+	if (!LoadImm32()) {
+		return FALSE;
+	}
+	
+	if (!IsWindows9x()) {
+		static fpImmSetCompositionFontW pImmSetCompositionFontW =
+			(fpImmSetCompositionFontW) ::GetProcAddress(g_hImm32, "ImmSetCompositionFontW");
+		if (pImmSetCompositionFontW == NULL) {
+			SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+			return FALSE;
+		}
+		return pImmSetCompositionFontW(hIMC, lplf);
+	}
+
+    // --- Windows 9x only ---
+
+	LOGFONTA lf;
+
+	lf.lfHeight = lplf->lfHeight;
+	lf.lfWidth = lplf->lfWidth;
+	lf.lfEscapement = lplf->lfEscapement;
+	lf.lfOrientation = lplf->lfOrientation;
+	lf.lfWeight = lplf->lfWeight;
+	lf.lfItalic = lplf->lfItalic;
+	lf.lfUnderline = lplf->lfUnderline;
+	lf.lfStrikeOut = lplf->lfStrikeOut;
+	lf.lfCharSet = lplf->lfCharSet;
+	lf.lfOutPrecision = lplf->lfOutPrecision;
+	lf.lfClipPrecision = lplf->lfClipPrecision;
+	lf.lfQuality = lplf->lfQuality;
+	lf.lfPitchAndFamily = lplf->lfPitchAndFamily;
+
+	WideCharToMultiByte(CP_OEMCP, 0, lplf->lfFaceName, -1,
+			lf.lfFaceName, LF_FACESIZE, NULL, NULL);
+
+	static fpImmSetCompositionFontA pImmSetCompositionFontA =
+		(fpImmSetCompositionFontA) ::GetProcAddress(g_hImm32, "ImmSetCompositionFontA");
+	if (pImmSetCompositionFontA == NULL) {
+		SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+		return FALSE;
+	}
+	
+	return pImmSetCompositionFontA(hIMC, &lf);
+}
diff -uNr ck-0.9.20.org/kernel32.cpp ck-0.9.20/kernel32.cpp
--- ck-0.9.20.org/kernel32.cpp	1970-01-01 09:00:00.000000000 +0900
+++ ck-0.9.20/kernel32.cpp	2004-10-08 13:39:34.848083200 +0900
@@ -0,0 +1,80 @@
+/*
+ * kernel32.cpp		kernerl32.dll wrapper
+ */
+
+#undef UNICODE
+#undef _UNICODE
+
+#undef WINVER
+#define WINVER			(0x500)
+
+#undef _WIN32_WINNT
+#define _WIN32_WINNT		(0x500)
+
+
+#define _KERNEL32_
+#include <windows.h>
+
+#define IsWindows9x() 	(::GetVersion() >= 0x80000000)
+
+
+HMODULE g_hKernel32;
+
+BOOL LoadKernel32()
+{
+	if (!g_hKernel32) {
+		g_hKernel32 = ::GetModuleHandleA("kernel32.dll");
+	}
+	return TRUE;
+}
+
+
+
+typedef HWND (WINAPI *fpGetConsoleWindow)(VOID);
+
+
+WINBASEAPI
+HWND
+APIENTRY
+GetConsoleWindow(VOID)
+{
+	if (!LoadKernel32()) {
+		return NULL;
+	}
+	if (!IsWindows9x()) {
+		static fpGetConsoleWindow pGetConsoleWindow =
+			(fpGetConsoleWindow) ::GetProcAddress(g_hKernel32, "GetConsoleWindow");
+		if (pGetConsoleWindow == NULL) {
+			SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+			return NULL;
+		}
+		return pGetConsoleWindow();
+	}
+
+    // --- Windows 9x only ---
+
+	HWND hWnd;
+	char szOldText[256], szId[32], szTemp[32];
+	
+	::GetConsoleTitle(szOldText, sizeof(szOldText));
+	for (int i = 0; i < 10; i++) {
+		::wsprintf(szId, "GetConsoleWindow%08X", GetTickCount());
+		::SetConsoleTitle(szId);
+		do {
+			::Sleep(100);
+			::GetConsoleTitle(szTemp, sizeof(szTemp));
+		} while (lstrcmp(szId, szTemp));
+		
+	//	if (IsWindows9x()) {
+			hWnd = ::FindWindowEx(NULL, NULL, "tty", szId);
+	//	} else {
+	//		hWnd = ::FindWindowEx(NULL, NULL, "ConsoleWindowClass", szId);
+	//	}
+		if (hWnd != NULL) {
+			break;
+		}
+	}
+	::SetConsoleTitle(szOldText);
+	
+	return hWnd;
+}
diff -uNr ck-0.9.20.org/option.cpp ck-0.9.20/option.cpp
--- ck-0.9.20.org/option.cpp	2004-09-24 22:50:48.000000000 +0900
+++ ck-0.9.20/option.cpp	2004-10-10 00:34:36.031353600 +0900
@@ -901,10 +901,14 @@
 	m_winCharW = 80;
 	m_winCharH = 24;
 	m_isIconic = false;
-	m_font[0] = L"‚l‚r ƒSƒVƒbƒN";
-	m_font[1] = L"‚l‚r ƒSƒVƒbƒN";
-	m_font[2] = L"‚l‚r ƒSƒVƒbƒN";
-	m_font[3] = L"‚l‚r ƒSƒVƒbƒN";
+//	m_font[0] = L"‚l‚r ƒSƒVƒbƒN";
+//	m_font[1] = L"‚l‚r ƒSƒVƒbƒN";
+//	m_font[2] = L"‚l‚r ƒSƒVƒbƒN";
+//	m_font[3] = L"‚l‚r ƒSƒVƒbƒN";
+	m_font[0] = L"\xFF2D\xFF33\x0020\x30B4\x30B7\x30C3\x30AF";
+	m_font[1] = L"\xFF2D\xFF33\x0020\x30B4\x30B7\x30C3\x30AF";
+	m_font[2] = L"\xFF2D\xFF33\x0020\x30B4\x30B7\x30C3\x30AF";
+	m_font[3] = L"\xFF2D\xFF33\x0020\x30B4\x30B7\x30C3\x30AF";
 	m_fontSize[0] = 14;
 	m_fontSize[1] = 10;
 	m_fontSize[2] = 12;
diff -uNr ck-0.9.20.org/win_opa.cpp ck-0.9.20/win_opa.cpp
--- ck-0.9.20.org/win_opa.cpp	2004-09-24 22:51:30.000000000 +0900
+++ ck-0.9.20/win_opa.cpp	2004-10-02 22:13:48.000000000 +0900
@@ -96,6 +96,7 @@
 	DWORD		style = WS_OVERLAPPEDWINDOW | WS_VISIBLE;
 	DWORD		exstyle = WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES;
 	wmstring	title;
+	HWND		hWnd;
 
 	m_isVScrlHide = opt.isScrollHide();
 	m_isVScrlRight = opt.isScrollRight();
@@ -178,10 +179,11 @@
 	if(! RegisterClassEx(&wc))
 		return(false);
 
-	if(! CreateWindowEx(exstyle, className, title.c_str(), style,
+	if(! (hWnd = CreateWindowEx(exstyle, className, title.c_str(), style,
 			    m_place.x, m_place.y, m_place.w, m_place.h,
-			    NULL, NULL, hInstance, NULL))
+			    NULL, NULL, hInstance, NULL)))
 		return(false);
+	ShowWindow(hWnd, SW_SHOW);
 
 	return(true);
 }
diff -uNr ck-0.9.20.org/window.cpp ck-0.9.20/window.cpp
--- ck-0.9.20.org/window.cpp	2004-09-24 22:49:32.000000000 +0900
+++ ck-0.9.20/window.cpp	2004-10-02 22:20:08.000000000 +0900
@@ -141,6 +141,7 @@
 	WNDCLASSEX	wc;
 	DWORD		style = WS_OVERLAPPEDWINDOW | WS_VISIBLE;
 	DWORD		exstyle = WS_EX_LAYERED | WS_EX_ACCEPTFILES;
+	HWND		hWnd;
 
 	m_titleFg = opt.getTitleColorFg();
 	m_titleBg = opt.getTitleColorBg();
@@ -212,10 +213,11 @@
 	if(!m_hDC)
 		return(false);
 
-	if(! CreateWindowEx(exstyle, className, m_title.c_str(), style,
+	if(! (hWnd = CreateWindowEx(exstyle, className, m_title.c_str(), style,
 			    m_place.x, m_place.y, m_place.w, m_place.h,
-			    NULL, NULL, hInstance, NULL))
+			    NULL, NULL, hInstance, NULL)))
 		return(false);
+	ShowWindow(hWnd, SW_SHOW);
 
 	return(true);
 }
