diff --git a/src/gui_kde_x11.cc b/src/gui_kde_x11.cc
index 6517cd2..4fe2eee 100644
--- a/src/gui_kde_x11.cc
+++ b/src/gui_kde_x11.cc
@@ -112,7 +112,7 @@
 		    i--;
 		    continue;
 		}
-	
+
 		if (strcmp(argv[i],"--servername")==0) {
 			argServerName = new QString(argv[i+1]); // to get the serverName now
 		}
@@ -182,7 +182,7 @@
 		) {
 			gui_argv[gui_argc++] = argv[i];
 		}
-	
+
 
 		//KDE/Qt options with one arg
 		if ( strcmp(argv[i],"--session")==0
@@ -211,7 +211,7 @@
 			gui_argv[gui_argc++] = argv[i+1];
 			found=2;
 		}
-	
+
 		//remove from the list of argv
 		if (found >= 1 && --*argc>i) {
 			mch_memmove(&argv[i], &argv[i + 1],
@@ -385,7 +385,7 @@
 #endif
 	if (startfont!=NULL)
 	    gui_mch_init_font((char_u*)startfont->latin1(),0);
-	
+
 	if (startsize!=NULL)
 	    vmw->resize(startsize->width(), startsize->height());
 
@@ -394,7 +394,7 @@
 	if (kapp->isRestored())
 	    if (KMainWindow::canBeRestored(1))
 		vmw->restore(1);
-	
+
 	vmw->show();
 #if QT_VERSION>=300
 	if (tip==2) KTipDialog::showTip (vmw,QString::null,true);
@@ -559,8 +559,9 @@
 {
 	QString fontname;
 	GuiFont font=NULL;
-	
-	if (font_name==NULL) {
+
+	if (font_name==NULL)
+	{
 #if 0
 #if QT_VERSION>=300
 		KConfig *base = KGlobal::config();
@@ -568,7 +569,7 @@
 		KConfigBase *base = KGlobal::config();
 #endif
 		base->setGroup("General");
-		if(!base->hasKey("fixed")) {
+		if (!base->hasKey("fixed")) {
 			KMessageBox::error(KApplication::kApplication()->mainWidget(),"Cannot load default fixed font\n\nConfigure fonts in KDE Control Center.\n(Just click 'Choose...', 'OK' and then 'Apply')");
 			return FAIL;
 		}
@@ -614,11 +615,20 @@
 	if (fontname.contains('*') && fontname.contains('-'))
 		return FAIL;
 
+	/* Compute the width of the character cell.  Some fonts include
+	 * double-width characters.  Use the width of ASCII characters to find
+	 * out if this is so. */
 	QFontMetrics f(*font);
-	gui.char_width  = f.maxWidth();
+	int width_max = 0;
+	for (char c = 32; c < 127; c++)
+	    if (width_max < f.width((QChar)c))
+		width_max = f.width((QChar)c);
+	if (width_max <= f.maxWidth() / 2)
+	    width_max = f.maxWidth() / 2;
+	gui.char_width  = width_max;
 	gui.char_height = f.height()+p_linespace;
-	gui.char_ascent = f.ascent()+p_linespace/2;
-	
+	gui.char_ascent = f.ascent()+p_linespace;
+
 	//check values, just to make sure and avoid a crash
 	if (gui.char_width<=0) gui.char_width=8;
 	if (gui.char_height<=0) gui.char_height=1;
@@ -778,7 +788,7 @@
 {
 	if (hide == gui.pointer_hidden) return;
 	//#ifdef FEAT_MOUSESHAPE
-	//	if( !hide) mch_set_mouse_shape(last_shape);
+	//	if (!hide) mch_set_mouse_shape(last_shape);
 	//#else
 # if (QT_VERSION<300)
 	gui.w->setCursor((hide)?BlankCursor:ArrowCursor);
@@ -1092,7 +1102,7 @@
 	long_u length;
 
 	clip_get_selection(cbd);
-	if(clip_convert_selection(&data,&length,cbd)<0) return;
+	if (clip_convert_selection(&data,&length,cbd)<0) return;
 
 	QString selection((const char *) data);
 	//We must turncate the string because it is not
@@ -1156,7 +1166,7 @@
 	if (gui.which_scrollbars[SBAR_LEFT]) width += gui.scrollbar_width;
 	if (gui.which_scrollbars[SBAR_RIGHT]) width += gui.scrollbar_width;
 	if (gui.which_scrollbars[SBAR_BOTTOM]) height += gui.scrollbar_height;
-	
+
 	if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
 #if QT_VERSION>=300
 		&& !vmw->menuBar()->isTopLevelMenu()
