wine 中文问题[ 完美解决 wine设置一步到位]
- ptpt52
- 帖子: 717
- 注册时间: 2008-07-27 8:51
- 系统: Ubuntu/Windows
- 来自: 广西玉林|广东深圳
- 联系:
- ptpt52
- 帖子: 717
- 注册时间: 2008-07-27 8:51
- 系统: Ubuntu/Windows
- 来自: 广西玉林|广东深圳
- 联系:
Re: wine 中文问题[ 完美解决 wine设置一步到位]
xrfang, 有个问题想问一下,你们patch修改的地方为什么会有效,原理是什么,我不太明白,你能不能跟我解释一下呢?
走过去了也便有了路
http://www.ptpt52.com/
http://www.ptpt52.com/
-
- 帖子: 5
- 注册时间: 2010-05-31 6:01
- adsl
- 帖子: 61
- 注册时间: 2010-04-05 16:43
- 来自: 山东临沂
- 联系:
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: wine 中文问题[ 完美解决 wine设置一步到位]
修改的什么地方,你一看patch文件就知道了。原理我只能比较肤浅的说一下,说老实话我也不知道怎么就不被官方所接受。Dan Kegel (WineTricks的作者,Wine项目的重量级人物)曾经回复过我在Wine Bug列表里面的提交,说这问题不是这么解的,因为Wine的目标是要尽量和Windows的行为保持一致云云,反正我也不完全明白。ptpt52 写了:xrfang, 有个问题想问一下,你们patch修改的地方为什么会有效,原理是什么,我不太明白,你能不能跟我解释一下呢?
至于这个问题,你如果看到口口这样的,其实中文已经没有问题了,只不过此程序所使用的字体中不包含中文(典型的就是飞狐中这块东西用的是System字体,在Windows下面System字体可能和宋体什么的联系了起来所以可以正确显示中文,而Wine则不行,幸亏飞狐可以更改字体)。而乱码则不同。有很多Windows程序会使用所谓的DEFAULT_CHARSET来显示,如果是windows下面没有问题的,而wine的话呢,就会把这个字符集映射到类似ISO-8859-1这样的西方语言的代码页上面。造成了无法显示。这也是你会看到同样一个程序,一部分中文显示正常,而有一部分就是乱码的原因。
技术细节请看原讨论贴,里面有高人可以解释这个问题的。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
- hasee.wu
- 帖子: 2089
- 注册时间: 2009-10-20 21:13
- 来自: Pacific Western University
Re: wine 中文问题[ 完美解决 wine设置一步到位]
为什么说这个patch是drity?希望有人能解释一下!
freetype.patch

代码: 全选
patch dlls/gdi32/freetype.c < freetype.patch
freetype.patch
代码: 全选
--- freetype.org 2008-10-13 10:00:00.250404261 +0800
+++ freetype.c 2008-10-13 10:01:57.347900632 +0800
@@ -3349,9 +3349,21 @@
if(!strcmpiW(lf.lfFaceName, SymbolW))
lf.lfCharSet = SYMBOL_CHARSET;
-
- if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
- switch(lf.lfCharSet) {
+
+ 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(\"WINE_DEFAULT_CODEPAGE\")\n");
+ if(!TranslateCharsetInfo((DWORD*)(INT_PTR)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_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) {
+ switch(lf.lfCharSet) {
case DEFAULT_CHARSET:
csi.fs.fsCsb[0] = 0;
break;
-
- 帖子: 310
- 注册时间: 2008-05-12 16:04
Re: wine 中文问题[ 完美解决 wine设置一步到位]
原说1.2会解决这个问题,现在wine1.2 RC了,尚未有进展
-
- 帖子: 310
- 注册时间: 2008-05-12 16:04
Re: wine 中文问题[ 完美解决 wine设置一步到位]
牛人们要多去http://bugs.winehq.org/show_bug.cgi?id=16325反馈才能解决问题
-
- 帖子: 29
- 注册时间: 2008-12-24 16:26
Re: wine 中文问题[ 完美解决 wine设置一步到位]
支持你了!!!终于好了!!
-
- 帖子: 4
- 注册时间: 2010-07-18 21:49
-
- 帖子: 4
- 注册时间: 2010-07-18 21:49
Re: wine 中文问题[ 完美解决 wine设置一步到位]
我用你的脚本设置后,中文问题解决了,但是当我把wine函数库中设置了gdiplus(我的程序不替换这个numricupdown空间显示不正常)用原版后就又出现部分显示为方块了
请问知道这种情况如何解决吗?
请问知道这种情况如何解决吗?
-
- 帖子: 33
- 注册时间: 2008-10-02 1:19
Re: wine 中文问题[ 完美解决 wine设置一步到位]
现在怎么没有gdi32.dll.so 解决方案了。
-
- 帖子: 212
- 注册时间: 2005-07-12 7:58
Re: wine 中文问题[ 完美解决 wine设置一步到位]
支持楼主,很好用!
- ReiFFEXzyx
- 帖子: 1045
- 注册时间: 2010-08-14 13:13
Re: wine 中文问题[ 完美解决 wine设置一步到位]
用了wine-cn后 lingoes就变得非常“卡”了... 郁闷...
- ReiFFEXzyx
- 帖子: 1045
- 注册时间: 2010-08-14 13:13
Re: wine 中文问题[ 完美解决 wine设置一步到位]
错怪wine-cn了 原来是wine从1.1.42升级1.2后 灵格斯就“卡”了...ReiFFEXzyx 写了:用了wine-cn后 lingoes就变得非常“卡”了... 郁闷...