洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

Wine、Cedega、CrossOver 等配置
回复
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#16

帖子 xrfang » 2008-11-28 15:19

阅读代码的时候看到2个函数:GetACP()和GetOEMCP()。查了半天msdn也没有看出这两个函数的区别。我用google搜索了一下,很少有解释这个的。找到一个博客上面说:
GetACP 判断目前正在生效的ANSI代码页
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页
我不知道说的对不对,即使对,我还是不理解这两个函数的区别。请大家指教。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
tm0je
帖子: 88
注册时间: 2007-01-06 10:42

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#17

帖子 tm0je » 2008-11-30 8:45

斯待大师们完成这个通用,可自动识别语种的wine
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#18

帖子 xrfang » 2008-12-06 21:02

hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。

需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。

等有时间了我来提交一个补丁吧。
以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??

MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
hzhr
帖子: 16
注册时间: 2006-05-05 2:22

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#19

帖子 hzhr » 2008-12-06 22:49

看清楚点,是 GdiGetCodePage ,这个函数不是用来创建字体的。用ANSI_CHARSET创建字体返回1252是没有问题,问题是此时在中文环境下,GdiGetCodePage应该返回936
xrfang 写了:
hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。

需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。

等有时间了我来提交一个补丁吧。
以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??

MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#20

帖子 xrfang » 2008-12-07 10:33

GdiGetCodePage好像不是windows api。

我已经看到hzhr在wine-devel里面的发言了。谢谢大师指点。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
头像
gcell
帖子: 429
注册时间: 2007-04-30 2:25
来自: 湖南湘潭
联系:

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#21

帖子 gcell » 2008-12-10 1:00

果然都有这个通病,看到问题就想要解决!
楼主这招“指鹿为马”成功的引出了hzhr高人,期待尽快搞定,呵呵!
孰能浊静之以徐清,孰能安动之以馀生!
gcell -- http://gcell.blog.163.com/
头像
sfbi
帖子: 796
注册时间: 2007-09-06 11:41
来自: Bergen

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#22

帖子 sfbi » 2008-12-10 1:41

就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#23

帖子 xrfang » 2008-12-15 7:40

sfbi 写了:就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
下文有了。由一个韩国老兄发现了这个问题的核心。希望patch能够被官方接受。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
linxyz
帖子: 310
注册时间: 2008-05-12 16:04

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#24

帖子 linxyz » 2008-12-15 10:42

完整的patch在哪,我们先用。
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#25

帖子 xrfang » 2008-12-15 12:41

linxyz 写了:完整的patch在哪,我们先用。
谢谢你的热心。附件是这个韩国程序员提供的patch。但它是针对GIT的格式。我还不是很清楚如何使用。不过这里高人不少,希望大家实验并反馈。
附件
GdiGetCodepage_and_FontAssoc_and_FontLink.tar.gz
(5.79 KiB) 已下载 160 次
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
lifefx
帖子: 125
注册时间: 2008-11-29 1:20

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#26

帖子 lifefx » 2008-12-15 14:19

高手整理下用法,我负责测试。我对wine还是很关注的。
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#27

帖子 xrfang » 2008-12-15 15:24

这样patch:

1)最好是安装git并且下载wine的git仓库,见此:

http://wiki.winehq.org/GitWine

如果看不懂这个git,也可以直接下载wine1.1.10的源代码。但官方要求测试patch在git的最新代码上测试。

2)进入wine的本地目录,比如 ~/wine-git,执行如下命令

代码: 全选

wine-git $ patch -p1 < patch-file
patch file 就是我上面贴的包里面的一个个patch文件,对每个patch都执行一次上述命令。

3)编译安装wine

代码: 全选

wine-git $ ./configure --prefix=/usr/local/wine
wine-git $ make depend && make
wine-git $ sudo make install
我建议设定一个固定的根目录,上面是/usr/local/wine,这样目录结构有一点类似windows,没有包管理也可以干净的删除。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
头像
Shadow.net
帖子: 124
注册时间: 2007-03-11 19:17

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#28

帖子 Shadow.net » 2008-12-15 15:35

个人认为最好的解决方法就是在winecfg中增加code的相关选项……
archlinux+awesome+urxvt+zsh
lifefx
帖子: 125
注册时间: 2008-11-29 1:20

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#29

帖子 lifefx » 2008-12-15 16:00

呵呵,我很菜,看不太懂。只会安装那种操作。看来只有等1.1.11再测试了。
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进

#30

帖子 xrfang » 2008-12-15 16:33

Shadow.net 写了:个人认为最好的解决方法就是在winecfg中增加code的相关选项……
同意。等这个patch搞定,以后再说font-link的事情。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
回复