--- qt-x11-free-3.0.3.orig/src/kernel/qpsprinter.cpp	Mon Mar 18 18:46:20 2002
+++ qt-x11-free-3.0.3/src/kernel/qpsprinter.cpp	Mon Apr  1 16:09:22 2002
@@ -4816,7 +4816,7 @@
             } else {
                 stream << " " << d->currentFont << "as F";
             }
-            int w = d->fm.width( out );
+            int w = d->fm.width( text );
             stream << "(" << out << ")" << w << " " << x << mdf << " T";
             if ( i < l ) {
                 stream << " ";
@@ -5230,10 +5230,26 @@
 		    //qDebug("didnt find font for %s", xfontname.latin1());
 		    p = new QPSPrinterFontNotFound( f );
 		}
-	    } else
-#endif
-		//qDebug("didnt find font for %s", xfontname.latin1());
-		p=new QPSPrinterFontNotFound( f ); break;
+	    } else { // If first character is not Hiragana or Katakana or Hangul or Han
+                QString name = QString::fromLatin1( QTextCodec::codecForLocale()->name() );
+                if ( name == "eucJP" || name == "JIS7" || name == "Shift-JIS" )
+                    p = new QPSPrinterFontJapanese( f );
+                else if ( name == "eucKR" )
+                    p = new QPSPrinterFontKorean( f );
+                else if ( name == "Big5" )
+                    p = new QPSPrinterFontTraditionalChinese( f );
+                else if ( name == "GBK" )
+                    p = new QPSPrinterFontSimplifiedChinese( f );
+                else {
+                    //qDebug("didnt find font for %s", xfontname.latin1());
+                    p = new QPSPrinterFontNotFound( f );
+                }
+            }
+            break;
+#else // QT_NO_TEXTCODEC
+            //qDebug("didnt find font for %s", xfontname.latin1());
+            p = new QPSPrinterFontNotFound( f ); break;
+#endif // QT_NO_TEXTCODEC
     }
     //qDebug("inserting %s int dict (%p)", xfontname.latin1(), p);
     priv->fonts.insert( xfontname, p );
