[Bug 4526] New: Chinese display problem

Wine Bugs wine-bugs at winehq.org
Thu Feb 9 08:58:56 CST 2006


http://bugs.winehq.org/show_bug.cgi?id=4526

           Summary: Chinese display problem
           Product: Wine
           Version: 0.9.7.
          Platform: PC
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: P2
         Component: wine-binary
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: cnbiz850 at sohu.com


When running a Chinese program with Wine, quite likely the Chinese text are
messed up.  A patch posted at
http://www.easywine.org/bbs/viewthread.php?tid=529&extra=page%3D1 seems to have
solved it.  Please investigate.  The patch is pasted below.

-----------------------------------
--- wine-20050111/dlls/gdi/freetype.c   2005-01-06 01:12:07.000000000 +0800
+++ wine-20050111.gbhack/dlls/gdi/freetype.c    2005-01-15 18:30:32.481788272 +0
800
@@ -1677,7 +1677,22 @@
     if(!strcmpiW(lf.lfFaceName, SymbolW))
         lf.lfCharSet = SYMBOL_CHARSET;

-    if(!TranslateCharsetInfo((DWORD*)(INT)lf.lfCharSet, &csi, TCI_SRCCHARSET))
{
+    if( lf.lfCharSet == DEFAULT_CHARSET || lf.lfCharSet == ANSI_CHARSET)
+    {
+       int codepage = 936; /* I'm Chinese. Let me do something selfish. */
+       char *env_wdc = getenv("WINE_DEFAULT_CODEPAGE");
+       if (env_wdc != NULL)
+       {
+           codepage = atoi(env_wdc);
+       }
+       FIXME("Dirty hack. Default and ansi charset is translated to getenv(\"WI
NE_DEFAULT_CODEPAGE\")\n");
+       if(!TranslateCharsetInfo((DWORD*)(INT)codepage, &csi, TCI_SRCCODEPAGE))
{
+           FIXME("OMG. Even this dirty hack doesn't work.  Let's PRAY.\n");
+           csi.fs.fsCsb[0] = 0;
+       }
+       lf.lfCharSet = csi.ciCharset;
+    }
+    else if(!TranslateCharsetInfo((DWORD*)(INT)lf.lfCharSet, &csi,
TCI_SRCCHARSET)) {
         switch(lf.lfCharSet) {
        case DEFAULT_CHARSET:
            csi.fs.fsCsb[0] = 0;
@@ -1861,6 +1876,10 @@
         width = face->size.x_ppem >> 6;
         height = face->size.y_ppem >> 6;
     }
+
+    if (0 <= height && height <12) height =12;
+    else if ( 0 > height && height > -12) height = -12;
+
     ret->ft_face = OpenFontFile(ret, face->file, face->face_index, width, height);

     if (!ret->ft_face)

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list